Skip to content

Instantly share code, notes, and snippets.

@zviryatko
Created April 13, 2023 12:14
Show Gist options
  • Save zviryatko/58a9e85d614ae17a75d2e5fdf41fb5ac to your computer and use it in GitHub Desktop.
Save zviryatko/58a9e85d614ae17a75d2e5fdf41fb5ac to your computer and use it in GitHub Desktop.
Very simple NN with one layer
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import random"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.323105Z",
"end_time": "2023-04-13T15:09:46.656876Z"
}
}
},
{
"cell_type": "code",
"execution_count": 2,
"outputs": [],
"source": [
"# Initialize basic parameters: it is ok to initialize the weights and bias with random values\n",
"def initialize(dim):\n",
" b = random.random()\n",
" w = np.random.rand(dim)\n",
" return b, w"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.658811Z",
"end_time": "2023-04-13T15:09:46.660304Z"
}
}
},
{
"cell_type": "code",
"execution_count": 3,
"outputs": [],
"source": [
"# Forward propagation: we need to calculate the predicted values\n",
"def forward_propagation(X, b, w):\n",
" return np.dot(X, w) + b"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.661537Z",
"end_time": "2023-04-13T15:09:46.676848Z"
}
}
},
{
"cell_type": "code",
"execution_count": 4,
"outputs": [],
"source": [
"# Cost function: we need to calculate the cost function to see how far we are from the actual values\n",
"def cost_function(Y, Y_hat):\n",
" # return np.mean(np.square(Y - Y_hat))\n",
" Y_resd = Y - Y_hat\n",
" return np.sum(np.dot(Y_resd.T, Y_resd)) / len(Y - Y_resd)"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.677848Z",
"end_time": "2023-04-13T15:09:46.692673Z"
}
}
},
{
"cell_type": "code",
"execution_count": 5,
"outputs": [],
"source": [
"# Backward propagation: we need to calculate the gradients of the cost function\n",
"def backward_propagation(X, Y, Y_hat, b, W, learning_rate):\n",
" Y_resd = Y_hat - Y\n",
" db = (np.sum(Y_resd) * 2) / len(Y)\n",
" dw = (np.dot(Y_resd, X) * 2) / len(Y)\n",
" b_new = b - learning_rate * db\n",
" W_new = W - learning_rate * dw\n",
" return b_new, W_new"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.695516Z",
"end_time": "2023-04-13T15:09:46.739317Z"
}
}
},
{
"cell_type": "code",
"execution_count": 6,
"outputs": [],
"source": [
"# Training the model: we need to train the model to get the best weights and bias\n",
"def gradient_descent(X, Y, learning_rate, iterations):\n",
" b, W = initialize(X.shape[1])\n",
" iter_num = 0\n",
" gd_iterations_df = pd.DataFrame(columns=[\"Iteration\", \"Cost\"])\n",
" for each_iter in range(iterations):\n",
" Y_hat = forward_propagation(X, b, W)\n",
" cost = cost_function(Y, Y_hat)\n",
" b, W = backward_propagation(X, Y, Y_hat, b, W, learning_rate)\n",
" if iter_num % 10 == 0:\n",
" gd_iterations_df.loc[iter_num] = [iter_num, cost]\n",
" iter_num += 1\n",
" return b, W, gd_iterations_df"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.739186Z",
"end_time": "2023-04-13T15:09:46.739639Z"
}
}
},
{
"cell_type": "code",
"execution_count": 7,
"outputs": [],
"source": [
"# Predicting the values\n",
"def predict(X, b, W):\n",
" return np.dot(X, W) + b"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.739484Z",
"end_time": "2023-04-13T15:09:46.783206Z"
}
}
},
{
"cell_type": "code",
"execution_count": 8,
"outputs": [],
"source": [
"def normalize(X, Y):\n",
" Yn = np.array((Y - Y.mean()) / Y.std())\n",
" Xn = X.apply(lambda rec: (rec - rec.mean()) / rec.std(), axis=0)\n",
" return Xn, Yn"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.783123Z",
"end_time": "2023-04-13T15:09:46.783429Z"
}
}
},
{
"cell_type": "code",
"execution_count": 9,
"outputs": [],
"source": [
"def denormalize(X, Y, b, W):\n",
" W = W * Y.std() / X.std()\n",
" b = b * Y.std() + Y.mean() - np.dot(W, X.mean())\n",
" return b, W"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.783330Z",
"end_time": "2023-04-13T15:09:46.783546Z"
}
}
},
{
"cell_type": "code",
"execution_count": 10,
"outputs": [
{
"data": {
"text/plain": "<Figure size 640x480 with 1 Axes>",
"image/png": "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eVg06Bn2cHjARWWBjARPCJ5h+EFNYh776y3gyJ303XRd5/nnn+cf//gHX/jCF+jo6CA3N5ff//73gXLLfffdh9/v5/e//30gsL377rspKipiw4YNXHDBBfz85z/n9ttv54orrgDgt7/9Lf/4xz/Gfdw9e/bw8MMPs379es4//3wA5syZE7jdLNFUVFQERKIul4sf/OAHPPfcc6xevTpwn5dffpnf/e53nH322dx5553MnTuXn/70pwAsXLiQ7du386Mf/WjSfxtBOBZmp0ttUTb1JTkANErmQ5Va7r//fv7yl7+Qn59PW1sbAIWFhWRnZ7N//37uv/9+PvjBD1JaWsq2bdv48pe/zFlnncXy5ctj8gsIU8fv1+keChecAmTZrcwpz2Pf4UHea+2X4EM4Jk899RR5eXl4PB78fj8f//jH+fa3v81NN93EsmXLwnQe77zzDvv27SM/Pz/sHKOjo+zfv5++vj5aW1sDWVMAm83GSSeddETpxWTr1q1YrVbOPvvsCa953759DA8P84EPfCBsv9vtZuXKlQC89957YesAAoGKIEQbM/NRW5RDXbHKzknmA7jzzjsBVWsN5e6772bdunU4HA6ee+45fv7znzM0NER9fT1XXnkl//7v/x61BQvRo2fYjd94Ly/JDRcBLqrKZ9/hQXa1DbBmYUUCVidgz1EZiEQ99iQ455xzuPPOO3E4HNTU1GCzBd9acnPDMyiDg4OceOKJ/OlPfzriPOXl5VNarllGmQyDg4MA/O1vf6O2tjbsNikFC4nAbK2tLc6mvjgnbF+6Memyy9Gor69n48aN01qQED/MkktRjh27NVx7vLi6gKe2tcqMl0SiaVMqfSSC3Nxc5s2bN6FjTzjhBB566CEqKiooKIis4q+uruaNN94I+Ad5vV42bdrECSecEPH4ZcuW4ff72bhxY6DsEoqZefH5gsZ5S5Yswel00tDQMG7GZPHixTz55JNh+15//fVj/5KCMAXMzEddUTb1JSqgbuoeTkvtncx2yWDGenyEslhmvAgx4tprr6WsrIxLL72Ul156iQMHDrBhwwa++MUv0tTUBMCXvvQlfvjDH/LEE0+wa9cuPv/5zx/Vo2PWrFlcf/31fPrTn+aJJ54InPPhhx8GYObMmWiaxlNPPUVHRweDg4Pk5+dz22238eUvf5l7772X/fv3s3nzZn71q19x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"
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Bias: \n",
"2.892621501477482\n",
"Weights: \n",
"TV 0.045817\n",
"radio 0.193195\n",
"newspaper -0.004847\n",
"dtype: float64\n"
]
}
],
"source": [
"# Train the model\n",
"train_data = pd.read_csv(\"adv/Advertising.csv\")\n",
"# Normalizing the data: we need to use standard deviation to avoid huge differences in the data min/max values\n",
"X = train_data[[\"TV\", \"radio\", \"newspaper\"]]\n",
"Y = train_data[\"sales\"].to_numpy()\n",
"Xn, Yn = normalize(X, Y)\n",
"b, W, gd_iterations_df = gradient_descent(Xn, Yn, 0.01, 200)\n",
"b, W = denormalize(X, Y, b, W)\n",
"\n",
"# Test the model\n",
"test_data = pd.read_csv(\"adv/testing.csv\")\n",
"test = test_data[[\"TV\", \"radio\", \"newspaper\"]]\n",
"expected = test_data[\"sales\"].to_numpy()\n",
"# Xtn = normalize(test)\n",
"\n",
"# Predict the values\n",
"predicted = predict(test, b, W)\n",
"# De-normalize the data\n",
"# Compare results with expected values\n",
"results_df = pd.DataFrame({\"Expected\": expected, \"Predicted\": predicted})\n",
"# Plot comparison results and expected values\n",
"plt.plot(results_df[\"Expected\"], label=\"Expected\")\n",
"plt.plot(results_df[\"Predicted\"], label=\"Predicted\")\n",
"plt.legend()\n",
"plt.show()\n",
"print(\"Bias: \", b, \"Weights: \", W, sep=\"\\n\")"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.783415Z",
"end_time": "2023-04-13T15:09:46.952619Z"
}
}
},
{
"cell_type": "code",
"execution_count": 11,
"outputs": [
{
"data": {
"text/plain": "0.9295369916479168"
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Show the accuracy of the model\n",
"from sklearn.metrics import r2_score\n",
"r2_score(expected, predicted)"
],
"metadata": {
"collapsed": false,
"ExecuteTime": {
"start_time": "2023-04-13T15:09:46.950642Z",
"end_time": "2023-04-13T15:09:47.124987Z"
}
}
},
{
"cell_type": "code",
"execution_count": null,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment