Python scikit-learn 做线性回归

时间:2022-04-29
本文章向大家介绍Python scikit-learn 做线性回归,主要内容包括第一步:Python库导入、第二步:数据获取和理解、第三步:数据模型构建——线性回归、第四步:数据模型应用——预测房价、总结、思考环节、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。

线性回归是简单易用的机器学习算法,scikit-learn是python强大的机器学习库。

本篇文章利用线性回归算法预测波士顿的房价。波士顿房价数据集包含波士顿郊区住房价值的信息。

第一步:Python库导入

%matplotlib inlineimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport sklearn

第二步:数据获取和理解

波士顿数据集是scikit-learn的内置数据集,可以直接拿来使用。

from sklearn.datasets import load_bostonboston = load_boston()
print(boston.keys())

dict_keys([‘data’, ‘target’, ‘feature_names’, ‘DESCR’])

print(boston.data.shape)

(506, 13)

print(boston.feature_names)

[‘CRIM’ ‘ZN’ ‘INDUS’ ‘CHAS’ ‘NOX’ ‘RM’ ‘AGE’ ‘DIS’ ‘RAD’ ‘TAX’ ‘PTRATIO’’B’ ‘LSTAT’]

结论:波士顿数据集506个样本,14个特征。

print(boston.DESCR)
bos = pd.DataFrame(boston.data)print(bos.head())
        0     1     2    3      4      5     6       7    8      9     10    0.00632  18.0  2.31  0.0  0.538  6.575  65.2  4.0900  1.0  296.0  15.3   1  0.02731   0.0  7.07  0.0  0.469  6.421  78.9  4.9671  2.0  242.0  17.8   2  0.02729   0.0  7.07  0.0  0.469  7.185  61.1  4.9671  2.0  242.0  17.8   3  0.03237   0.0  2.18  0.0  0.458  6.998  45.8  6.0622  3.0  222.0  18.7   4  0.06905   0.0  2.18  0.0  0.458  7.147  54.2  6.0622  3.0  222.0  18.7          11    12  0  396.90  4.98  1  396.90  9.14  2  392.83  4.03  3  394.63  2.94  4  396.90  5.33  
bos.columns = boston.feature_namesprint(bos.head())
print(boston.target[:5])
bos['PRICE'] = boston.target
bos.head()

第三步:数据模型构建——线性回归

from sklearn.linear_model import LinearRegressionX = bos.drop('PRICE', axis=1)lm = LinearRegression()lm
lm.fit(X, bos.PRICE)
print('线性回归算法w值:', lm.coef_)print('线性回归算法b值: ', lm.intercept_)
import matplotlib.font_manager as fmmyfont = fm.FontProperties(fname='C:/Windows/Fonts/msyh.ttc')plt.scatter(bos.RM, bos.PRICE)plt.xlabel(u'住宅平均房间数', fontproperties=myfont)plt.ylabel(u'房屋价格', fontproperties=myfont)plt.title(u'RM与PRICE的关系', fontproperties=myfont)plt.show()

第四步:数据模型应用——预测房价

lm.predict(X)[0:5]

array([ 30.00821269, 25.0298606 , 30.5702317 , 28.60814055, 27.94288232])

mse = np.mean((bos.PRICE - lm.predict(X)) ** 2)print(mse)
21.897779217687486

总结

1 使用.DESCR探索波士顿数据集,业务目标是预测波士顿郊区住房的房价;

2 使用scikit-learn针对整个数据集拟合线性回归模型,并计算均方误差。

思考环节

1 对数据集分割成训练数据集和测试数据集

2 训练数据集训练线性回归模型,利用线性回归模型对测试数据集进行预测

3 计算训练模型的MSE和测试数据集预测结果的MSE

4 绘制测试数据集的残差图