Skip to content

Instantly share code, notes, and snippets.

@Jargon4072
Last active June 24, 2020 07:31
Show Gist options
  • Save Jargon4072/b568d6795e12348f7874156ed4604972 to your computer and use it in GitHub Desktop.
Save Jargon4072/b568d6795e12348f7874156ed4604972 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# scikit-learn Implementation of Linear Regression\n",
"\n",
"sklearn provides predefined function to train and test linear regression. Generally, you will end up using this while doing any real life implementation of ML of in any ML/AI implementations for big projects. Also, it is accurate and gives really good result too. for more information you can visit: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html\n",
"\n",
"\n",
"dataset used is collected from: https://people.sc.fsu.edu/~jburkardt/datasets/regression/x01.txt \n",
"\n",
"csv data can also be found here: https://drive.google.com/file/d/1KCgwg7ZEHDhyhRB7SaTECCI8ybq82Z52/view"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Index</th>\n",
" <th>Brain Weight</th>\n",
" <th>Body Weight</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>3.385</td>\n",
" <td>44.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>0.480</td>\n",
" <td>15.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>1.350</td>\n",
" <td>8.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>465.000</td>\n",
" <td>423.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>36.330</td>\n",
" <td>119.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Index Brain Weight Body Weight\n",
"0 1 3.385 44.5\n",
"1 2 0.480 15.5\n",
"2 3 1.350 8.1\n",
"3 4 465.000 423.0\n",
"4 5 36.330 119.5"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
" \n",
"data = pd.read_csv('./x01.csv')\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Brain Weight</th>\n",
" <th>Body Weight</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3.385</td>\n",
" <td>44.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.480</td>\n",
" <td>15.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.350</td>\n",
" <td>8.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>465.000</td>\n",
" <td>423.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>36.330</td>\n",
" <td>119.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Brain Weight Body Weight\n",
"0 3.385 44.5\n",
"1 0.480 15.5\n",
"2 1.350 8.1\n",
"3 465.000 423.0\n",
"4 36.330 119.5"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data=data.drop(\"Index\",axis=1)\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Brain_weight</th>\n",
" <th>Body_weight</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>3.385</td>\n",
" <td>44.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.480</td>\n",
" <td>15.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1.350</td>\n",
" <td>8.1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>465.000</td>\n",
" <td>423.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>36.330</td>\n",
" <td>119.5</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Brain_weight Body_weight\n",
"0 3.385 44.5\n",
"1 0.480 15.5\n",
"2 1.350 8.1\n",
"3 465.000 423.0\n",
"4 36.330 119.5"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.columns=[\"Brain_weight\",\"Body_weight\"]\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [],
"source": [
"X=data[[\"Brain_weight\"]]\n",
"y=data[\"Body_weight\"]"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import train_test_split \n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=1/5, random_state=0)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.linear_model import LinearRegression\n",
"regressor = LinearRegression()\n",
"\n",
"regressor.fit(X_train, y_train)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Visualizing the Training set results\n",
"import matplotlib.pyplot as plt\n",
"viz_train = plt\n",
"viz_train.scatter(X_train, y_train, color='red')\n",
"viz_train.plot(X_train, regressor.predict(X_train), color='blue')\n",
"viz_train.title('Brain wt VS Body wt (Training set)')\n",
"viz_train.xlabel('Brain wt')\n",
"viz_train.ylabel('Body wt.')\n",
"viz_train.show()\n",
"\n",
"# Visualizing the Test set results\n",
"viz_test = plt\n",
"viz_test.scatter(X_test, y_test, color='red')\n",
"viz_test.plot(X_test, regressor.predict(X_test), color='blue')\n",
"viz_test.title('Brain wt VS Body wt (test set)')\n",
"viz_test.xlabel('Brain wt')\n",
"viz_test.ylabel('Body wt.')\n",
"viz_test.show()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"53.77468951989611\n"
]
}
],
"source": [
"from sklearn import metrics\n",
"print(metrics.mean_absolute_error(y_test, regressor.predict(X_test)))"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"4145.728385112109\n"
]
}
],
"source": [
"print(metrics.mean_squared_error(y_test, regressor.predict(X_test)))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"print(np.sqrt(metrics.mean_absolute_error(y_test, hx)))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.7.4"
}
},
"nbformat": 4,
"nbformat_minor": 4
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment