Upload Predicting Housing Prices with Ridge Regression.ipynb
Browse files1/20. In the world of data science and machine learning, predicting housing prices is a classic problem. we'll walk through the process of building a predictive model using Ridge Regression, a linear regression technique with a twist. We'll be working with the Boston Housing Prices dataset, a popular choice for regression tasks. Let's dive in!
Kindly check the Image and the possible output you should have.
Mean Squared Error: 21.00
R-Squared (R2) Score: 0.72
Best Apha: 10.00
Little interpretation:
- Since the points clustered closely around the ideal line, it indicate a perfect match between the actual and predicted value.
- The r2 core at 0.72 (approximately 72%) indicate that the model captures a substantial portion of the variance of housing price. we may say, the model is reasonably effective at explaining the relationships between the input feature and housing prices but need a further refinement.
- The MSE of 21 suggests that, on the average, the model's predictions have a moderate squared error. A lower MSE indicates that the model's predictions are closer to the actual values, which means a better model performance vice versa
This code is relevant for Real Estate Investment, Homebuyers, Economic Indicator and sundry
@@ -0,0 +1,333 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"cells": [
|
3 |
+
{
|
4 |
+
"cell_type": "code",
|
5 |
+
"execution_count": 20,
|
6 |
+
"id": "a4c7c573",
|
7 |
+
"metadata": {
|
8 |
+
"collapsed": true
|
9 |
+
},
|
10 |
+
"outputs": [
|
11 |
+
{
|
12 |
+
"name": "stdout",
|
13 |
+
"output_type": "stream",
|
14 |
+
"text": [
|
15 |
+
".. _boston_dataset:\n",
|
16 |
+
"\n",
|
17 |
+
"Boston house prices dataset\n",
|
18 |
+
"---------------------------\n",
|
19 |
+
"\n",
|
20 |
+
"**Data Set Characteristics:** \n",
|
21 |
+
"\n",
|
22 |
+
" :Number of Instances: 506 \n",
|
23 |
+
"\n",
|
24 |
+
" :Number of Attributes: 13 numeric/categorical predictive. Median Value (attribute 14) is usually the target.\n",
|
25 |
+
"\n",
|
26 |
+
" :Attribute Information (in order):\n",
|
27 |
+
" - CRIM per capita crime rate by town\n",
|
28 |
+
" - ZN proportion of residential land zoned for lots over 25,000 sq.ft.\n",
|
29 |
+
" - INDUS proportion of non-retail business acres per town\n",
|
30 |
+
" - CHAS Charles River dummy variable (= 1 if tract bounds river; 0 otherwise)\n",
|
31 |
+
" - NOX nitric oxides concentration (parts per 10 million)\n",
|
32 |
+
" - RM average number of rooms per dwelling\n",
|
33 |
+
" - AGE proportion of owner-occupied units built prior to 1940\n",
|
34 |
+
" - DIS weighted distances to five Boston employment centres\n",
|
35 |
+
" - RAD index of accessibility to radial highways\n",
|
36 |
+
" - TAX full-value property-tax rate per $10,000\n",
|
37 |
+
" - PTRATIO pupil-teacher ratio by town\n",
|
38 |
+
" - B 1000(Bk - 0.63)^2 where Bk is the proportion of black people by town\n",
|
39 |
+
" - LSTAT % lower status of the population\n",
|
40 |
+
" - MEDV Median value of owner-occupied homes in $1000's\n",
|
41 |
+
"\n",
|
42 |
+
" :Missing Attribute Values: None\n",
|
43 |
+
"\n",
|
44 |
+
" :Creator: Harrison, D. and Rubinfeld, D.L.\n",
|
45 |
+
"\n",
|
46 |
+
"This is a copy of UCI ML housing dataset.\n",
|
47 |
+
"https://archive.ics.uci.edu/ml/machine-learning-databases/housing/\n",
|
48 |
+
"\n",
|
49 |
+
"\n",
|
50 |
+
"This dataset was taken from the StatLib library which is maintained at Carnegie Mellon University.\n",
|
51 |
+
"\n",
|
52 |
+
"The Boston house-price data of Harrison, D. and Rubinfeld, D.L. 'Hedonic\n",
|
53 |
+
"prices and the demand for clean air', J. Environ. Economics & Management,\n",
|
54 |
+
"vol.5, 81-102, 1978. Used in Belsley, Kuh & Welsch, 'Regression diagnostics\n",
|
55 |
+
"...', Wiley, 1980. N.B. Various transformations are used in the table on\n",
|
56 |
+
"pages 244-261 of the latter.\n",
|
57 |
+
"\n",
|
58 |
+
"The Boston house-price data has been used in many machine learning papers that address regression\n",
|
59 |
+
"problems. \n",
|
60 |
+
" \n",
|
61 |
+
".. topic:: References\n",
|
62 |
+
"\n",
|
63 |
+
" - Belsley, Kuh & Welsch, 'Regression diagnostics: Identifying Influential Data and Sources of Collinearity', Wiley, 1980. 244-261.\n",
|
64 |
+
" - Quinlan,R. (1993). Combining Instance-Based and Model-Based Learning. In Proceedings on the Tenth International Conference of Machine Learning, 236-243, University of Massachusetts, Amherst. Morgan Kaufmann.\n",
|
65 |
+
"\n",
|
66 |
+
"['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO'\n",
|
67 |
+
" 'B' 'LSTAT']\n",
|
68 |
+
"[24. 21.6 34.7 33.4 36.2 28.7 22.9 27.1 16.5 18.9 15. 18.9 21.7 20.4\n",
|
69 |
+
" 18.2 19.9 23.1 17.5 20.2 18.2 13.6 19.6 15.2 14.5 15.6 13.9 16.6 14.8\n",
|
70 |
+
" 18.4 21. 12.7 14.5 13.2 13.1 13.5 18.9 20. 21. 24.7 30.8 34.9 26.6\n",
|
71 |
+
" 25.3 24.7 21.2 19.3 20. 16.6 14.4 19.4 19.7 20.5 25. 23.4 18.9 35.4\n",
|
72 |
+
" 24.7 31.6 23.3 19.6 18.7 16. 22.2 25. 33. 23.5 19.4 22. 17.4 20.9\n",
|
73 |
+
" 24.2 21.7 22.8 23.4 24.1 21.4 20. 20.8 21.2 20.3 28. 23.9 24.8 22.9\n",
|
74 |
+
" 23.9 26.6 22.5 22.2 23.6 28.7 22.6 22. 22.9 25. 20.6 28.4 21.4 38.7\n",
|
75 |
+
" 43.8 33.2 27.5 26.5 18.6 19.3 20.1 19.5 19.5 20.4 19.8 19.4 21.7 22.8\n",
|
76 |
+
" 18.8 18.7 18.5 18.3 21.2 19.2 20.4 19.3 22. 20.3 20.5 17.3 18.8 21.4\n",
|
77 |
+
" 15.7 16.2 18. 14.3 19.2 19.6 23. 18.4 15.6 18.1 17.4 17.1 13.3 17.8\n",
|
78 |
+
" 14. 14.4 13.4 15.6 11.8 13.8 15.6 14.6 17.8 15.4 21.5 19.6 15.3 19.4\n",
|
79 |
+
" 17. 15.6 13.1 41.3 24.3 23.3 27. 50. 50. 50. 22.7 25. 50. 23.8\n",
|
80 |
+
" 23.8 22.3 17.4 19.1 23.1 23.6 22.6 29.4 23.2 24.6 29.9 37.2 39.8 36.2\n",
|
81 |
+
" 37.9 32.5 26.4 29.6 50. 32. 29.8 34.9 37. 30.5 36.4 31.1 29.1 50.\n",
|
82 |
+
" 33.3 30.3 34.6 34.9 32.9 24.1 42.3 48.5 50. 22.6 24.4 22.5 24.4 20.\n",
|
83 |
+
" 21.7 19.3 22.4 28.1 23.7 25. 23.3 28.7 21.5 23. 26.7 21.7 27.5 30.1\n",
|
84 |
+
" 44.8 50. 37.6 31.6 46.7 31.5 24.3 31.7 41.7 48.3 29. 24. 25.1 31.5\n",
|
85 |
+
" 23.7 23.3 22. 20.1 22.2 23.7 17.6 18.5 24.3 20.5 24.5 26.2 24.4 24.8\n",
|
86 |
+
" 29.6 42.8 21.9 20.9 44. 50. 36. 30.1 33.8 43.1 48.8 31. 36.5 22.8\n",
|
87 |
+
" 30.7 50. 43.5 20.7 21.1 25.2 24.4 35.2 32.4 32. 33.2 33.1 29.1 35.1\n",
|
88 |
+
" 45.4 35.4 46. 50. 32.2 22. 20.1 23.2 22.3 24.8 28.5 37.3 27.9 23.9\n",
|
89 |
+
" 21.7 28.6 27.1 20.3 22.5 29. 24.8 22. 26.4 33.1 36.1 28.4 33.4 28.2\n",
|
90 |
+
" 22.8 20.3 16.1 22.1 19.4 21.6 23.8 16.2 17.8 19.8 23.1 21. 23.8 23.1\n",
|
91 |
+
" 20.4 18.5 25. 24.6 23. 22.2 19.3 22.6 19.8 17.1 19.4 22.2 20.7 21.1\n",
|
92 |
+
" 19.5 18.5 20.6 19. 18.7 32.7 16.5 23.9 31.2 17.5 17.2 23.1 24.5 26.6\n",
|
93 |
+
" 22.9 24.1 18.6 30.1 18.2 20.6 17.8 21.7 22.7 22.6 25. 19.9 20.8 16.8\n",
|
94 |
+
" 21.9 27.5 21.9 23.1 50. 50. 50. 50. 50. 13.8 13.8 15. 13.9 13.3\n",
|
95 |
+
" 13.1 10.2 10.4 10.9 11.3 12.3 8.8 7.2 10.5 7.4 10.2 11.5 15.1 23.2\n",
|
96 |
+
" 9.7 13.8 12.7 13.1 12.5 8.5 5. 6.3 5.6 7.2 12.1 8.3 8.5 5.\n",
|
97 |
+
" 11.9 27.9 17.2 27.5 15. 17.2 17.9 16.3 7. 7.2 7.5 10.4 8.8 8.4\n",
|
98 |
+
" 16.7 14.2 20.8 13.4 11.7 8.3 10.2 10.9 11. 9.5 14.5 14.1 16.1 14.3\n",
|
99 |
+
" 11.7 13.4 9.6 8.7 8.4 12.8 10.5 17.1 18.4 15.4 10.8 11.8 14.9 12.6\n",
|
100 |
+
" 14.1 13. 13.4 15.2 16.1 17.8 14.9 14.1 12.7 13.5 14.9 20. 16.4 17.7\n",
|
101 |
+
" 19.5 20.2 21.4 19.9 19. 19.1 19.1 20.1 19.9 19.6 23.2 29.8 13.8 13.3\n",
|
102 |
+
" 16.7 12. 14.6 21.4 23. 23.7 25. 21.8 20.6 21.2 19.1 20.6 15.2 7.\n",
|
103 |
+
" 8.1 13.6 20.1 21.8 24.5 23.1 19.7 18.3 21.2 17.5 16.8 22.4 20.6 23.9\n",
|
104 |
+
" 22. 11.9]\n"
|
105 |
+
]
|
106 |
+
},
|
107 |
+
{
|
108 |
+
"name": "stderr",
|
109 |
+
"output_type": "stream",
|
110 |
+
"text": [
|
111 |
+
"C:\\Users\\User\\anaconda3\\lib\\site-packages\\sklearn\\utils\\deprecation.py:87: FutureWarning: Function load_boston is deprecated; `load_boston` is deprecated in 1.0 and will be removed in 1.2.\n",
|
112 |
+
"\n",
|
113 |
+
" The Boston housing prices dataset has an ethical problem. You can refer to\n",
|
114 |
+
" the documentation of this function for further details.\n",
|
115 |
+
"\n",
|
116 |
+
" The scikit-learn maintainers therefore strongly discourage the use of this\n",
|
117 |
+
" dataset unless the purpose of the code is to study and educate about\n",
|
118 |
+
" ethical issues in data science and machine learning.\n",
|
119 |
+
"\n",
|
120 |
+
" In this special case, you can fetch the dataset from the original\n",
|
121 |
+
" source::\n",
|
122 |
+
"\n",
|
123 |
+
" import pandas as pd\n",
|
124 |
+
" import numpy as np\n",
|
125 |
+
"\n",
|
126 |
+
"\n",
|
127 |
+
" data_url = \"http://lib.stat.cmu.edu/datasets/boston\"\n",
|
128 |
+
" raw_df = pd.read_csv(data_url, sep=\"\\s+\", skiprows=22, header=None)\n",
|
129 |
+
" data = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])\n",
|
130 |
+
" target = raw_df.values[1::2, 2]\n",
|
131 |
+
"\n",
|
132 |
+
" Alternative datasets include the California housing dataset (i.e.\n",
|
133 |
+
" :func:`~sklearn.datasets.fetch_california_housing`) and the Ames housing\n",
|
134 |
+
" dataset. You can load the datasets as follows::\n",
|
135 |
+
"\n",
|
136 |
+
" from sklearn.datasets import fetch_california_housing\n",
|
137 |
+
" housing = fetch_california_housing()\n",
|
138 |
+
"\n",
|
139 |
+
" for the California housing dataset and::\n",
|
140 |
+
"\n",
|
141 |
+
" from sklearn.datasets import fetch_openml\n",
|
142 |
+
" housing = fetch_openml(name=\"house_prices\", as_frame=True)\n",
|
143 |
+
"\n",
|
144 |
+
" for the Ames housing dataset.\n",
|
145 |
+
" \n",
|
146 |
+
" warnings.warn(msg, category=FutureWarning)\n"
|
147 |
+
]
|
148 |
+
}
|
149 |
+
],
|
150 |
+
"source": [
|
151 |
+
"# Import these packages\n",
|
152 |
+
"\n",
|
153 |
+
"import numpy as np\n",
|
154 |
+
"import pandas as pd\n",
|
155 |
+
"import matplotlib.pyplot as plt\n",
|
156 |
+
"from sklearn.datasets import load_boston\n",
|
157 |
+
"from sklearn.model_selection import train_test_split, GridSearchCV\n",
|
158 |
+
"from sklearn.linear_model import Ridge\n",
|
159 |
+
"from sklearn.preprocessing import StandardScaler\n",
|
160 |
+
"from sklearn.metrics import mean_squared_error, r2_score\n",
|
161 |
+
"\n",
|
162 |
+
"# We load our Boston Housing Prices dataset (sklearn dataset)\n",
|
163 |
+
"boston = load_boston()\n",
|
164 |
+
"print(boston.DESCR) # for dataset decription\n",
|
165 |
+
"print(boston.feature_names) # feature names\n",
|
166 |
+
"print(boston.target) # target"
|
167 |
+
]
|
168 |
+
},
|
169 |
+
{
|
170 |
+
"cell_type": "code",
|
171 |
+
"execution_count": 12,
|
172 |
+
"id": "7a0f2102",
|
173 |
+
"metadata": {},
|
174 |
+
"outputs": [
|
175 |
+
{
|
176 |
+
"data": {
|
177 |
+
"image/png": "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DB06FN999x0++ugjdO3aFdevX8cnn3yCffv24cSJE/D09MTmzZvx1VdfYcWKFcquI39/f63nBV7+T1rRzTR16lTIZDJ0795decy9e/cQGhqKzMxMfPrpp6hUqRK2bduGcePG4erVq/j6668BAD/99BOGDRuG4cOHY/78+bCxscGVK1cQHx8PQN5VN2fOHEyePBlfffWVsuVHkUyb6v1UyHtzVLwfeV28eBGhoaEoV64cvvjiC3h4eOCHH35A//79cffuXUyYMEGn6yk8ffoUYWFhCAwMxFdffQVvb28kJSUhJiYGT548KfD5kydPRvPmzbF8+XKkpqbi448/xuuvv44LFy7A1tYWADBlyhRERUXhgw8+QHh4OG7duoX3338fL168UPmd1ceLFy9w48aNfC2UX3zxBapWrYr58+fD1dVVY7fz6dOn8eqrr8LT0xMzZ85EcHAwEhMTsXXrVmRmZkImkyEpKQmNGzeGjY0Npk2bhqCgIBw5cgSzZs3C9evXsWrVKgAFf9aokASVSKtWrRIARFxcnMZjEhISBACxatUq5bbp06cLAGLevHkqxw4bNkw4ODiInJwcIYQQR44cEQDEggULVI67deuWcHR0FBMmTFB7zZycHPHixQtx48YNAUD8+uuv+a49bdo0nV5jTEyMACA2bNggXrx4IZ49eyYOHTokqlWrJmrUqCEePXqkPLZjx47C399fpKSkqJzjo48+Eg4ODuLhw4dCCCHGjx8vJEkS58+fVzmuY8eOAoCIiYlRbmvVqpUAIPbs2aNybFRUlLCxscn33v/yyy8CgPj999+FEELMnz9fABCPHz/W+Bq7du0q6tWrp/V9UPysExIShBBCPHr0SDg6OorOnTurHHfz5k0hk8lE7969ldsiIiIEAPHzzz+rHNu5c2dRrVo1rde9cOGCACCGDRumsv2vv/4SAMTkyZOV2xQ/23v37mk9Z+5j8z5cXV1FdHS0yrETJ04UAMRff/2lsn3o0KFCkiRx8eJFIYT851ymTBmt1924cWO+n7EQpns/hXj5mdL2mD59uvL4d999V8hkMnHz5k2V83Tq1Ek4OTkpP1t5PyMKit8hxWs+duyYACC2bNmiNc6KFSuKiIiIfOfJ+x79/PPPAoA4cuSIEEKIhw8fCplMJnr27KlynOLvSatWrQp4h+TX7ty5s3jx4oV48eKFSEhI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\n",
|
178 |
+
"text/plain": [
|
179 |
+
"<Figure size 640x480 with 1 Axes>"
|
180 |
+
]
|
181 |
+
},
|
182 |
+
"metadata": {},
|
183 |
+
"output_type": "display_data"
|
184 |
+
},
|
185 |
+
{
|
186 |
+
"name": "stdout",
|
187 |
+
"output_type": "stream",
|
188 |
+
"text": [
|
189 |
+
"Mean Squared Error: 46.14\n",
|
190 |
+
"R-Squared (R2) Score: 0.37\n"
|
191 |
+
]
|
192 |
+
}
|
193 |
+
],
|
194 |
+
"source": [
|
195 |
+
"# Let's load the Boston Housing Prices dataset\n",
|
196 |
+
"X = boston.data[:, np.newaxis, 5] # we focus on a single feature (average number of rooms per dwelling) \n",
|
197 |
+
"y = boston.target # Target varible (housing prices)\n",
|
198 |
+
"\n",
|
199 |
+
"# We proceed by splitting the data into training and testing sets\n",
|
200 |
+
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
|
201 |
+
"\n",
|
202 |
+
"# Let's create and train linear regression model\n",
|
203 |
+
"model = LinearRegression()\n",
|
204 |
+
"model.fit(X_train, y_train)\n",
|
205 |
+
"\n",
|
206 |
+
"# We can proceed to make predictions using the trained model\n",
|
207 |
+
"y_pred = model.predict(X_test)\n",
|
208 |
+
"\n",
|
209 |
+
"# Let's calculate the performance of the matrics\n",
|
210 |
+
"mse = mean_squared_error(y_test, y_pred)\n",
|
211 |
+
"r2 = r2_score(y_test, y_pred)\n",
|
212 |
+
"\n",
|
213 |
+
"\n",
|
214 |
+
"# let's visualize the results using matplotlib\n",
|
215 |
+
"plt.scatter(X_test, y_test, color='blue', label='Actual Data')\n",
|
216 |
+
"plt.plot(X_test, y_pred, color='red', linewidth=2, label='Linear Regression')\n",
|
217 |
+
"plt.xlabel(\"Average Number of Room\")\n",
|
218 |
+
"plt.ylabel(\"Median Home Value ($1000s)\")\n",
|
219 |
+
"plt.title(\"Linear Regression of Boston Housing Prices\")\n",
|
220 |
+
"plt.legend()\n",
|
221 |
+
"plt.show()\n",
|
222 |
+
"\n",
|
223 |
+
"# Lastly let's print performance metrics\n",
|
224 |
+
"print(f\"Mean Squared Error: {mse:.2f}\")\n",
|
225 |
+
"print(f\"R-Squared (R2) Score: {r2:.2f}\")\n",
|
226 |
+
"\n"
|
227 |
+
]
|
228 |
+
},
|
229 |
+
{
|
230 |
+
"cell_type": "code",
|
231 |
+
"execution_count": 28,
|
232 |
+
"id": "ab14e112",
|
233 |
+
"metadata": {},
|
234 |
+
"outputs": [
|
235 |
+
{
|
236 |
+
"data": {
|
237 |
+
"image/png": "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+/btEwDEkiVLTG5LSkoSSUlJJseHDBki6tSpY/Exi4uLxd27d8V7770nqlevLkpKSqw+prnnbtSokbh79664e/euuHTpkpgwYYIAIP7xj38YzgMgtFqtuH79usljABCTJ082/F/K+5GcnCy8vLzEvn37jI5///33AoD45ZdfhBBCfPTRRwKAyM7Otvpayrp27Zrw8/MTb731ltHxp556SkRERIi7d+8KIYQYPXq0qFq1qqzHrkhl38/HHntM1K5dW+Tk5BgdHz16tAgICDCcP378eKHRaERqaqrReV26dBEAxNatWw3Hyn8f7dixQwAQb7/9doWvpVGjRma/h6Reuw0bNggAYs6cOUbnffDBBybfM+akp6cLAGLGjBni7t27oqCgQBw4cEA89NBDAoD4+eefhRBCLFmyRAAQzz77rMlj6G9LT08XQpT+DIeGhop27doZ/byU16BBA9G8eXPD94ler169RGRkpCguLhZCCJGQkCD69u1b4esg98VhJlKFRYsWITAwEP379wcAVKlSBf/4xz/w22+/4fTp04bzNmzYgI4dO6Jhw4YOb9OWLVvQuXNnaLVaeHt7w9fXF5MmTUJWVhauXLli02MeP34cvr6+8PX1RVRUFD7++GMMHDgQCxcuNDqvU6dORj0Llkh5P3766SckJCSgWbNmKCoqMnw99thjRqtx9MNzTz31FL799ltcvHhR0muqXr06evfujWXLlhlWEd24cQPr16/Hs88+Cx+f0g7iVq1aITs7G8888wzWr1+Pa9euSXr8itj6fhYUFODXX3/F//3f/yEoKMjofenRowcKCgqwZ88eAKU9B40aNULTpk2NHnPAgAFW27dhwwYAwKhRo2x6fVKv3datWwEAAwcOlN3GssaPHw9fX18EBATgwQcfxF9//YUvvvgCPXr0MDrviSeesPpYu3fvRm5uLkaOHAmNRmP2nDNnzuCPP/4wtLv8dcjIyMDJkycBlH7/bNiwARMmTMC2bdscNu+JlIlhhhTvzJkz2LFjB3r27AkhBLKzs5GdnY0nn3wSwL0VTgBw9epVp0yA3bt3L7p27QoAWLhwIXbt2oV9+/bh7bffBgCbf5HWq1cP+/btw/79+3Hs2DFkZ2djxYoV0Gq1RudJXREi5f24fPkyjhw5YvjQ13+FhIRACGEIFe3bt8e6detQVFSEZ599FrVr10ZC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\n",
|
238 |
+
"text/plain": [
|
239 |
+
"<Figure size 640x480 with 1 Axes>"
|
240 |
+
]
|
241 |
+
},
|
242 |
+
"metadata": {},
|
243 |
+
"output_type": "display_data"
|
244 |
+
},
|
245 |
+
{
|
246 |
+
"name": "stdout",
|
247 |
+
"output_type": "stream",
|
248 |
+
"text": [
|
249 |
+
"Mean Squared Error: 21.00\n",
|
250 |
+
"R-Squared (R2) Score: 0.72\n",
|
251 |
+
"Best Apha: 10.00\n"
|
252 |
+
]
|
253 |
+
}
|
254 |
+
],
|
255 |
+
"source": [
|
256 |
+
"# Let's load the Boston Housing Prices dataset\n",
|
257 |
+
"X = boston.data # feature\n",
|
258 |
+
"y = boston.target # Target varible (housing prices)\n",
|
259 |
+
"\n",
|
260 |
+
"# We proceed by splitting the data into training and testing sets\n",
|
261 |
+
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)\n",
|
262 |
+
"\n",
|
263 |
+
"# The standardize features\n",
|
264 |
+
"scaler = StandardScaler()\n",
|
265 |
+
"X_train = scaler.fit_transform(X_train)\n",
|
266 |
+
"X_test = scaler.transform(X_test)\n",
|
267 |
+
"\n",
|
268 |
+
"# Let's create and train a Ridge regression model with hyperparameter\n",
|
269 |
+
"param_grid = {'alpha': [0.1,1.0,10.0]}\n",
|
270 |
+
"ridge = Ridge()\n",
|
271 |
+
"grid_search = GridSearchCV(ridge, param_grid, cv=5)\n",
|
272 |
+
"grid_search.fit(X_train, y_train)\n",
|
273 |
+
"best_alpha = grid_search.best_params_['alpha']\n",
|
274 |
+
"\n",
|
275 |
+
"#train the Ridge model with the best alpha\n",
|
276 |
+
"model = Ridge(alpha=best_alpha)\n",
|
277 |
+
"model.fit(X_train, y_train)\n",
|
278 |
+
"\n",
|
279 |
+
"\n",
|
280 |
+
"# We can proceed to make predictions using the trained model\n",
|
281 |
+
"y_pred = model.predict(X_test)\n",
|
282 |
+
"\n",
|
283 |
+
"# Let's calculate the performance of the matrics\n",
|
284 |
+
"mse = mean_squared_error(y_test, y_pred)\n",
|
285 |
+
"r2 = r2_score(y_test, y_pred)\n",
|
286 |
+
"\n",
|
287 |
+
"\n",
|
288 |
+
"# let's visualize the results using matplotlib\n",
|
289 |
+
"plt.scatter(y_test, y_pred)\n",
|
290 |
+
"#plt.plot(X_test, y_pred, color='red', linewidth=2, label='Linear Regression')\n",
|
291 |
+
"plt.xlabel(\"Actual Prices\")\n",
|
292 |
+
"plt.ylabel(\"Predicted Prices\")\n",
|
293 |
+
"plt.title(\"Actual Prices vs. Predicted Prices\")\n",
|
294 |
+
"plt.show()\n",
|
295 |
+
"\n",
|
296 |
+
"# Lastly let's print performance metrics\n",
|
297 |
+
"print(f\"Mean Squared Error: {mse:.2f}\")\n",
|
298 |
+
"print(f\"R-Squared (R2) Score: {r2:.2f}\")\n",
|
299 |
+
"print(f\"Best Apha: {best_alpha:.2f}\")\n",
|
300 |
+
"\n"
|
301 |
+
]
|
302 |
+
},
|
303 |
+
{
|
304 |
+
"cell_type": "code",
|
305 |
+
"execution_count": null,
|
306 |
+
"id": "127f1c24",
|
307 |
+
"metadata": {},
|
308 |
+
"outputs": [],
|
309 |
+
"source": []
|
310 |
+
}
|
311 |
+
],
|
312 |
+
"metadata": {
|
313 |
+
"kernelspec": {
|
314 |
+
"display_name": "Python 3 (ipykernel)",
|
315 |
+
"language": "python",
|
316 |
+
"name": "python3"
|
317 |
+
},
|
318 |
+
"language_info": {
|
319 |
+
"codemirror_mode": {
|
320 |
+
"name": "ipython",
|
321 |
+
"version": 3
|
322 |
+
},
|
323 |
+
"file_extension": ".py",
|
324 |
+
"mimetype": "text/x-python",
|
325 |
+
"name": "python",
|
326 |
+
"nbconvert_exporter": "python",
|
327 |
+
"pygments_lexer": "ipython3",
|
328 |
+
"version": "3.9.13"
|
329 |
+
}
|
330 |
+
},
|
331 |
+
"nbformat": 4,
|
332 |
+
"nbformat_minor": 5
|
333 |
+
}
|