From acd61766d73543443cbe5e7c16d568895da5fef7 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 15:31:27 +0800 Subject: [PATCH 01/17] Create settings.json --- .vscode/settings.json | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..375f4e1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.pythonPath": "C:\\Users\\Petrichor\\anaconda3\\python.exe" +} \ No newline at end of file From 9b231e4166e2056154846ff1b35e86bacd0bd1ee Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 17:31:36 +0800 Subject: [PATCH 02/17] For better comprehension All the Operations I did to code for my own understanding. --- Code/Day 1_Data_Preprocessing.ipynb | 81 +++++++++++++---------------- 1 file changed, 37 insertions(+), 44 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index 9f26c9c..d19db6a 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -37,27 +37,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 7, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Step 2: Importing dataset\n", - "X\n", - "[['France' 44.0 72000.0]\n", - " ['Spain' 27.0 48000.0]\n", - " ['Germany' 30.0 54000.0]\n", - " ['Spain' 38.0 61000.0]\n", - " ['Germany' 40.0 nan]\n", - " ['France' 35.0 58000.0]\n", - " ['Spain' nan 52000.0]\n", - " ['France' 48.0 79000.0]\n", - " ['Germany' 50.0 83000.0]\n", - " ['France' 37.0 67000.0]]\n", - "Y\n", - "['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" + "Step 2: Importing dataset\nX\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 nan]\n ['France' 35.0 58000.0]\n ['Spain' nan 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\nY\n['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" ] } ], @@ -84,38 +71,40 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 17, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 3: Handling the missing data\n", - "step2\n", - "X\n", - "[['France' 44.0 72000.0]\n", - " ['Spain' 27.0 48000.0]\n", - " ['Germany' 30.0 54000.0]\n", - " ['Spain' 38.0 61000.0]\n", - " ['Germany' 40.0 63777.77777777778]\n", - " ['France' 35.0 58000.0]\n", - " ['Spain' 38.77777777777778 52000.0]\n", - " ['France' 48.0 79000.0]\n", - " ['Germany' 50.0 83000.0]\n", - " ['France' 37.0 67000.0]]\n" + "[[44.0 72000.0]\n [27.0 48000.0]\n [30.0 54000.0]\n [38.0 61000.0]]\n" + ] + }, + { + "output_type": "error", + "ename": "ValueError", + "evalue": "'X' and 'missing_values' types are expected to be both numerical. Got X.dtype=float64 and type(missing_values)=.", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;31m#imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m4\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mimputer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimputer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m4\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m \u001b[1;33m:\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimputer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtransform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m \u001b[1;33m:\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"---------------------\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\sklearn\\impute\\_base.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y)\u001b[0m\n\u001b[0;32m 275\u001b[0m \u001b[0mself\u001b[0m \u001b[1;33m:\u001b[0m \u001b[0mSimpleImputer\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 276\u001b[0m \"\"\"\n\u001b[1;32m--> 277\u001b[1;33m \u001b[0mX\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_validate_input\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0min_fit\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 278\u001b[0m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_fit_indicator\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 279\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\sklearn\\impute\\_base.py\u001b[0m in \u001b[0;36m_validate_input\u001b[1;34m(self, X, in_fit)\u001b[0m\n\u001b[0;32m 251\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mve\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 252\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 253\u001b[1;33m \u001b[0m_check_inputs_dtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmissing_values\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 254\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkind\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m\"i\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"u\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"f\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"O\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 255\u001b[0m raise ValueError(\"SimpleImputer does not support data with dtype \"\n", + "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\sklearn\\impute\\_base.py\u001b[0m in \u001b[0;36m_check_inputs_dtype\u001b[1;34m(X, missing_values)\u001b[0m\n\u001b[0;32m 23\u001b[0m if (X.dtype.kind in (\"f\", \"i\", \"u\") and\n\u001b[0;32m 24\u001b[0m not isinstance(missing_values, numbers.Real)):\n\u001b[1;32m---> 25\u001b[1;33m raise ValueError(\"'X' and 'missing_values' types are expected to be\"\n\u001b[0m\u001b[0;32m 26\u001b[0m \u001b[1;34m\" both numerical. Got X.dtype={} and \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 27\u001b[0m \u001b[1;34m\" type(missing_values)={}.\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mValueError\u001b[0m: 'X' and 'missing_values' types are expected to be both numerical. Got X.dtype=float64 and type(missing_values)=." ] } ], "source": [ - "# If you use the newest version of sklearn, use the lines of code commented out", - "# from sklearn.impute import SimpleImputer", - "# imputer = SimpleImputer(missing_values=\"NaN\", strategy=\"mean\")", - "from sklearn.preprocessing import Imputer\n", + "# If you use the newest version of sklearn, use the lines of code commented out\n", + "from sklearn.impute import SimpleImputer\n", + "imputer = SimpleImputer(missing_values=np.nan, strategy=\"mean\")\n", + "#from sklearn.preprocessing import Imputer\n", "# axis=0表示按列进行\n", - "imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", - "imputer = imputer.fit(X[ : , 1:3])\n", + "#imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", + "print(X[ 0:4 , 1:3])\n", + "imputer = imputer.fit(X[ 0:4 , 1:3])\n", "X[ : , 1:3] = imputer.transform(X[ : , 1:3])\n", "print(\"---------------------\")\n", "print(\"Step 3: Handling the missing data\")\n", @@ -315,9 +304,13 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" + "name": "python3", + "display_name": "Python 3.8.3 64-bit (conda)", + "metadata": { + "interpreter": { + "hash": "1b78ff499ec469310b6a6795c4effbbfc85eb20a6ba0cf828a15721670711b2c" + } + } }, "language_info": { "codemirror_mode": { @@ -329,9 +322,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.8.3-final" } }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file From d4ec8ddb9957e101c29a9639ce8b689aac46a585 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 17:34:20 +0800 Subject: [PATCH 03/17] Update Day 1_Data_Preprocessing.ipynb --- Code/Day 1_Data_Preprocessing.ipynb | 50 +++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 3 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index d19db6a..7ebf597 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -19,7 +19,11 @@ }, { "cell_type": "code", +<<<<<<< Updated upstream "execution_count": 4, +======= + "execution_count": 2, +>>>>>>> Stashed changes "metadata": {}, "outputs": [], "source": [ @@ -37,15 +41,44 @@ }, { "cell_type": "code", +<<<<<<< Updated upstream "execution_count": 7, +======= + "execution_count": 6, +>>>>>>> Stashed changes "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ +<<<<<<< Updated upstream "Step 2: Importing dataset\nX\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 nan]\n ['France' 35.0 58000.0]\n ['Spain' nan 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\nY\n['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" +======= + "Step 2: Importing dataset\nX:\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 nan]\n ['France' 35.0 58000.0]\n ['Spain' nan 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\nY:\n['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" +>>>>>>> Stashed changes ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Country Age Salary Purchased\n", + "0 France 44.0 72000.0 No\n", + "1 Spain 27.0 48000.0 Yes\n", + "2 Germany 30.0 54000.0 No\n", + "3 Spain 38.0 61000.0 No\n", + "4 Germany 40.0 NaN Yes\n", + "5 France 35.0 58000.0 Yes\n", + "6 Spain NaN 52000.0 No\n", + "7 France 48.0 79000.0 Yes\n", + "8 Germany 50.0 83000.0 No\n", + "9 France 37.0 67000.0 Yes" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
CountryAgeSalaryPurchased
0France44.072000.0No
1Spain27.048000.0Yes
2Germany30.054000.0No
3Spain38.061000.0No
4Germany40.0NaNYes
5France35.058000.0Yes
6SpainNaN52000.0No
7France48.079000.0Yes
8Germany50.083000.0No
9France37.067000.0Yes
\n
" + }, + "metadata": {}, + "execution_count": 6 } ], "source": [ @@ -55,10 +88,11 @@ "#取最后一列\n", "Y = dataset.iloc[ : , 3].values\n", "print(\"Step 2: Importing dataset\")\n", - "print(\"X\")\n", + "print(\"X:\")\n", "print(X)\n", - "print(\"Y\")\n", - "print(Y)" + "print(\"Y:\")\n", + "print(Y)\n", + "dataset.head(100)" ] }, { @@ -98,6 +132,7 @@ ], "source": [ "# If you use the newest version of sklearn, use the lines of code commented out\n", +<<<<<<< Updated upstream "from sklearn.impute import SimpleImputer\n", "imputer = SimpleImputer(missing_values=np.nan, strategy=\"mean\")\n", "#from sklearn.preprocessing import Imputer\n", @@ -105,6 +140,15 @@ "#imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", "print(X[ 0:4 , 1:3])\n", "imputer = imputer.fit(X[ 0:4 , 1:3])\n", +======= + "# from sklearn.impute import SimpleImputer\n", + "# imputer = SimpleImputer(missing_values=\"NaN\", strategy=\"mean\")\n", + "from sklearn.preprocessing import Imputer\n", + "# axis=0表示按列进行\n", + "imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", + "print(imputer)\n", + "imputer = imputer.fit(X[ : , 1:3])\n", +>>>>>>> Stashed changes "X[ : , 1:3] = imputer.transform(X[ : , 1:3])\n", "print(\"---------------------\")\n", "print(\"Step 3: Handling the missing data\")\n", From 85b143e2d62571cf48ec05eb471cb5e309a61aa7 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 17:47:06 +0800 Subject: [PATCH 04/17] Update Day 1_Data_Preprocessing.ipynb --- Code/Day 1_Data_Preprocessing.ipynb | 210 ++++++++++++---------------- 1 file changed, 90 insertions(+), 120 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index 9f26c9c..ee873ee 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -19,7 +19,55 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 36, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[ 7. 2. 3. ]\n [ 4. 3.5 6. ]\n [10. 3.5 9. ]]\nSklearn verion is 0.23.1\n" + ] + } + ], + "source": [ + "import sklearn\n", + "from sklearn.impute import SimpleImputer\n", + "#This block is an example used to learn SimpleImputer\n", + "imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')\n", + "imp_mean.fit([[7, 2, 3], [4, np.nan, 6], [10, 5, 9]])\n", + "X = [[np.nan, 2, 3], [4, np.nan, 6], [10, np.nan, 9]]\n", + "print(imp_mean.transform(X))\n", + "print(\"Sklearn verion is {}\".format(sklearn.__version__))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import OneHotEncoder\n", + "enc = OneHotEncoder(handle_unknown='ignore')\n", + "X = [['Male', 1], ['Female', 3], ['Female', 2]]\n", + ">>> enc.fit(X)\n", + "OneHotEncoder(handle_unknown='ignore')\n", + ">>> enc.categories_\n", + "[array(['Female', 'Male'], dtype=object), array([1, 2, 3], dtype=object)]\n", + ">>> enc.transform([['Female', 1], ['Male', 4]]).toarray()\n", + "array([[1., 0., 1., 0., 0.],\n", + " [0., 1., 0., 0., 0.]])\n", + ">>> enc.inverse_transform([[0, 1, 1, 0, 0], [0, 0, 0, 1, 0]])\n", + "array([['Male', 1],\n", + " [None, 2]], dtype=object)\n", + ">>> enc.get_feature_names(['gender', 'group'])\n", + "array(['gender_Female', 'gender_Male', 'group_1', 'group_2', 'group_3'],\n", + " dtype=object)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, "metadata": {}, "outputs": [], "source": [ @@ -37,27 +85,14 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 57, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Step 2: Importing dataset\n", - "X\n", - "[['France' 44.0 72000.0]\n", - " ['Spain' 27.0 48000.0]\n", - " ['Germany' 30.0 54000.0]\n", - " ['Spain' 38.0 61000.0]\n", - " ['Germany' 40.0 nan]\n", - " ['France' 35.0 58000.0]\n", - " ['Spain' nan 52000.0]\n", - " ['France' 48.0 79000.0]\n", - " ['Germany' 50.0 83000.0]\n", - " ['France' 37.0 67000.0]]\n", - "Y\n", - "['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" + "Step 2: Importing dataset\nX\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 nan]\n ['France' 35.0 58000.0]\n ['Spain' nan 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\nY\n['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n[[44.0 72000.0]\n [27.0 48000.0]\n [30.0 54000.0]\n [38.0 61000.0]\n [40.0 nan]\n [35.0 58000.0]\n [nan 52000.0]\n [48.0 79000.0]\n [50.0 83000.0]\n [37.0 67000.0]]\n" ] } ], @@ -71,7 +106,8 @@ "print(\"X\")\n", "print(X)\n", "print(\"Y\")\n", - "print(Y)" + "print(Y)\n", + "print(X[ : , 1:3])" ] }, { @@ -84,39 +120,30 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 58, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 3: Handling the missing data\n", - "step2\n", - "X\n", - "[['France' 44.0 72000.0]\n", - " ['Spain' 27.0 48000.0]\n", - " ['Germany' 30.0 54000.0]\n", - " ['Spain' 38.0 61000.0]\n", - " ['Germany' 40.0 63777.77777777778]\n", - " ['France' 35.0 58000.0]\n", - " ['Spain' 38.77777777777778 52000.0]\n", - " ['France' 48.0 79000.0]\n", - " ['Germany' 50.0 83000.0]\n", - " ['France' 37.0 67000.0]]\n" + "---------------------\nStep 3: Handling the missing data\nstep2\nX\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 63777.77777777778]\n ['France' 35.0 58000.0]\n ['Spain' 38.77777777777778 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\n" ] } ], "source": [ - "# If you use the newest version of sklearn, use the lines of code commented out", - "# from sklearn.impute import SimpleImputer", - "# imputer = SimpleImputer(missing_values=\"NaN\", strategy=\"mean\")", - "from sklearn.preprocessing import Imputer\n", + "# If you use the newest version of sklearn, use the lines of code commented out\n", + "from sklearn.impute import SimpleImputer\n", + "imputer = SimpleImputer(missing_values=np.nan, strategy=\"mean\")\n", + "#from sklearn.preprocessing import Imputer\n", "# axis=0表示按列进行\n", - "imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", - "imputer = imputer.fit(X[ : , 1:3])\n", - "X[ : , 1:3] = imputer.transform(X[ : , 1:3])\n", + "#imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", + "#print(imputer)\n", + "#\n", + "# print(X[ : , 1:3])\n", + "imputer = imputer.fit(X[ : , 1:3]) #put the data we want to process in to this imputer\n", + "X[ : , 1:3] = imputer.transform(X[ : , 1:3]) #replace the np.nan with mean\n", + "#print(X[ : , 1:3])\n", "print(\"---------------------\")\n", "print(\"Step 3: Handling the missing data\")\n", "print(\"step2\")\n", @@ -134,47 +161,26 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 59, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 4: Encoding categorical data\n", - "X\n", - "[[1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01\n", - " 7.20000000e+04]\n", - " [0.00000000e+00 0.00000000e+00 1.00000000e+00 2.70000000e+01\n", - " 4.80000000e+04]\n", - " [0.00000000e+00 1.00000000e+00 0.00000000e+00 3.00000000e+01\n", - " 5.40000000e+04]\n", - " [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.80000000e+01\n", - " 6.10000000e+04]\n", - " [0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+01\n", - " 6.37777778e+04]\n", - " [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.50000000e+01\n", - " 5.80000000e+04]\n", - " [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.87777778e+01\n", - " 5.20000000e+04]\n", - " [1.00000000e+00 0.00000000e+00 0.00000000e+00 4.80000000e+01\n", - " 7.90000000e+04]\n", - " [0.00000000e+00 1.00000000e+00 0.00000000e+00 5.00000000e+01\n", - " 8.30000000e+04]\n", - " [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.70000000e+01\n", - " 6.70000000e+04]]\n", - "Y\n", - "[0 1 0 0 1 1 0 1 0 1]\n" + "['France' 'Spain' 'Germany' 'Spain' 'Germany' 'France' 'Spain' 'France'\n 'Germany' 'France']\n[0 2 1 2 1 0 2 0 1 0]\n[[0 44.0 72000.0]\n [2 27.0 48000.0]\n [1 30.0 54000.0]\n [2 38.0 61000.0]\n [1 40.0 63777.77777777778]\n [0 35.0 58000.0]\n [2 38.77777777777778 52000.0]\n [0 48.0 79000.0]\n [1 50.0 83000.0]\n [0 37.0 67000.0]]\n---------------------\nStep 4: Encoding categorical data\nX\n[[1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n [0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n [0. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n [0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n [0. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n [1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]\n [0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n [1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]\n [0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]\n [1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]]\nY\n[0 1 0 0 1 1 0 1 0 1]\n" ] } ], "source": [ "from sklearn.preprocessing import LabelEncoder, OneHotEncoder\n", "labelencoder_X = LabelEncoder()\n", + "print(X[ : , 0])\n", "X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])\n", + "print(X[ : , 0])\n", "#Creating a dummy variable\n", - "onehotencoder = OneHotEncoder(categorical_features = [0])\n", + "onehotencoder = OneHotEncoder('auto')\n", + "print(X)\n", "X = onehotencoder.fit_transform(X).toarray()\n", "labelencoder_Y = LabelEncoder()\n", "Y = labelencoder_Y.fit_transform(Y)\n", @@ -196,41 +202,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 60, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 5: Splitting the datasets into training sets and Test sets\n", - "X_train\n", - "[[ 0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+01\n", - " 6.37777778e+04]\n", - " [ 1.00000000e+00 0.00000000e+00 0.00000000e+00 3.70000000e+01\n", - " 6.70000000e+04]\n", - " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00 2.70000000e+01\n", - " 4.80000000e+04]\n", - " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00 3.87777778e+01\n", - " 5.20000000e+04]\n", - " [ 1.00000000e+00 0.00000000e+00 0.00000000e+00 4.80000000e+01\n", - " 7.90000000e+04]\n", - " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00 3.80000000e+01\n", - " 6.10000000e+04]\n", - " [ 1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01\n", - " 7.20000000e+04]\n", - " [ 1.00000000e+00 0.00000000e+00 0.00000000e+00 3.50000000e+01\n", - " 5.80000000e+04]]\n", - "X_test\n", - "[[ 0.00000000e+00 1.00000000e+00 0.00000000e+00 3.00000000e+01\n", - " 5.40000000e+04]\n", - " [ 0.00000000e+00 1.00000000e+00 0.00000000e+00 5.00000000e+01\n", - " 8.30000000e+04]]\n", - "Y_train\n", - "[1 1 1 0 1 0 0 1]\n", - "Y_test\n", - "[0 0]\n" + "---------------------\nStep 5: Splitting the datasets into training sets and Test sets\nX_train\n[[0. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0.]\n [1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.]\n [0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]\n [0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.]\n [1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.]\n [0. 0. 1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0.]\n [1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n [1. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]]\nX_test\n[[0. 1. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.]\n [0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]]\nY_train\n[1 1 1 0 1 0 0 1]\nY_test\n[0 0]\n" ] } ], @@ -259,27 +238,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 44, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 6: Feature Scaling\n", - "X_train\n", - "[[-1. 2.64575131 -0.77459667 0.26306757 0.12381479]\n", - " [ 1. -0.37796447 -0.77459667 -0.25350148 0.46175632]\n", - " [-1. -0.37796447 1.29099445 -1.97539832 -1.53093341]\n", - " [-1. -0.37796447 1.29099445 0.05261351 -1.11141978]\n", - " [ 1. -0.37796447 -0.77459667 1.64058505 1.7202972 ]\n", - " [-1. -0.37796447 1.29099445 -0.0813118 -0.16751412]\n", - " [ 1. -0.37796447 -0.77459667 0.95182631 0.98614835]\n", - " [ 1. -0.37796447 -0.77459667 -0.59788085 -0.48214934]]\n", - "X_test\n", - "[[ 0. 0. 0. -1. -1.]\n", - " [ 0. 0. 0. 1. 1.]]\n" + "---------------------\nStep 6: Feature Scaling\nX_train\n[[-1. 2.64575131 -0.77459667 -0.37796447 0. -0.37796447\n -0.37796447 -0.37796447 -0.37796447 2.64575131 -0.37796447 -0.37796447\n 0. -0.37796447 -0.37796447 0. -0.37796447 -0.37796447\n 2.64575131 -0.37796447 -0.37796447 -0.37796447 0. ]\n [ 1. -0.37796447 -0.77459667 -0.37796447 0. -0.37796447\n 2.64575131 -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447\n 0. -0.37796447 -0.37796447 0. -0.37796447 -0.37796447\n -0.37796447 2.64575131 -0.37796447 -0.37796447 0. ]\n [-1. -0.37796447 1.29099445 2.64575131 0. -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447\n 0. 2.64575131 -0.37796447 0. -0.37796447 -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 0. ]\n [-1. -0.37796447 1.29099445 -0.37796447 0. -0.37796447\n -0.37796447 -0.37796447 2.64575131 -0.37796447 -0.37796447 -0.37796447\n 0. -0.37796447 2.64575131 0. -0.37796447 -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 0. ]\n [ 1. -0.37796447 -0.77459667 -0.37796447 0. -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447 2.64575131\n 0. -0.37796447 -0.37796447 0. -0.37796447 -0.37796447\n -0.37796447 -0.37796447 -0.37796447 2.64575131 0. ]\n [-1. -0.37796447 1.29099445 -0.37796447 0. -0.37796447\n -0.37796447 2.64575131 -0.37796447 -0.37796447 -0.37796447 -0.37796447\n 0. -0.37796447 -0.37796447 0. -0.37796447 2.64575131\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 0. ]\n [ 1. -0.37796447 -0.77459667 -0.37796447 0. -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 2.64575131 -0.37796447\n 0. -0.37796447 -0.37796447 0. -0.37796447 -0.37796447\n -0.37796447 -0.37796447 2.64575131 -0.37796447 0. ]\n [ 1. -0.37796447 -0.77459667 -0.37796447 0. 2.64575131\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447\n 0. -0.37796447 -0.37796447 0. 2.64575131 -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 0. ]]\nX_test\n[[-1. 2.64575131 -0.77459667 -0.37796447 1. -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447\n 0. -0.37796447 -0.37796447 1. -0.37796447 -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 0. ]\n [-1. 2.64575131 -0.77459667 -0.37796447 0. -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447 -0.37796447\n 1. -0.37796447 -0.37796447 0. -0.37796447 -0.37796447\n -0.37796447 -0.37796447 -0.37796447 -0.37796447 1. ]]\n" ] } ], @@ -315,9 +281,13 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" + "name": "python3", + "display_name": "Python 3.8.3 64-bit (conda)", + "metadata": { + "interpreter": { + "hash": "1b78ff499ec469310b6a6795c4effbbfc85eb20a6ba0cf828a15721670711b2c" + } + } }, "language_info": { "codemirror_mode": { @@ -329,9 +299,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.8.3-final" } }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file From e04a0a275034e56d8d1a7cedf4085225e9054fb3 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 17:59:41 +0800 Subject: [PATCH 05/17] Revert "Create settings.json" This reverts commit acd61766d73543443cbe5e7c16d568895da5fef7. --- .vscode/settings.json | 3 --- 1 file changed, 3 deletions(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 375f4e1..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "python.pythonPath": "C:\\Users\\Petrichor\\anaconda3\\python.exe" -} \ No newline at end of file From 45df242f6a8dac2257b908260b60f0981801568a Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 18:04:24 +0800 Subject: [PATCH 06/17] Revert "Update Day 1_Data_Preprocessing.ipynb" This reverts commit d4ec8ddb9957e101c29a9639ce8b689aac46a585. --- Code/Day 1_Data_Preprocessing.ipynb | 50 ++--------------------------- 1 file changed, 3 insertions(+), 47 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index 7ebf597..d19db6a 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -19,11 +19,7 @@ }, { "cell_type": "code", -<<<<<<< Updated upstream "execution_count": 4, -======= - "execution_count": 2, ->>>>>>> Stashed changes "metadata": {}, "outputs": [], "source": [ @@ -41,44 +37,15 @@ }, { "cell_type": "code", -<<<<<<< Updated upstream "execution_count": 7, -======= - "execution_count": 6, ->>>>>>> Stashed changes "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ -<<<<<<< Updated upstream "Step 2: Importing dataset\nX\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 nan]\n ['France' 35.0 58000.0]\n ['Spain' nan 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\nY\n['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" -======= - "Step 2: Importing dataset\nX:\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 nan]\n ['France' 35.0 58000.0]\n ['Spain' nan 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\nY:\n['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" ->>>>>>> Stashed changes ] - }, - { - "output_type": "execute_result", - "data": { - "text/plain": [ - " Country Age Salary Purchased\n", - "0 France 44.0 72000.0 No\n", - "1 Spain 27.0 48000.0 Yes\n", - "2 Germany 30.0 54000.0 No\n", - "3 Spain 38.0 61000.0 No\n", - "4 Germany 40.0 NaN Yes\n", - "5 France 35.0 58000.0 Yes\n", - "6 Spain NaN 52000.0 No\n", - "7 France 48.0 79000.0 Yes\n", - "8 Germany 50.0 83000.0 No\n", - "9 France 37.0 67000.0 Yes" - ], - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
CountryAgeSalaryPurchased
0France44.072000.0No
1Spain27.048000.0Yes
2Germany30.054000.0No
3Spain38.061000.0No
4Germany40.0NaNYes
5France35.058000.0Yes
6SpainNaN52000.0No
7France48.079000.0Yes
8Germany50.083000.0No
9France37.067000.0Yes
\n
" - }, - "metadata": {}, - "execution_count": 6 } ], "source": [ @@ -88,11 +55,10 @@ "#取最后一列\n", "Y = dataset.iloc[ : , 3].values\n", "print(\"Step 2: Importing dataset\")\n", - "print(\"X:\")\n", + "print(\"X\")\n", "print(X)\n", - "print(\"Y:\")\n", - "print(Y)\n", - "dataset.head(100)" + "print(\"Y\")\n", + "print(Y)" ] }, { @@ -132,7 +98,6 @@ ], "source": [ "# If you use the newest version of sklearn, use the lines of code commented out\n", -<<<<<<< Updated upstream "from sklearn.impute import SimpleImputer\n", "imputer = SimpleImputer(missing_values=np.nan, strategy=\"mean\")\n", "#from sklearn.preprocessing import Imputer\n", @@ -140,15 +105,6 @@ "#imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", "print(X[ 0:4 , 1:3])\n", "imputer = imputer.fit(X[ 0:4 , 1:3])\n", -======= - "# from sklearn.impute import SimpleImputer\n", - "# imputer = SimpleImputer(missing_values=\"NaN\", strategy=\"mean\")\n", - "from sklearn.preprocessing import Imputer\n", - "# axis=0表示按列进行\n", - "imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", - "print(imputer)\n", - "imputer = imputer.fit(X[ : , 1:3])\n", ->>>>>>> Stashed changes "X[ : , 1:3] = imputer.transform(X[ : , 1:3])\n", "print(\"---------------------\")\n", "print(\"Step 3: Handling the missing data\")\n", From 524c84e8a96a6a0f4c53bb1d573b86ff4efd4954 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 18:04:36 +0800 Subject: [PATCH 07/17] Revert "For better comprehension" This reverts commit 9b231e4166e2056154846ff1b35e86bacd0bd1ee. --- Code/Day 1_Data_Preprocessing.ipynb | 81 ++++++++++++++++------------- 1 file changed, 44 insertions(+), 37 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index d19db6a..9f26c9c 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -37,14 +37,27 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 2, "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "Step 2: Importing dataset\nX\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 nan]\n ['France' 35.0 58000.0]\n ['Spain' nan 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\nY\n['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" + "Step 2: Importing dataset\n", + "X\n", + "[['France' 44.0 72000.0]\n", + " ['Spain' 27.0 48000.0]\n", + " ['Germany' 30.0 54000.0]\n", + " ['Spain' 38.0 61000.0]\n", + " ['Germany' 40.0 nan]\n", + " ['France' 35.0 58000.0]\n", + " ['Spain' nan 52000.0]\n", + " ['France' 48.0 79000.0]\n", + " ['Germany' 50.0 83000.0]\n", + " ['France' 37.0 67000.0]]\n", + "Y\n", + "['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" ] } ], @@ -71,40 +84,38 @@ }, { "cell_type": "code", - "execution_count": 17, + "execution_count": 3, "metadata": {}, "outputs": [ { - "output_type": "stream", "name": "stdout", + "output_type": "stream", "text": [ - "[[44.0 72000.0]\n [27.0 48000.0]\n [30.0 54000.0]\n [38.0 61000.0]]\n" - ] - }, - { - "output_type": "error", - "ename": "ValueError", - "evalue": "'X' and 'missing_values' types are expected to be both numerical. Got X.dtype=float64 and type(missing_values)=.", - "traceback": [ - "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[1;31mValueError\u001b[0m Traceback (most recent call last)", - "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 6\u001b[0m \u001b[1;31m#imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m4\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 8\u001b[1;33m \u001b[0mimputer\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimputer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfit\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m4\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 9\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m \u001b[1;33m:\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimputer\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtransform\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m[\u001b[0m \u001b[1;33m:\u001b[0m \u001b[1;33m,\u001b[0m \u001b[1;36m1\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 10\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"---------------------\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\sklearn\\impute\\_base.py\u001b[0m in \u001b[0;36mfit\u001b[1;34m(self, X, y)\u001b[0m\n\u001b[0;32m 275\u001b[0m \u001b[0mself\u001b[0m \u001b[1;33m:\u001b[0m \u001b[0mSimpleImputer\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 276\u001b[0m \"\"\"\n\u001b[1;32m--> 277\u001b[1;33m \u001b[0mX\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_validate_input\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0min_fit\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 278\u001b[0m \u001b[0msuper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_fit_indicator\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 279\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\sklearn\\impute\\_base.py\u001b[0m in \u001b[0;36m_validate_input\u001b[1;34m(self, X, in_fit)\u001b[0m\n\u001b[0;32m 251\u001b[0m \u001b[1;32mraise\u001b[0m \u001b[0mve\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 252\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 253\u001b[1;33m \u001b[0m_check_inputs_dtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mX\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmissing_values\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 254\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mdtype\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mkind\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[1;33m(\u001b[0m\u001b[1;34m\"i\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"u\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"f\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"O\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 255\u001b[0m raise ValueError(\"SimpleImputer does not support data with dtype \"\n", - "\u001b[1;32m~\\anaconda3\\lib\\site-packages\\sklearn\\impute\\_base.py\u001b[0m in \u001b[0;36m_check_inputs_dtype\u001b[1;34m(X, missing_values)\u001b[0m\n\u001b[0;32m 23\u001b[0m if (X.dtype.kind in (\"f\", \"i\", \"u\") and\n\u001b[0;32m 24\u001b[0m not isinstance(missing_values, numbers.Real)):\n\u001b[1;32m---> 25\u001b[1;33m raise ValueError(\"'X' and 'missing_values' types are expected to be\"\n\u001b[0m\u001b[0;32m 26\u001b[0m \u001b[1;34m\" both numerical. Got X.dtype={} and \"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 27\u001b[0m \u001b[1;34m\" type(missing_values)={}.\"\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", - "\u001b[1;31mValueError\u001b[0m: 'X' and 'missing_values' types are expected to be both numerical. Got X.dtype=float64 and type(missing_values)=." + "---------------------\n", + "Step 3: Handling the missing data\n", + "step2\n", + "X\n", + "[['France' 44.0 72000.0]\n", + " ['Spain' 27.0 48000.0]\n", + " ['Germany' 30.0 54000.0]\n", + " ['Spain' 38.0 61000.0]\n", + " ['Germany' 40.0 63777.77777777778]\n", + " ['France' 35.0 58000.0]\n", + " ['Spain' 38.77777777777778 52000.0]\n", + " ['France' 48.0 79000.0]\n", + " ['Germany' 50.0 83000.0]\n", + " ['France' 37.0 67000.0]]\n" ] } ], "source": [ - "# If you use the newest version of sklearn, use the lines of code commented out\n", - "from sklearn.impute import SimpleImputer\n", - "imputer = SimpleImputer(missing_values=np.nan, strategy=\"mean\")\n", - "#from sklearn.preprocessing import Imputer\n", + "# If you use the newest version of sklearn, use the lines of code commented out", + "# from sklearn.impute import SimpleImputer", + "# imputer = SimpleImputer(missing_values=\"NaN\", strategy=\"mean\")", + "from sklearn.preprocessing import Imputer\n", "# axis=0表示按列进行\n", - "#imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", - "print(X[ 0:4 , 1:3])\n", - "imputer = imputer.fit(X[ 0:4 , 1:3])\n", + "imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", + "imputer = imputer.fit(X[ : , 1:3])\n", "X[ : , 1:3] = imputer.transform(X[ : , 1:3])\n", "print(\"---------------------\")\n", "print(\"Step 3: Handling the missing data\")\n", @@ -304,13 +315,9 @@ ], "metadata": { "kernelspec": { - "name": "python3", - "display_name": "Python 3.8.3 64-bit (conda)", - "metadata": { - "interpreter": { - "hash": "1b78ff499ec469310b6a6795c4effbbfc85eb20a6ba0cf828a15721670711b2c" - } - } + "display_name": "Python 3", + "language": "python", + "name": "python3" }, "language_info": { "codemirror_mode": { @@ -322,9 +329,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.3-final" + "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 -} \ No newline at end of file +} From c428d085a6e7a62a5e17ca2c58b1478f7c5e8437 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 18:10:43 +0800 Subject: [PATCH 08/17] Update Day 1_Data_Preprocessing.ipynb --- Code/Day 1_Data_Preprocessing.ipynb | 54 ++++++++++++++--------------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index ee873ee..be22f60 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -19,7 +19,17 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import pandas as pd" + ] + }, + { + "cell_type": "code", + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -42,10 +52,6 @@ ] }, { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], "source": [ "from sklearn.preprocessing import OneHotEncoder\n", "enc = OneHotEncoder(handle_unknown='ignore')\n", @@ -63,16 +69,19 @@ ">>> enc.get_feature_names(['gender', 'group'])\n", "array(['gender_Female', 'gender_Male', 'group_1', 'group_2', 'group_3'],\n", " dtype=object)" - ] - }, - { + ], "cell_type": "code", - "execution_count": 4, "metadata": {}, - "outputs": [], - "source": [ - "import numpy as np\n", - "import pandas as pd" + "execution_count": 11, + "outputs": [ + { + "output_type": "error", + "ename": "SyntaxError", + "evalue": "invalid syntax (, line 4)", + "traceback": [ + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m4\u001b[0m\n\u001b[1;33m >>> enc.fit(X)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + ] + } ] }, { @@ -85,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 12, "metadata": {}, "outputs": [ { @@ -120,7 +129,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -161,7 +170,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 14, "metadata": {}, "outputs": [ { @@ -202,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 15, "metadata": {}, "outputs": [ { @@ -238,7 +247,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 16, "metadata": {}, "outputs": [ { @@ -268,15 +277,6 @@ "source": [ "完整的项目请前往Github项目100-Days-Of-ML-Code查看。有任何的建议或者意见欢迎在issue中提出~" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { From 719200ee62cb9e467352c3bb0f95962fdb43afa0 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Wed, 13 Jan 2021 18:13:31 +0800 Subject: [PATCH 09/17] Update Day 1_Data_Preprocessing.ipynb --- Code/Day 1_Data_Preprocessing.ipynb | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index be22f60..df7a288 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -29,7 +29,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 3, "metadata": {}, "outputs": [ { @@ -72,14 +72,14 @@ ], "cell_type": "code", "metadata": {}, - "execution_count": 11, + "execution_count": 4, "outputs": [ { "output_type": "error", "ename": "SyntaxError", - "evalue": "invalid syntax (, line 4)", + "evalue": "invalid syntax (, line 4)", "traceback": [ - "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m4\u001b[0m\n\u001b[1;33m >>> enc.fit(X)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" + "\u001b[1;36m File \u001b[1;32m\"\"\u001b[1;36m, line \u001b[1;32m4\u001b[0m\n\u001b[1;33m >>> enc.fit(X)\u001b[0m\n\u001b[1;37m ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n" ] } ] @@ -94,7 +94,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 5, "metadata": {}, "outputs": [ { @@ -129,7 +129,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 6, "metadata": {}, "outputs": [ { @@ -170,7 +170,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 7, "metadata": {}, "outputs": [ { @@ -211,7 +211,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 8, "metadata": {}, "outputs": [ { @@ -247,7 +247,7 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 13, "metadata": {}, "outputs": [ { @@ -263,12 +263,13 @@ "sc_X = StandardScaler()\n", "X_train = sc_X.fit_transform(X_train)\n", "X_test = sc_X.transform(X_test)\n", + "\n", "print(\"---------------------\")\n", "print(\"Step 6: Feature Scaling\")\n", "print(\"X_train\")\n", "print(X_train)\n", "print(\"X_test\")\n", - "print(X_test)" + "print(X_test)\n" ] }, { From 13020158fe8c87ef28cb3a195e9f1532645b9978 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Thu, 14 Jan 2021 10:59:16 +0800 Subject: [PATCH 10/17] Update Day 1_Data_Preprocessing.py --- Code/Day 1_Data_Preprocessing.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.py b/Code/Day 1_Data_Preprocessing.py index d81deb2..9a76411 100644 --- a/Code/Day 1_Data_Preprocessing.py +++ b/Code/Day 1_Data_Preprocessing.py @@ -19,7 +19,7 @@ print(Y) # from sklearn.impute import SimpleImputer # imputer = SimpleImputer(missing_values="NaN", strategy="mean") from sklearn.preprocessing import Imputer -imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0) +imputer = Imputer(missing_values = np.nan, strategy = "mean", axis = 0) imputer = imputer.fit(X[ : , 1:3]) X[ : , 1:3] = imputer.transform(X[ : , 1:3]) print("---------------------") @@ -33,7 +33,7 @@ from sklearn.preprocessing import LabelEncoder, OneHotEncoder labelencoder_X = LabelEncoder() X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0]) #Creating a dummy variable -onehotencoder = OneHotEncoder(categorical_features = [0]) +onehotencoder = OneHotEncoder('auto') X = onehotencoder.fit_transform(X).toarray() labelencoder_Y = LabelEncoder() Y = labelencoder_Y.fit_transform(Y) From 61ed111ec87aa5778a709d31ba9b01dd9a1fd975 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Thu, 14 Jan 2021 11:03:32 +0800 Subject: [PATCH 11/17] Update Day 1_Data_Preprocessing.ipynb --- Code/Day 1_Data_Preprocessing.ipynb | 31 +++++++++-------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index 9f26c9c..7d250ac 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -41,23 +41,10 @@ "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "Step 2: Importing dataset\n", - "X\n", - "[['France' 44.0 72000.0]\n", - " ['Spain' 27.0 48000.0]\n", - " ['Germany' 30.0 54000.0]\n", - " ['Spain' 38.0 61000.0]\n", - " ['Germany' 40.0 nan]\n", - " ['France' 35.0 58000.0]\n", - " ['Spain' nan 52000.0]\n", - " ['France' 48.0 79000.0]\n", - " ['Germany' 50.0 83000.0]\n", - " ['France' 37.0 67000.0]]\n", - "Y\n", - "['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" + "Step 2: Importing dataset\nX\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 nan]\n ['France' 35.0 58000.0]\n ['Spain' nan 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\nY\n['No' 'Yes' 'No' 'No' 'Yes' 'Yes' 'No' 'Yes' 'No' 'Yes']\n" ] } ], @@ -109,12 +96,12 @@ } ], "source": [ - "# If you use the newest version of sklearn, use the lines of code commented out", - "# from sklearn.impute import SimpleImputer", - "# imputer = SimpleImputer(missing_values=\"NaN\", strategy=\"mean\")", - "from sklearn.preprocessing import Imputer\n", + "# If you use the newest version of sklearn, use the lines of code commented out\n", + "from sklearn.impute import SimpleImputer\n", + "imputer = SimpleImputer(missing_values=np.nan, strategy=\"mean\")\n", + "#from sklearn.preprocessing import Imputer\n", "# axis=0表示按列进行\n", - "imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", + "#imputer = Imputer(missing_values = \"NaN\", strategy = \"mean\", axis = 0)\n", "imputer = imputer.fit(X[ : , 1:3])\n", "X[ : , 1:3] = imputer.transform(X[ : , 1:3])\n", "print(\"---------------------\")\n", @@ -329,9 +316,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.8.3-final" } }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file From 4cd334112033f65d9ce89bd41e7722529f956372 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Thu, 14 Jan 2021 12:30:11 +0800 Subject: [PATCH 12/17] Update Day 1_Data_Preprocessing.ipynb --- Code/Day 1_Data_Preprocessing.ipynb | 128 +++++----------------------- 1 file changed, 23 insertions(+), 105 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.ipynb b/Code/Day 1_Data_Preprocessing.ipynb index 7d250ac..eb2a746 100644 --- a/Code/Day 1_Data_Preprocessing.ipynb +++ b/Code/Day 1_Data_Preprocessing.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -37,7 +37,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 52, "metadata": {}, "outputs": [ { @@ -71,27 +71,14 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 53, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 3: Handling the missing data\n", - "step2\n", - "X\n", - "[['France' 44.0 72000.0]\n", - " ['Spain' 27.0 48000.0]\n", - " ['Germany' 30.0 54000.0]\n", - " ['Spain' 38.0 61000.0]\n", - " ['Germany' 40.0 63777.77777777778]\n", - " ['France' 35.0 58000.0]\n", - " ['Spain' 38.77777777777778 52000.0]\n", - " ['France' 48.0 79000.0]\n", - " ['Germany' 50.0 83000.0]\n", - " ['France' 37.0 67000.0]]\n" + "---------------------\nStep 3: Handling the missing data\nstep2\nX\n[['France' 44.0 72000.0]\n ['Spain' 27.0 48000.0]\n ['Germany' 30.0 54000.0]\n ['Spain' 38.0 61000.0]\n ['Germany' 40.0 63777.77777777778]\n ['France' 35.0 58000.0]\n ['Spain' 38.77777777777778 52000.0]\n ['France' 48.0 79000.0]\n ['Germany' 50.0 83000.0]\n ['France' 37.0 67000.0]]\n" ] } ], @@ -121,48 +108,28 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 54, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 4: Encoding categorical data\n", - "X\n", - "[[1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01\n", - " 7.20000000e+04]\n", - " [0.00000000e+00 0.00000000e+00 1.00000000e+00 2.70000000e+01\n", - " 4.80000000e+04]\n", - " [0.00000000e+00 1.00000000e+00 0.00000000e+00 3.00000000e+01\n", - " 5.40000000e+04]\n", - " [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.80000000e+01\n", - " 6.10000000e+04]\n", - " [0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+01\n", - " 6.37777778e+04]\n", - " [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.50000000e+01\n", - " 5.80000000e+04]\n", - " [0.00000000e+00 0.00000000e+00 1.00000000e+00 3.87777778e+01\n", - " 5.20000000e+04]\n", - " [1.00000000e+00 0.00000000e+00 0.00000000e+00 4.80000000e+01\n", - " 7.90000000e+04]\n", - " [0.00000000e+00 1.00000000e+00 0.00000000e+00 5.00000000e+01\n", - " 8.30000000e+04]\n", - " [1.00000000e+00 0.00000000e+00 0.00000000e+00 3.70000000e+01\n", - " 6.70000000e+04]]\n", - "Y\n", - "[0 1 0 0 1 1 0 1 0 1]\n" + "---------------------\nStep 4: Encoding categorical data\nX\n[[1.0 0.0 0.0 44.0 72000.0]\n [0.0 0.0 1.0 27.0 48000.0]\n [0.0 1.0 0.0 30.0 54000.0]\n [0.0 0.0 1.0 38.0 61000.0]\n [0.0 1.0 0.0 40.0 63777.77777777778]\n [1.0 0.0 0.0 35.0 58000.0]\n [0.0 0.0 1.0 38.77777777777778 52000.0]\n [1.0 0.0 0.0 48.0 79000.0]\n [0.0 1.0 0.0 50.0 83000.0]\n [1.0 0.0 0.0 37.0 67000.0]]\nY\n[0 1 0 0 1 1 0 1 0 1]\n" ] } ], "source": [ "from sklearn.preprocessing import LabelEncoder, OneHotEncoder\n", - "labelencoder_X = LabelEncoder()\n", - "X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])\n", + "from sklearn.compose import ColumnTransformer \n", + "#labelencoder_X = LabelEncoder()\n", + "#X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0])\n", "#Creating a dummy variable\n", - "onehotencoder = OneHotEncoder(categorical_features = [0])\n", - "X = onehotencoder.fit_transform(X).toarray()\n", + "#print(X)\n", + "ct = ColumnTransformer([(\"\", OneHotEncoder(), [0])], remainder = 'passthrough')\n", + "X = ct.fit_transform(X)\n", + "#onehotencoder = OneHotEncoder(categorical_features = [0])\n", + "#X = onehotencoder.fit_transform(X).toarray()\n", "labelencoder_Y = LabelEncoder()\n", "Y = labelencoder_Y.fit_transform(Y)\n", "print(\"---------------------\")\n", @@ -183,41 +150,14 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 55, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 5: Splitting the datasets into training sets and Test sets\n", - "X_train\n", - "[[ 0.00000000e+00 1.00000000e+00 0.00000000e+00 4.00000000e+01\n", - " 6.37777778e+04]\n", - " [ 1.00000000e+00 0.00000000e+00 0.00000000e+00 3.70000000e+01\n", - " 6.70000000e+04]\n", - " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00 2.70000000e+01\n", - " 4.80000000e+04]\n", - " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00 3.87777778e+01\n", - " 5.20000000e+04]\n", - " [ 1.00000000e+00 0.00000000e+00 0.00000000e+00 4.80000000e+01\n", - " 7.90000000e+04]\n", - " [ 0.00000000e+00 0.00000000e+00 1.00000000e+00 3.80000000e+01\n", - " 6.10000000e+04]\n", - " [ 1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01\n", - " 7.20000000e+04]\n", - " [ 1.00000000e+00 0.00000000e+00 0.00000000e+00 3.50000000e+01\n", - " 5.80000000e+04]]\n", - "X_test\n", - "[[ 0.00000000e+00 1.00000000e+00 0.00000000e+00 3.00000000e+01\n", - " 5.40000000e+04]\n", - " [ 0.00000000e+00 1.00000000e+00 0.00000000e+00 5.00000000e+01\n", - " 8.30000000e+04]]\n", - "Y_train\n", - "[1 1 1 0 1 0 0 1]\n", - "Y_test\n", - "[0 0]\n" + "---------------------\nStep 5: Splitting the datasets into training sets and Test sets\nX_train\n[[0.0 1.0 0.0 40.0 63777.77777777778]\n [1.0 0.0 0.0 37.0 67000.0]\n [0.0 0.0 1.0 27.0 48000.0]\n [0.0 0.0 1.0 38.77777777777778 52000.0]\n [1.0 0.0 0.0 48.0 79000.0]\n [0.0 0.0 1.0 38.0 61000.0]\n [1.0 0.0 0.0 44.0 72000.0]\n [1.0 0.0 0.0 35.0 58000.0]]\nX_test\n[[0.0 1.0 0.0 30.0 54000.0]\n [0.0 1.0 0.0 50.0 83000.0]]\nY_train\n[1 1 1 0 1 0 0 1]\nY_test\n[0 0]\n" ] } ], @@ -246,27 +186,14 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 57, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "---------------------\n", - "Step 6: Feature Scaling\n", - "X_train\n", - "[[-1. 2.64575131 -0.77459667 0.26306757 0.12381479]\n", - " [ 1. -0.37796447 -0.77459667 -0.25350148 0.46175632]\n", - " [-1. -0.37796447 1.29099445 -1.97539832 -1.53093341]\n", - " [-1. -0.37796447 1.29099445 0.05261351 -1.11141978]\n", - " [ 1. -0.37796447 -0.77459667 1.64058505 1.7202972 ]\n", - " [-1. -0.37796447 1.29099445 -0.0813118 -0.16751412]\n", - " [ 1. -0.37796447 -0.77459667 0.95182631 0.98614835]\n", - " [ 1. -0.37796447 -0.77459667 -0.59788085 -0.48214934]]\n", - "X_test\n", - "[[ 0. 0. 0. -1. -1.]\n", - " [ 0. 0. 0. 1. 1.]]\n" + "---------------------\nStep 6: Feature Scaling\nX_train\n[[-1. 2.64575131 -0.77459667 0.26306757 0.12381479]\n [ 1. -0.37796447 -0.77459667 -0.25350148 0.46175632]\n [-1. -0.37796447 1.29099445 -1.97539832 -1.53093341]\n [-1. -0.37796447 1.29099445 0.05261351 -1.11141978]\n [ 1. -0.37796447 -0.77459667 1.64058505 1.7202972 ]\n [-1. -0.37796447 1.29099445 -0.0813118 -0.16751412]\n [ 1. -0.37796447 -0.77459667 0.95182631 0.98614835]\n [ 1. -0.37796447 -0.77459667 -0.59788085 -0.48214934]]\nX_test\n[[-1. 2.64575131 -0.77459667 -1.45882927 -0.90166297]\n [-1. 2.64575131 -0.77459667 1.98496442 2.13981082]]\n" ] } ], @@ -274,7 +201,7 @@ "from sklearn.preprocessing import StandardScaler\n", "sc_X = StandardScaler()\n", "X_train = sc_X.fit_transform(X_train)\n", - "X_test = sc_X.transform(X_test)\n", + "X_test = sc_X.transform(X_test) #we should not use fit_transfer cause the u and z is determined from x_train\n", "print(\"---------------------\")\n", "print(\"Step 6: Feature Scaling\")\n", "print(\"X_train\")\n", @@ -289,15 +216,6 @@ "source": [ "完整的项目请前往Github项目100-Days-Of-ML-Code查看。有任何的建议或者意见欢迎在issue中提出~" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { From fac63b9c7cd9af906e095e5b7e6368b759e64d22 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Thu, 14 Jan 2021 12:42:31 +0800 Subject: [PATCH 13/17] Update Day 1_Data_Preprocessing.py --- Code/Day 1_Data_Preprocessing.py | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Code/Day 1_Data_Preprocessing.py b/Code/Day 1_Data_Preprocessing.py index 9a76411..13f7c3e 100644 --- a/Code/Day 1_Data_Preprocessing.py +++ b/Code/Day 1_Data_Preprocessing.py @@ -16,10 +16,11 @@ print(Y) #Step 3: Handling the missing data # If you use the newest version of sklearn, use the lines of code commented out -# from sklearn.impute import SimpleImputer -# imputer = SimpleImputer(missing_values="NaN", strategy="mean") -from sklearn.preprocessing import Imputer -imputer = Imputer(missing_values = np.nan, strategy = "mean", axis = 0) +from sklearn.impute import SimpleImputer +imputer = SimpleImputer(missing_values=np.nan, strategy="mean") +#from sklearn.preprocessing import Imputer +# axis=0表示按列进行 +#imputer = Imputer(missing_values = "NaN", strategy = "mean", axis = 0) imputer = imputer.fit(X[ : , 1:3]) X[ : , 1:3] = imputer.transform(X[ : , 1:3]) print("---------------------") @@ -30,11 +31,15 @@ print(X) #Step 4: Encoding categorical data from sklearn.preprocessing import LabelEncoder, OneHotEncoder -labelencoder_X = LabelEncoder() -X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0]) +from sklearn.compose import ColumnTransformer +#labelencoder_X = LabelEncoder() +#X[ : , 0] = labelencoder_X.fit_transform(X[ : , 0]) #Creating a dummy variable -onehotencoder = OneHotEncoder('auto') -X = onehotencoder.fit_transform(X).toarray() +#print(X) +ct = ColumnTransformer([("", OneHotEncoder(), [0])], remainder = 'passthrough') +X = ct.fit_transform(X) +#onehotencoder = OneHotEncoder(categorical_features = [0]) +#X = onehotencoder.fit_transform(X).toarray() labelencoder_Y = LabelEncoder() Y = labelencoder_Y.fit_transform(Y) print("---------------------") From a2c021a4ee328693d6d6998481ddb1b862366f25 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Thu, 14 Jan 2021 14:13:29 +0800 Subject: [PATCH 14/17] Update Day 2_Simple_Linear_Regression.ipynb --- Code/Day 2_Simple_Linear_Regression.ipynb | 198 +++++++++++++--------- 1 file changed, 114 insertions(+), 84 deletions(-) diff --git a/Code/Day 2_Simple_Linear_Regression.ipynb b/Code/Day 2_Simple_Linear_Regression.ipynb index fc8f5d9..375277c 100644 --- a/Code/Day 2_Simple_Linear_Regression.ipynb +++ b/Code/Day 2_Simple_Linear_Regression.ipynb @@ -19,7 +19,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 62, "metadata": {}, "outputs": [], "source": [ @@ -37,45 +37,62 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 90, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - " Hours Scores\n", - "0 2.5 21\n", - "1 5.1 47\n", - "2 3.2 27\n", - "3 8.5 75\n", - "4 3.5 30\n", - "5 1.5 20\n", - "6 9.2 88\n", - "7 5.5 60\n", - "8 8.3 81\n", - "9 2.7 25\n", - "10 7.7 85\n", - "11 5.9 62\n", - "12 4.5 41\n", - "13 3.3 42\n", - "14 1.1 17\n", - "15 8.9 95\n", - "16 2.5 30\n", - "17 1.9 24\n", - "18 6.1 67\n", - "19 7.4 69\n", - "20 2.7 30\n", - "21 4.8 54\n", - "22 3.8 35\n", - "23 6.9 76\n", - "24 7.8 86\n" + " Hours Scores\n0 2.5 21\n1 5.1 47\n2 3.2 27\n3 8.5 75\n4 3.5 30\n5 1.5 20\n6 9.2 88\n7 5.5 60\n8 8.3 81\n9 2.7 25\n10 7.7 85\n11 5.9 62\n12 4.5 41\n13 3.3 42\n14 1.1 17\n15 8.9 95\n16 2.5 30\n17 1.9 24\n18 6.1 67\n19 7.4 69\n20 2.7 30\n21 4.8 54\n22 3.8 35\n23 6.9 76\n24 7.8 86\n25 2.1 93\n26 2.2 93\n27 2.5 93\n Hours Scores\n15 8.9 95\n27 2.5 93\n26 2.2 93\n25 2.1 93\n6 9.2 88\n24 7.8 86\n10 7.7 85\n8 8.3 81\n23 6.9 76\n3 8.5 75\n19 7.4 69\n18 6.1 67\n11 5.9 62\n7 5.5 60\n21 4.8 54\n1 5.1 47\n13 3.3 42\n12 4.5 41\n22 3.8 35\n20 2.7 30\n4 3.5 30\n16 2.5 30\n2 3.2 27\n9 2.7 25\n17 1.9 24\n0 2.5 21\n5 1.5 20\n14 1.1 17\n" ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " Hours Scores\n", + "0 2.5 21\n", + "1 5.1 47\n", + "2 3.2 27\n", + "3 8.5 75\n", + "4 3.5 30\n", + "5 1.5 20\n", + "6 9.2 88\n", + "7 5.5 60\n", + "8 8.3 81\n", + "9 2.7 25\n", + "10 7.7 85\n", + "11 5.9 62\n", + "12 4.5 41\n", + "13 3.3 42\n", + "14 1.1 17\n", + "15 8.9 95\n", + "16 2.5 30\n", + "17 1.9 24\n", + "18 6.1 67\n", + "19 7.4 69\n", + "20 2.7 30\n", + "21 4.8 54\n", + "22 3.8 35\n", + "23 6.9 76\n", + "24 7.8 86\n", + "25 2.1 93\n", + "26 2.2 93\n", + "27 2.5 93" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
HoursScores
02.521
15.147
23.227
38.575
43.530
51.520
69.288
75.560
88.381
92.725
107.785
115.962
124.541
133.342
141.117
158.995
162.530
171.924
186.167
197.469
202.730
214.854
223.835
236.976
247.886
252.193
262.293
272.593
\n
" + }, + "metadata": {}, + "execution_count": 90 } ], "source": [ "dataset = pd.read_csv('../datasets/studentscores.csv')\n", - "print(dataset)" + "print(dataset)\n", + "df = dataset.sort_values(\"Scores\",ascending=False)\n", + "print(df)\n", + "dataset.head(30)" ] }, { @@ -87,46 +104,20 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 73, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "X: [[2.5]\n", - " [5.1]\n", - " [3.2]\n", - " [8.5]\n", - " [3.5]\n", - " [1.5]\n", - " [9.2]\n", - " [5.5]\n", - " [8.3]\n", - " [2.7]\n", - " [7.7]\n", - " [5.9]\n", - " [4.5]\n", - " [3.3]\n", - " [1.1]\n", - " [8.9]\n", - " [2.5]\n", - " [1.9]\n", - " [6.1]\n", - " [7.4]\n", - " [2.7]\n", - " [4.8]\n", - " [3.8]\n", - " [6.9]\n", - " [7.8]]\n", - "Y: [21 47 27 75 30 20 88 60 81 25 85 62 41 42 17 95 30 24 67 69 30 54 35 76\n", - " 86]\n" + "X: [[2.5]\n [5.1]\n [3.2]\n [8.5]\n [3.5]\n [1.5]\n [9.2]\n [5.5]\n [8.3]\n [2.7]\n [7.7]\n [5.9]\n [4.5]\n [3.3]\n [1.1]\n [8.9]\n [2.5]\n [1.9]\n [6.1]\n [7.4]\n [2.7]\n [4.8]\n [3.8]\n [6.9]\n [7.8]]\nY: [[21]\n [47]\n [27]\n [75]\n [30]\n [20]\n [88]\n [60]\n [81]\n [25]\n [85]\n [62]\n [41]\n [42]\n [17]\n [95]\n [30]\n [24]\n [67]\n [69]\n [30]\n [54]\n [35]\n [76]\n [86]]\n" ] } ], "source": [ - "X = dataset.iloc[ : , : 1 ].values\n", - "Y = dataset.iloc[ : , 1 ].values\n", + "X = dataset.iloc[ 0: 25, : 1 ].values\n", + "Y = dataset.iloc[ 0: 25, -1: ].values\n", "print(\"X:\",X)\n", "print(\"Y:\",Y)" ] @@ -140,13 +131,23 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 74, "metadata": {}, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[7.8]\n [6.9]\n [1.1]\n [5.1]\n [7.7]\n [3.3]\n [8.3]\n [9.2]\n [6.1]\n [3.5]\n [2.7]\n [5.5]\n [2.7]\n [8.5]\n [2.5]\n [4.8]\n [8.9]\n [4.5]] [[1.5]\n [3.2]\n [7.4]\n [2.5]\n [5.9]\n [3.8]\n [1.9]]\n[[86]\n [76]\n [17]\n [47]\n [85]\n [42]\n [81]\n [88]\n [67]\n [30]\n [25]\n [60]\n [30]\n [75]\n [21]\n [54]\n [95]\n [41]] [[20]\n [27]\n [69]\n [30]\n [62]\n [35]\n [24]]\n" + ] + } + ], "source": [ "from sklearn.model_selection import train_test_split\n", "#拆分数据,0.25作为测试集\n", - "X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0) " + "X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0) \n", + "print(X_train,X_test)\n", + "print(Y_train,Y_test)" ] }, { @@ -158,7 +159,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 75, "metadata": {}, "outputs": [], "source": [ @@ -177,11 +178,21 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 76, "metadata": {}, - "outputs": [], + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[16.84472176]\n [33.74557494]\n [75.50062397]\n [26.7864001 ]\n [60.58810646]\n [39.71058194]\n [20.8213931 ]]\n[[20]\n [27]\n [69]\n [30]\n [62]\n [35]\n [24]]\n" + ] + } + ], "source": [ - "Y_pred = regressor.predict(X_test)" + "Y_pred = regressor.predict(X_test)\n", + "print(Y_pred)\n", + "print(Y_test)" ] }, { @@ -200,18 +211,19 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 77, "metadata": {}, "outputs": [ { + "output_type": "display_data", "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" }, - "metadata": {}, - "output_type": "display_data" + "metadata": { + "needs_background": "light" + } } ], "source": [ @@ -231,18 +243,19 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 78, "metadata": {}, "outputs": [ { + "output_type": "display_data", "data": { - "image/png": "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\n", - "text/plain": [ - "
" - ] + "text/plain": "
", + "image/svg+xml": "\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n", + "image/png": "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\n" }, - "metadata": {}, - "output_type": "display_data" + "metadata": { + "needs_background": "light" + } } ], "source": [ @@ -253,6 +266,23 @@ "plt.show()" ] }, + { + "cell_type": "code", + "execution_count": 61, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[3.2]\n [3.8]\n [1.1]\n [1.9]\n [1.5]\n [5.9]\n [7.8]] [[27]\n [35]\n [17]\n [24]\n [20]\n [62]\n [86]]\n" + ] + } + ], + "source": [ + "print(X_test,Y_test)" + ] + }, { "cell_type": "code", "execution_count": null, @@ -277,9 +307,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.8.3-final" } }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file From aa869023d1bc7c0299e95097e47f7259b598c2f2 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Mon, 18 Jan 2021 16:50:07 +0800 Subject: [PATCH 15/17] Update Day 2_Simple_Linear_Regression.ipynb --- Code/Day 2_Simple_Linear_Regression.ipynb | 7 ------- 1 file changed, 7 deletions(-) diff --git a/Code/Day 2_Simple_Linear_Regression.ipynb b/Code/Day 2_Simple_Linear_Regression.ipynb index 375277c..28f9ff6 100644 --- a/Code/Day 2_Simple_Linear_Regression.ipynb +++ b/Code/Day 2_Simple_Linear_Regression.ipynb @@ -282,13 +282,6 @@ "source": [ "print(X_test,Y_test)" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { From a7f2d6376483d038c79e099a2e87fc124026aaae Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Mon, 18 Jan 2021 19:24:18 +0800 Subject: [PATCH 16/17] Update Day 3_Multiple_Linear_Regression.ipynb --- Code/Day 3_Multiple_Linear_Regression.ipynb | 183 +++++++------------- 1 file changed, 67 insertions(+), 116 deletions(-) diff --git a/Code/Day 3_Multiple_Linear_Regression.ipynb b/Code/Day 3_Multiple_Linear_Regression.ipynb index 3efd4f6..90888bd 100644 --- a/Code/Day 3_Multiple_Linear_Regression.ipynb +++ b/Code/Day 3_Multiple_Linear_Regression.ipynb @@ -40,40 +40,44 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 33, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "[[165349.2 136897.8 471784.1 'New York']\n", - " [162597.7 151377.59 443898.53 'California']\n", - " [153441.51 101145.55 407934.54 'Florida']\n", - " [144372.41 118671.85 383199.62 'New York']\n", - " [142107.34 91391.77 366168.42 'Florida']\n", - " [131876.9 99814.71 362861.36 'New York']\n", - " [134615.46 147198.87 127716.82 'California']\n", - " [130298.13 145530.06 323876.68 'Florida']\n", - " [120542.52 148718.95 311613.29 'New York']\n", - " [123334.88 108679.17 304981.62 'California']]\n", - "[192261.83 191792.06 191050.39 182901.99 166187.94 156991.12 156122.51\n", - " 155752.6 152211.77 149759.96 146121.95 144259.4 141585.52 134307.35\n", - " 132602.65 129917.04 126992.93 125370.37 124266.9 122776.86 118474.03\n", - " 111313.02 110352.25 108733.99 108552.04 107404.34 105733.54 105008.31\n", - " 103282.38 101004.64 99937.59 97483.56 97427.84 96778.92 96712.8\n", - " 96479.51 90708.19 89949.14 81229.06 81005.76 78239.91 77798.83\n", - " 71498.49 69758.98 65200.33 64926.08 49490.75 42559.73 35673.41\n", - " 14681.4 ]\n" + "[[165349.2 136897.8 471784.1 'New York']\n [162597.7 151377.59 443898.53 'California']\n [153441.51 101145.55 407934.54 'Florida']\n [144372.41 118671.85 383199.62 'New York']\n [142107.34 91391.77 366168.42 'Florida']\n [131876.9 99814.71 362861.36 'New York']\n [134615.46 147198.87 127716.82 'California']\n [130298.13 145530.06 323876.68 'Florida']\n [120542.52 148718.95 311613.29 'New York']\n [123334.88 108679.17 304981.62 'California']]\n[192261.83 191792.06 191050.39 182901.99 166187.94 156991.12 156122.51\n 155752.6 152211.77 149759.96 146121.95 144259.4 141585.52 134307.35\n 132602.65 129917.04 126992.93 125370.37 124266.9 122776.86 118474.03\n 111313.02 110352.25 108733.99 108552.04 107404.34 105733.54 105008.31\n 103282.38 101004.64 99937.59 97483.56 97427.84 96778.92 96712.8\n 96479.51 90708.19 89949.14 81229.06 81005.76 78239.91 77798.83\n 71498.49 69758.98 65200.33 64926.08 49490.75 42559.73 35673.41\n 14681.4 ]\n['New York' 'California' 'Florida' 'New York' 'Florida' 'New York'\n 'California' 'Florida' 'New York' 'California' 'Florida' 'California'\n 'Florida' 'California' 'Florida' 'New York' 'California' 'New York'\n 'Florida' 'New York' 'California' 'New York' 'Florida' 'Florida'\n 'New York' 'California' 'Florida' 'New York' 'Florida' 'New York'\n 'Florida' 'New York' 'California' 'Florida' 'California' 'New York'\n 'Florida' 'California' 'New York' 'California' 'California' 'Florida'\n 'California' 'New York' 'California' 'New York' 'Florida' 'California'\n 'New York' 'California']\n" ] + }, + { + "output_type": "execute_result", + "data": { + "text/plain": [ + " R&D Spend Administration Marketing Spend State Profit\n", + "0 165349.20 136897.80 471784.10 New York 192261.83\n", + "1 162597.70 151377.59 443898.53 California 191792.06\n", + "2 153441.51 101145.55 407934.54 Florida 191050.39\n", + "3 144372.41 118671.85 383199.62 New York 182901.99\n", + "4 142107.34 91391.77 366168.42 Florida 166187.94" + ], + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
R&D SpendAdministrationMarketing SpendStateProfit
0165349.20136897.80471784.10New York192261.83
1162597.70151377.59443898.53California191792.06
2153441.51101145.55407934.54Florida191050.39
3144372.41118671.85383199.62New York182901.99
4142107.3491391.77366168.42Florida166187.94
\n
" + }, + "metadata": {}, + "execution_count": 33 } ], "source": [ "dataset = pd.read_csv('../datasets/50_Startups.csv')\n", "X = dataset.iloc[ : , :-1].values\n", "Y = dataset.iloc[ : , 4 ].values\n", + "Z = dataset.iloc[ : , 3 ].values\n", + "print(\"X:\")\n", "print(X[:10])\n", - "print(Y)" + "print(Y)\n", + "print(\"Y:\")\n", + "print(Z)\n", + "dataset.head(5)" ] }, { @@ -85,56 +89,31 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 35, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "labelencoder:\n", - "[[165349.2 136897.8 471784.1 2]\n", - " [162597.7 151377.59 443898.53 0]\n", - " [153441.51 101145.55 407934.54 1]\n", - " [144372.41 118671.85 383199.62 2]\n", - " [142107.34 91391.77 366168.42 1]\n", - " [131876.9 99814.71 362861.36 2]\n", - " [134615.46 147198.87 127716.82 0]\n", - " [130298.13 145530.06 323876.68 1]\n", - " [120542.52 148718.95 311613.29 2]\n", - " [123334.88 108679.17 304981.62 0]]\n", - "onehot:\n", - "[[0.0000000e+00 0.0000000e+00 1.0000000e+00 1.6534920e+05 1.3689780e+05\n", - " 4.7178410e+05]\n", - " [1.0000000e+00 0.0000000e+00 0.0000000e+00 1.6259770e+05 1.5137759e+05\n", - " 4.4389853e+05]\n", - " [0.0000000e+00 1.0000000e+00 0.0000000e+00 1.5344151e+05 1.0114555e+05\n", - " 4.0793454e+05]\n", - " [0.0000000e+00 0.0000000e+00 1.0000000e+00 1.4437241e+05 1.1867185e+05\n", - " 3.8319962e+05]\n", - " [0.0000000e+00 1.0000000e+00 0.0000000e+00 1.4210734e+05 9.1391770e+04\n", - " 3.6616842e+05]\n", - " [0.0000000e+00 0.0000000e+00 1.0000000e+00 1.3187690e+05 9.9814710e+04\n", - " 3.6286136e+05]\n", - " [1.0000000e+00 0.0000000e+00 0.0000000e+00 1.3461546e+05 1.4719887e+05\n", - " 1.2771682e+05]\n", - " [0.0000000e+00 1.0000000e+00 0.0000000e+00 1.3029813e+05 1.4553006e+05\n", - " 3.2387668e+05]\n", - " [0.0000000e+00 0.0000000e+00 1.0000000e+00 1.2054252e+05 1.4871895e+05\n", - " 3.1161329e+05]\n", - " [1.0000000e+00 0.0000000e+00 0.0000000e+00 1.2333488e+05 1.0867917e+05\n", - " 3.0498162e+05]]\n" + "[[165349.2 136897.8 471784.1 'New York']\n [162597.7 151377.59 443898.53 'California']\n [153441.51 101145.55 407934.54 'Florida']\n [144372.41 118671.85 383199.62 'New York']\n [142107.34 91391.77 366168.42 'Florida']\n [131876.9 99814.71 362861.36 'New York']\n [134615.46 147198.87 127716.82 'California']\n [130298.13 145530.06 323876.68 'Florida']\n [120542.52 148718.95 311613.29 'New York']\n [123334.88 108679.17 304981.62 'California']]\nlabelencoder:\n[[165349.2 136897.8 471784.1 2]\n [162597.7 151377.59 443898.53 0]\n [153441.51 101145.55 407934.54 1]\n [144372.41 118671.85 383199.62 2]\n [142107.34 91391.77 366168.42 1]\n [131876.9 99814.71 362861.36 2]\n [134615.46 147198.87 127716.82 0]\n [130298.13 145530.06 323876.68 1]\n [120542.52 148718.95 311613.29 2]\n [123334.88 108679.17 304981.62 0]]\nonehot:\n[[0.0 0.0 1.0 165349.2 136897.8 471784.1]\n [1.0 0.0 0.0 162597.7 151377.59 443898.53]\n [0.0 1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 0.0 1.0 144372.41 118671.85 383199.62]\n [0.0 1.0 0.0 142107.34 91391.77 366168.42]\n [0.0 0.0 1.0 131876.9 99814.71 362861.36]\n [1.0 0.0 0.0 134615.46 147198.87 127716.82]\n [0.0 1.0 0.0 130298.13 145530.06 323876.68]\n [0.0 0.0 1.0 120542.52 148718.95 311613.29]\n [1.0 0.0 0.0 123334.88 108679.17 304981.62]]\n" ] } ], "source": [ "from sklearn.preprocessing import LabelEncoder, OneHotEncoder\n", + "from sklearn.compose import ColumnTransformer \n", "labelencoder = LabelEncoder()\n", + "print(X[:10])\n", + "#print(X[: , 3])\n", "X[: , 3] = labelencoder.fit_transform(X[ : , 3])\n", + "#print(X[: , 3])\n", "print(\"labelencoder:\")\n", "print(X[:10])\n", - "onehotencoder = OneHotEncoder(categorical_features = [3])\n", - "X = onehotencoder.fit_transform(X).toarray()\n", + "ct = ColumnTransformer([(\"\", OneHotEncoder(), [3])], remainder = 'passthrough')\n", + "X = ct.fit_transform(X)\n", + "#onehotencoder = OneHotEncoder(categorical_features = [3])\n", + "#X = onehotencoder.fit_transform(X).toarray()\n", "print(\"onehot:\")\n", "print(X[:10])" ] @@ -156,13 +135,30 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "X1 = X[: , 1:]" ] }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[0.0 1.0 165349.2 136897.8 471784.1]\n [0.0 0.0 162597.7 151377.59 443898.53]\n [1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 1.0 144372.41 118671.85 383199.62]\n [1.0 0.0 142107.34 91391.77 366168.42]\n [0.0 1.0 131876.9 99814.71 362861.36]\n [0.0 0.0 134615.46 147198.87 127716.82]\n [1.0 0.0 130298.13 145530.06 323876.68]\n [0.0 1.0 120542.52 148718.95 311613.29]\n [0.0 0.0 123334.88 108679.17 304981.62]\n [1.0 0.0 101913.08 110594.11 229160.95]\n [0.0 0.0 100671.96 91790.61 249744.55]\n [1.0 0.0 93863.75 127320.38 249839.44]\n [0.0 0.0 91992.39 135495.07 252664.93]\n [1.0 0.0 119943.24 156547.42 256512.92]\n [0.0 1.0 114523.61 122616.84 261776.23]\n [0.0 0.0 78013.11 121597.55 264346.06]\n [0.0 1.0 94657.16 145077.58 282574.31]\n [1.0 0.0 91749.16 114175.79 294919.57]\n [0.0 1.0 86419.7 153514.11 0.0]\n [0.0 0.0 76253.86 113867.3 298664.47]\n [0.0 1.0 78389.47 153773.43 299737.29]\n [1.0 0.0 73994.56 122782.75 303319.26]\n [1.0 0.0 67532.53 105751.03 304768.73]\n [0.0 1.0 77044.01 99281.34 140574.81]\n [0.0 0.0 64664.71 139553.16 137962.62]\n [1.0 0.0 75328.87 144135.98 134050.07]\n [0.0 1.0 72107.6 127864.55 353183.81]\n [1.0 0.0 66051.52 182645.56 118148.2]\n [0.0 1.0 65605.48 153032.06 107138.38]\n [1.0 0.0 61994.48 115641.28 91131.24]\n [0.0 1.0 61136.38 152701.92 88218.23]\n [0.0 0.0 63408.86 129219.61 46085.25]\n [1.0 0.0 55493.95 103057.49 214634.81]\n [0.0 0.0 46426.07 157693.92 210797.67]\n [0.0 1.0 46014.02 85047.44 205517.64]\n [1.0 0.0 28663.76 127056.21 201126.82]\n [0.0 0.0 44069.95 51283.14 197029.42]\n [0.0 1.0 20229.59 65947.93 185265.1]\n [0.0 0.0 38558.51 82982.09 174999.3]\n [0.0 0.0 28754.33 118546.05 172795.67]\n [1.0 0.0 27892.92 84710.77 164470.71]\n [0.0 0.0 23640.93 96189.63 148001.11]\n [0.0 1.0 15505.73 127382.3 35534.17]\n [0.0 0.0 22177.74 154806.14 28334.72]\n [0.0 1.0 1000.23 124153.04 1903.93]\n [1.0 0.0 1315.46 115816.21 297114.46]\n [0.0 0.0 0.0 135426.92 0.0]\n [0.0 1.0 542.05 51743.15 0.0]\n [0.0 0.0 0.0 116983.8 45173.06]]\n" + ] + } + ], + "source": [ + "print(X1)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -172,47 +168,14 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 29, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "[[0.0000000e+00 1.0000000e+00 0.0000000e+00 6.6051520e+04 1.8264556e+05\n", - " 1.1814820e+05]\n", - " [1.0000000e+00 0.0000000e+00 0.0000000e+00 1.0067196e+05 9.1790610e+04\n", - " 2.4974455e+05]\n", - " [0.0000000e+00 1.0000000e+00 0.0000000e+00 1.0191308e+05 1.1059411e+05\n", - " 2.2916095e+05]\n", - " [0.0000000e+00 1.0000000e+00 0.0000000e+00 2.7892920e+04 8.4710770e+04\n", - " 1.6447071e+05]\n", - " [0.0000000e+00 1.0000000e+00 0.0000000e+00 1.5344151e+05 1.0114555e+05\n", - " 4.0793454e+05]\n", - " [0.0000000e+00 0.0000000e+00 1.0000000e+00 7.2107600e+04 1.2786455e+05\n", - " 3.5318381e+05]\n", - " [0.0000000e+00 0.0000000e+00 1.0000000e+00 2.0229590e+04 6.5947930e+04\n", - " 1.8526510e+05]\n", - " [0.0000000e+00 0.0000000e+00 1.0000000e+00 6.1136380e+04 1.5270192e+05\n", - " 8.8218230e+04]\n", - " [0.0000000e+00 1.0000000e+00 0.0000000e+00 7.3994560e+04 1.2278275e+05\n", - " 3.0331926e+05]\n", - " [0.0000000e+00 1.0000000e+00 0.0000000e+00 1.4210734e+05 9.1391770e+04\n", - " 3.6616842e+05]]\n", - "[103282.38 144259.4 146121.95 77798.83 191050.39 105008.31 81229.06\n", - " 97483.56 110352.25 166187.94]\n", - "[[1.0000000e+00 0.0000000e+00 6.6051520e+04 1.8264556e+05 1.1814820e+05]\n", - " [0.0000000e+00 0.0000000e+00 1.0067196e+05 9.1790610e+04 2.4974455e+05]\n", - " [1.0000000e+00 0.0000000e+00 1.0191308e+05 1.1059411e+05 2.2916095e+05]\n", - " [1.0000000e+00 0.0000000e+00 2.7892920e+04 8.4710770e+04 1.6447071e+05]\n", - " [1.0000000e+00 0.0000000e+00 1.5344151e+05 1.0114555e+05 4.0793454e+05]\n", - " [0.0000000e+00 1.0000000e+00 7.2107600e+04 1.2786455e+05 3.5318381e+05]\n", - " [0.0000000e+00 1.0000000e+00 2.0229590e+04 6.5947930e+04 1.8526510e+05]\n", - " [0.0000000e+00 1.0000000e+00 6.1136380e+04 1.5270192e+05 8.8218230e+04]\n", - " [1.0000000e+00 0.0000000e+00 7.3994560e+04 1.2278275e+05 3.0331926e+05]\n", - " [1.0000000e+00 0.0000000e+00 1.4210734e+05 9.1391770e+04 3.6616842e+05]]\n", - "[103282.38 144259.4 146121.95 77798.83 191050.39 105008.31 81229.06\n", - " 97483.56 110352.25 166187.94]\n" + "[[0.0 1.0 0.0 66051.52 182645.56 118148.2]\n [1.0 0.0 0.0 100671.96 91790.61 249744.55]\n [0.0 1.0 0.0 101913.08 110594.11 229160.95]\n [0.0 1.0 0.0 27892.92 84710.77 164470.71]\n [0.0 1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 0.0 1.0 72107.6 127864.55 353183.81]\n [0.0 0.0 1.0 20229.59 65947.93 185265.1]\n [0.0 0.0 1.0 61136.38 152701.92 88218.23]\n [0.0 1.0 0.0 73994.56 122782.75 303319.26]\n [0.0 1.0 0.0 142107.34 91391.77 366168.42]]\n[103282.38 144259.4 146121.95 77798.83 191050.39 105008.31 81229.06\n 97483.56 110352.25 166187.94]\n[[1.0 0.0 66051.52 182645.56 118148.2]\n [0.0 0.0 100671.96 91790.61 249744.55]\n [1.0 0.0 101913.08 110594.11 229160.95]\n [1.0 0.0 27892.92 84710.77 164470.71]\n [1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 1.0 72107.6 127864.55 353183.81]\n [0.0 1.0 20229.59 65947.93 185265.1]\n [0.0 1.0 61136.38 152701.92 88218.23]\n [1.0 0.0 73994.56 122782.75 303319.26]\n [1.0 0.0 142107.34 91391.77 366168.42]]\n[103282.38 144259.4 146121.95 77798.83 191050.39 105008.31 81229.06\n 97483.56 110352.25 166187.94]\n" ] } ], @@ -235,18 +198,18 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 30, "metadata": {}, "outputs": [ { + "output_type": "execute_result", "data": { "text/plain": [ - "LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)" + "LinearRegression()" ] }, - "execution_count": 40, "metadata": {}, - "output_type": "execute_result" + "execution_count": 30 } ], "source": [ @@ -266,7 +229,7 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": 31, "metadata": {}, "outputs": [], "source": [ @@ -276,19 +239,14 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": 32, "metadata": {}, "outputs": [ { - "name": "stdout", "output_type": "stream", + "name": "stdout", "text": [ - "[103015.20159796 132582.27760815 132447.73845173 71976.09851258\n", - " 178537.48221051 116161.24230163 67851.69209676 98791.73374689\n", - " 113969.43533011 167921.06569547]\n", - "[103015.20159795 132582.27760817 132447.73845176 71976.09851257\n", - " 178537.48221058 116161.24230165 67851.69209675 98791.73374686\n", - " 113969.43533013 167921.06569553]\n" + "[103015.20159796 132582.27760816 132447.73845174 71976.09851258\n 178537.48221055 116161.24230166 67851.69209676 98791.73374686\n 113969.43533013 167921.06569551]\n[103015.20159796 132582.27760815 132447.73845175 71976.09851258\n 178537.48221056 116161.24230166 67851.69209676 98791.73374687\n 113969.43533013 167921.06569551]\n" ] } ], @@ -303,13 +261,6 @@ "source": [ "**完整的项目请前往Github项目100-Days-Of-ML-Code查看。有任何的建议或者意见欢迎在issue中提出~**" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] } ], "metadata": { @@ -328,9 +279,9 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.6.5" + "version": "3.8.3-final" } }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file From 120bd5c1d9c36c574ea04cdf2d72e36e626e5b23 Mon Sep 17 00:00:00 2001 From: yx-xyc <60683403+yx-xyc@users.noreply.github.com> Date: Mon, 18 Jan 2021 19:31:58 +0800 Subject: [PATCH 17/17] Update Day 3_Multiple_Linear_Regression.ipynb --- Code/Day 3_Multiple_Linear_Regression.ipynb | 62 ++++++++++++++------- 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/Code/Day 3_Multiple_Linear_Regression.ipynb b/Code/Day 3_Multiple_Linear_Regression.ipynb index 90888bd..374b3d6 100644 --- a/Code/Day 3_Multiple_Linear_Regression.ipynb +++ b/Code/Day 3_Multiple_Linear_Regression.ipynb @@ -23,7 +23,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 45, "metadata": {}, "outputs": [], "source": [ @@ -40,14 +40,14 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 57, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[[165349.2 136897.8 471784.1 'New York']\n [162597.7 151377.59 443898.53 'California']\n [153441.51 101145.55 407934.54 'Florida']\n [144372.41 118671.85 383199.62 'New York']\n [142107.34 91391.77 366168.42 'Florida']\n [131876.9 99814.71 362861.36 'New York']\n [134615.46 147198.87 127716.82 'California']\n [130298.13 145530.06 323876.68 'Florida']\n [120542.52 148718.95 311613.29 'New York']\n [123334.88 108679.17 304981.62 'California']]\n[192261.83 191792.06 191050.39 182901.99 166187.94 156991.12 156122.51\n 155752.6 152211.77 149759.96 146121.95 144259.4 141585.52 134307.35\n 132602.65 129917.04 126992.93 125370.37 124266.9 122776.86 118474.03\n 111313.02 110352.25 108733.99 108552.04 107404.34 105733.54 105008.31\n 103282.38 101004.64 99937.59 97483.56 97427.84 96778.92 96712.8\n 96479.51 90708.19 89949.14 81229.06 81005.76 78239.91 77798.83\n 71498.49 69758.98 65200.33 64926.08 49490.75 42559.73 35673.41\n 14681.4 ]\n['New York' 'California' 'Florida' 'New York' 'Florida' 'New York'\n 'California' 'Florida' 'New York' 'California' 'Florida' 'California'\n 'Florida' 'California' 'Florida' 'New York' 'California' 'New York'\n 'Florida' 'New York' 'California' 'New York' 'Florida' 'Florida'\n 'New York' 'California' 'Florida' 'New York' 'Florida' 'New York'\n 'Florida' 'New York' 'California' 'Florida' 'California' 'New York'\n 'Florida' 'California' 'New York' 'California' 'California' 'Florida'\n 'California' 'New York' 'California' 'New York' 'Florida' 'California'\n 'New York' 'California']\n" + "X:\n[[165349.2 136897.8 471784.1 'New York']\n [162597.7 151377.59 443898.53 'California']\n [153441.51 101145.55 407934.54 'Florida']\n [144372.41 118671.85 383199.62 'New York']\n [142107.34 91391.77 366168.42 'Florida']\n [131876.9 99814.71 362861.36 'New York']\n [134615.46 147198.87 127716.82 'California']\n [130298.13 145530.06 323876.68 'Florida']\n [120542.52 148718.95 311613.29 'New York']\n [123334.88 108679.17 304981.62 'California']]\nY:\n[192261.83 191792.06 191050.39 182901.99 166187.94 156991.12 156122.51\n 155752.6 152211.77 149759.96 146121.95 144259.4 141585.52 134307.35\n 132602.65 129917.04 126992.93 125370.37 124266.9 122776.86 118474.03\n 111313.02 110352.25 108733.99 108552.04 107404.34 105733.54 105008.31\n 103282.38 101004.64 99937.59 97483.56 97427.84 96778.92 96712.8\n 96479.51 90708.19 89949.14 81229.06 81005.76 78239.91 77798.83\n 71498.49 69758.98 65200.33 64926.08 49490.75 42559.73 35673.41\n 14681.4 ]\n" ] }, { @@ -64,22 +64,42 @@ "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
R&D SpendAdministrationMarketing SpendStateProfit
0165349.20136897.80471784.10New York192261.83
1162597.70151377.59443898.53California191792.06
2153441.51101145.55407934.54Florida191050.39
3144372.41118671.85383199.62New York182901.99
4142107.3491391.77366168.42Florida166187.94
\n
" }, "metadata": {}, - "execution_count": 33 + "execution_count": 57 } ], "source": [ "dataset = pd.read_csv('../datasets/50_Startups.csv')\n", "X = dataset.iloc[ : , :-1].values\n", "Y = dataset.iloc[ : , 4 ].values\n", - "Z = dataset.iloc[ : , 3 ].values\n", + "Z = dataset.iloc[ : , 0 ].values\n", "print(\"X:\")\n", "print(X[:10])\n", - "print(Y)\n", "print(\"Y:\")\n", - "print(Z)\n", + "print(Y)\n", "dataset.head(5)" ] }, + { + "cell_type": "code", + "execution_count": 59, + "metadata": {}, + "outputs": [ + { + "output_type": "stream", + "name": "stdout", + "text": [ + "[[165349.2 136897.8 471784.1 'New York']\n [162597.7 151377.59 443898.53 'California']\n [153441.51 101145.55 407934.54 'Florida']\n [144372.41 118671.85 383199.62 'New York']\n [142107.34 91391.77 366168.42 'Florida']\n [131876.9 99814.71 362861.36 'New York']\n [134615.46 147198.87 127716.82 'California']\n [130298.13 145530.06 323876.68 'Florida']\n [120542.52 148718.95 311613.29 'New York']\n [123334.88 108679.17 304981.62 'California']\n [101913.08 110594.11 229160.95 'Florida']\n [100671.96 91790.61 249744.55 'California']\n [93863.75 127320.38 249839.44 'Florida']\n [91992.39 135495.07 252664.93 'California']\n [119943.24 156547.42 256512.92 'Florida']\n [114523.61 122616.84 261776.23 'New York']\n [78013.11 121597.55 264346.06 'California']\n [94657.16 145077.58 282574.31 'New York']\n [91749.16 114175.79 294919.57 'Florida']\n [86419.7 153514.11 224494.78489361703 'New York']\n [76253.86 113867.3 298664.47 'California']\n [78389.47 153773.43 299737.29 'New York']\n [73994.56 122782.75 303319.26 'Florida']\n [67532.53 105751.03 304768.73 'Florida']\n [77044.01 99281.34 140574.81 'New York']\n [64664.71 139553.16 137962.62 'California']\n [75328.87 144135.98 134050.07 'Florida']\n [72107.6 127864.55 353183.81 'New York']\n [66051.52 182645.56 118148.2 'Florida']\n [65605.48 153032.06 107138.38 'New York']\n [61994.48 115641.28 91131.24 'Florida']\n [61136.38 152701.92 88218.23 'New York']\n [63408.86 129219.61 46085.25 'California']\n [55493.95 103057.49 214634.81 'Florida']\n [46426.07 157693.92 210797.67 'California']\n [46014.02 85047.44 205517.64 'New York']\n [28663.76 127056.21 201126.82 'Florida']\n [44069.95 51283.14 197029.42 'California']\n [20229.59 65947.93 185265.1 'New York']\n [38558.51 82982.09 174999.3 'California']\n [28754.33 118546.05 172795.67 'California']\n [27892.92 84710.77 164470.71 'Florida']\n [23640.93 96189.63 148001.11 'California']\n [15505.73 127382.3 35534.17 'New York']\n [22177.74 154806.14 28334.72 'California']\n [1000.23 124153.04 1903.93 'New York']\n [1315.46 115816.21 297114.46 'Florida']\n [76793.34958333334 135426.92 224494.78489361703 'California']\n [542.05 51743.15 224494.78489361703 'New York']\n [76793.34958333334 116983.8 45173.06 'California']]\n" + ] + } + ], + "source": [ + "from sklearn.impute import SimpleImputer\n", + "imputer = SimpleImputer(missing_values=0.0, strategy=\"mean\")\n", + "imputer = imputer.fit(X[ : , 0:3])\n", + "X[ : , 0:3] = imputer.transform(X[ : , 0:3])\n", + "print(X)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -89,14 +109,14 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 60, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[[165349.2 136897.8 471784.1 'New York']\n [162597.7 151377.59 443898.53 'California']\n [153441.51 101145.55 407934.54 'Florida']\n [144372.41 118671.85 383199.62 'New York']\n [142107.34 91391.77 366168.42 'Florida']\n [131876.9 99814.71 362861.36 'New York']\n [134615.46 147198.87 127716.82 'California']\n [130298.13 145530.06 323876.68 'Florida']\n [120542.52 148718.95 311613.29 'New York']\n [123334.88 108679.17 304981.62 'California']]\nlabelencoder:\n[[165349.2 136897.8 471784.1 2]\n [162597.7 151377.59 443898.53 0]\n [153441.51 101145.55 407934.54 1]\n [144372.41 118671.85 383199.62 2]\n [142107.34 91391.77 366168.42 1]\n [131876.9 99814.71 362861.36 2]\n [134615.46 147198.87 127716.82 0]\n [130298.13 145530.06 323876.68 1]\n [120542.52 148718.95 311613.29 2]\n [123334.88 108679.17 304981.62 0]]\nonehot:\n[[0.0 0.0 1.0 165349.2 136897.8 471784.1]\n [1.0 0.0 0.0 162597.7 151377.59 443898.53]\n [0.0 1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 0.0 1.0 144372.41 118671.85 383199.62]\n [0.0 1.0 0.0 142107.34 91391.77 366168.42]\n [0.0 0.0 1.0 131876.9 99814.71 362861.36]\n [1.0 0.0 0.0 134615.46 147198.87 127716.82]\n [0.0 1.0 0.0 130298.13 145530.06 323876.68]\n [0.0 0.0 1.0 120542.52 148718.95 311613.29]\n [1.0 0.0 0.0 123334.88 108679.17 304981.62]]\n" + "original:\n[[165349.2 136897.8 471784.1 'New York']\n [162597.7 151377.59 443898.53 'California']\n [153441.51 101145.55 407934.54 'Florida']\n [144372.41 118671.85 383199.62 'New York']\n [142107.34 91391.77 366168.42 'Florida']\n [131876.9 99814.71 362861.36 'New York']\n [134615.46 147198.87 127716.82 'California']\n [130298.13 145530.06 323876.68 'Florida']\n [120542.52 148718.95 311613.29 'New York']\n [123334.88 108679.17 304981.62 'California']]\nlabelencoder:\n[[165349.2 136897.8 471784.1 2]\n [162597.7 151377.59 443898.53 0]\n [153441.51 101145.55 407934.54 1]\n [144372.41 118671.85 383199.62 2]\n [142107.34 91391.77 366168.42 1]\n [131876.9 99814.71 362861.36 2]\n [134615.46 147198.87 127716.82 0]\n [130298.13 145530.06 323876.68 1]\n [120542.52 148718.95 311613.29 2]\n [123334.88 108679.17 304981.62 0]]\nonehot:\n[[0.0 0.0 1.0 165349.2 136897.8 471784.1]\n [1.0 0.0 0.0 162597.7 151377.59 443898.53]\n [0.0 1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 0.0 1.0 144372.41 118671.85 383199.62]\n [0.0 1.0 0.0 142107.34 91391.77 366168.42]\n [0.0 0.0 1.0 131876.9 99814.71 362861.36]\n [1.0 0.0 0.0 134615.46 147198.87 127716.82]\n [0.0 1.0 0.0 130298.13 145530.06 323876.68]\n [0.0 0.0 1.0 120542.52 148718.95 311613.29]\n [1.0 0.0 0.0 123334.88 108679.17 304981.62]]\n" ] } ], @@ -104,13 +124,14 @@ "from sklearn.preprocessing import LabelEncoder, OneHotEncoder\n", "from sklearn.compose import ColumnTransformer \n", "labelencoder = LabelEncoder()\n", + "print(\"original:\")\n", "print(X[:10])\n", "#print(X[: , 3])\n", "X[: , 3] = labelencoder.fit_transform(X[ : , 3])\n", "#print(X[: , 3])\n", "print(\"labelencoder:\")\n", "print(X[:10])\n", - "ct = ColumnTransformer([(\"\", OneHotEncoder(), [3])], remainder = 'passthrough')\n", + "ct = ColumnTransformer([( \"encoder\", OneHotEncoder(), [3])], remainder = 'passthrough')\n", "X = ct.fit_transform(X)\n", "#onehotencoder = OneHotEncoder(categorical_features = [3])\n", "#X = onehotencoder.fit_transform(X).toarray()\n", @@ -135,7 +156,7 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 61, "metadata": {}, "outputs": [], "source": [ @@ -144,19 +165,20 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 62, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[[0.0 1.0 165349.2 136897.8 471784.1]\n [0.0 0.0 162597.7 151377.59 443898.53]\n [1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 1.0 144372.41 118671.85 383199.62]\n [1.0 0.0 142107.34 91391.77 366168.42]\n [0.0 1.0 131876.9 99814.71 362861.36]\n [0.0 0.0 134615.46 147198.87 127716.82]\n [1.0 0.0 130298.13 145530.06 323876.68]\n [0.0 1.0 120542.52 148718.95 311613.29]\n [0.0 0.0 123334.88 108679.17 304981.62]\n [1.0 0.0 101913.08 110594.11 229160.95]\n [0.0 0.0 100671.96 91790.61 249744.55]\n [1.0 0.0 93863.75 127320.38 249839.44]\n [0.0 0.0 91992.39 135495.07 252664.93]\n [1.0 0.0 119943.24 156547.42 256512.92]\n [0.0 1.0 114523.61 122616.84 261776.23]\n [0.0 0.0 78013.11 121597.55 264346.06]\n [0.0 1.0 94657.16 145077.58 282574.31]\n [1.0 0.0 91749.16 114175.79 294919.57]\n [0.0 1.0 86419.7 153514.11 0.0]\n [0.0 0.0 76253.86 113867.3 298664.47]\n [0.0 1.0 78389.47 153773.43 299737.29]\n [1.0 0.0 73994.56 122782.75 303319.26]\n [1.0 0.0 67532.53 105751.03 304768.73]\n [0.0 1.0 77044.01 99281.34 140574.81]\n [0.0 0.0 64664.71 139553.16 137962.62]\n [1.0 0.0 75328.87 144135.98 134050.07]\n [0.0 1.0 72107.6 127864.55 353183.81]\n [1.0 0.0 66051.52 182645.56 118148.2]\n [0.0 1.0 65605.48 153032.06 107138.38]\n [1.0 0.0 61994.48 115641.28 91131.24]\n [0.0 1.0 61136.38 152701.92 88218.23]\n [0.0 0.0 63408.86 129219.61 46085.25]\n [1.0 0.0 55493.95 103057.49 214634.81]\n [0.0 0.0 46426.07 157693.92 210797.67]\n [0.0 1.0 46014.02 85047.44 205517.64]\n [1.0 0.0 28663.76 127056.21 201126.82]\n [0.0 0.0 44069.95 51283.14 197029.42]\n [0.0 1.0 20229.59 65947.93 185265.1]\n [0.0 0.0 38558.51 82982.09 174999.3]\n [0.0 0.0 28754.33 118546.05 172795.67]\n [1.0 0.0 27892.92 84710.77 164470.71]\n [0.0 0.0 23640.93 96189.63 148001.11]\n [0.0 1.0 15505.73 127382.3 35534.17]\n [0.0 0.0 22177.74 154806.14 28334.72]\n [0.0 1.0 1000.23 124153.04 1903.93]\n [1.0 0.0 1315.46 115816.21 297114.46]\n [0.0 0.0 0.0 135426.92 0.0]\n [0.0 1.0 542.05 51743.15 0.0]\n [0.0 0.0 0.0 116983.8 45173.06]]\n" + "[[0.0 1.0 165349.2 136897.8 471784.1]\n [0.0 0.0 162597.7 151377.59 443898.53]\n [1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 1.0 144372.41 118671.85 383199.62]\n [1.0 0.0 142107.34 91391.77 366168.42]\n [0.0 1.0 131876.9 99814.71 362861.36]\n [0.0 0.0 134615.46 147198.87 127716.82]\n [1.0 0.0 130298.13 145530.06 323876.68]\n [0.0 1.0 120542.52 148718.95 311613.29]\n [0.0 0.0 123334.88 108679.17 304981.62]\n [1.0 0.0 101913.08 110594.11 229160.95]\n [0.0 0.0 100671.96 91790.61 249744.55]\n [1.0 0.0 93863.75 127320.38 249839.44]\n [0.0 0.0 91992.39 135495.07 252664.93]\n [1.0 0.0 119943.24 156547.42 256512.92]\n [0.0 1.0 114523.61 122616.84 261776.23]\n [0.0 0.0 78013.11 121597.55 264346.06]\n [0.0 1.0 94657.16 145077.58 282574.31]\n [1.0 0.0 91749.16 114175.79 294919.57]\n [0.0 1.0 86419.7 153514.11 224494.78489361703]\n [0.0 0.0 76253.86 113867.3 298664.47]\n [0.0 1.0 78389.47 153773.43 299737.29]\n [1.0 0.0 73994.56 122782.75 303319.26]\n [1.0 0.0 67532.53 105751.03 304768.73]\n [0.0 1.0 77044.01 99281.34 140574.81]\n [0.0 0.0 64664.71 139553.16 137962.62]\n [1.0 0.0 75328.87 144135.98 134050.07]\n [0.0 1.0 72107.6 127864.55 353183.81]\n [1.0 0.0 66051.52 182645.56 118148.2]\n [0.0 1.0 65605.48 153032.06 107138.38]\n [1.0 0.0 61994.48 115641.28 91131.24]\n [0.0 1.0 61136.38 152701.92 88218.23]\n [0.0 0.0 63408.86 129219.61 46085.25]\n [1.0 0.0 55493.95 103057.49 214634.81]\n [0.0 0.0 46426.07 157693.92 210797.67]\n [0.0 1.0 46014.02 85047.44 205517.64]\n [1.0 0.0 28663.76 127056.21 201126.82]\n [0.0 0.0 44069.95 51283.14 197029.42]\n [0.0 1.0 20229.59 65947.93 185265.1]\n [0.0 0.0 38558.51 82982.09 174999.3]\n [0.0 0.0 28754.33 118546.05 172795.67]\n [1.0 0.0 27892.92 84710.77 164470.71]\n [0.0 0.0 23640.93 96189.63 148001.11]\n [0.0 1.0 15505.73 127382.3 35534.17]\n [0.0 0.0 22177.74 154806.14 28334.72]\n [0.0 1.0 1000.23 124153.04 1903.93]\n [1.0 0.0 1315.46 115816.21 297114.46]\n [0.0 0.0 76793.34958333334 135426.92 224494.78489361703]\n [0.0 1.0 542.05 51743.15 224494.78489361703]\n [0.0 0.0 76793.34958333334 116983.8 45173.06]]\n[[0.0 0.0 1.0 165349.2 136897.8 471784.1]\n [1.0 0.0 0.0 162597.7 151377.59 443898.53]\n [0.0 1.0 0.0 153441.51 101145.55 407934.54]\n [0.0 0.0 1.0 144372.41 118671.85 383199.62]\n [0.0 1.0 0.0 142107.34 91391.77 366168.42]\n [0.0 0.0 1.0 131876.9 99814.71 362861.36]\n [1.0 0.0 0.0 134615.46 147198.87 127716.82]\n [0.0 1.0 0.0 130298.13 145530.06 323876.68]\n [0.0 0.0 1.0 120542.52 148718.95 311613.29]\n [1.0 0.0 0.0 123334.88 108679.17 304981.62]\n [0.0 1.0 0.0 101913.08 110594.11 229160.95]\n [1.0 0.0 0.0 100671.96 91790.61 249744.55]\n [0.0 1.0 0.0 93863.75 127320.38 249839.44]\n [1.0 0.0 0.0 91992.39 135495.07 252664.93]\n [0.0 1.0 0.0 119943.24 156547.42 256512.92]\n [0.0 0.0 1.0 114523.61 122616.84 261776.23]\n [1.0 0.0 0.0 78013.11 121597.55 264346.06]\n [0.0 0.0 1.0 94657.16 145077.58 282574.31]\n [0.0 1.0 0.0 91749.16 114175.79 294919.57]\n [0.0 0.0 1.0 86419.7 153514.11 224494.78489361703]\n [1.0 0.0 0.0 76253.86 113867.3 298664.47]\n [0.0 0.0 1.0 78389.47 153773.43 299737.29]\n [0.0 1.0 0.0 73994.56 122782.75 303319.26]\n [0.0 1.0 0.0 67532.53 105751.03 304768.73]\n [0.0 0.0 1.0 77044.01 99281.34 140574.81]\n [1.0 0.0 0.0 64664.71 139553.16 137962.62]\n [0.0 1.0 0.0 75328.87 144135.98 134050.07]\n [0.0 0.0 1.0 72107.6 127864.55 353183.81]\n [0.0 1.0 0.0 66051.52 182645.56 118148.2]\n [0.0 0.0 1.0 65605.48 153032.06 107138.38]\n [0.0 1.0 0.0 61994.48 115641.28 91131.24]\n [0.0 0.0 1.0 61136.38 152701.92 88218.23]\n [1.0 0.0 0.0 63408.86 129219.61 46085.25]\n [0.0 1.0 0.0 55493.95 103057.49 214634.81]\n [1.0 0.0 0.0 46426.07 157693.92 210797.67]\n [0.0 0.0 1.0 46014.02 85047.44 205517.64]\n [0.0 1.0 0.0 28663.76 127056.21 201126.82]\n [1.0 0.0 0.0 44069.95 51283.14 197029.42]\n [0.0 0.0 1.0 20229.59 65947.93 185265.1]\n [1.0 0.0 0.0 38558.51 82982.09 174999.3]\n [1.0 0.0 0.0 28754.33 118546.05 172795.67]\n [0.0 1.0 0.0 27892.92 84710.77 164470.71]\n [1.0 0.0 0.0 23640.93 96189.63 148001.11]\n [0.0 0.0 1.0 15505.73 127382.3 35534.17]\n [1.0 0.0 0.0 22177.74 154806.14 28334.72]\n [0.0 0.0 1.0 1000.23 124153.04 1903.93]\n [0.0 1.0 0.0 1315.46 115816.21 297114.46]\n [1.0 0.0 0.0 76793.34958333334 135426.92 224494.78489361703]\n [0.0 0.0 1.0 542.05 51743.15 224494.78489361703]\n [1.0 0.0 0.0 76793.34958333334 116983.8 45173.06]]\n" ] } ], "source": [ - "print(X1)" + "print(X1)\n", + "print(X)" ] }, { @@ -168,7 +190,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 63, "metadata": {}, "outputs": [ { @@ -198,7 +220,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 64, "metadata": {}, "outputs": [ { @@ -209,7 +231,7 @@ ] }, "metadata": {}, - "execution_count": 30 + "execution_count": 64 } ], "source": [ @@ -229,7 +251,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 65, "metadata": {}, "outputs": [], "source": [ @@ -239,14 +261,14 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 66, "metadata": {}, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ - "[103015.20159796 132582.27760816 132447.73845174 71976.09851258\n 178537.48221055 116161.24230166 67851.69209676 98791.73374686\n 113969.43533013 167921.06569551]\n[103015.20159796 132582.27760815 132447.73845175 71976.09851258\n 178537.48221056 116161.24230166 67851.69209676 98791.73374687\n 113969.43533013 167921.06569551]\n" + "[102388.94113041 121465.72713517 127340.57708619 71709.47538912\n 174211.0848 121771.65061494 68393.54360668 95588.5313349\n 116596.3467699 162514.07218551]\n[102388.94113046 121465.72713518 127340.57708619 71709.47538916\n 174211.08479987 121771.65061482 68393.5436067 95588.53133498\n 116596.34676982 162514.07218541]\n" ] } ],