请到后台主题设置添加
首页 / 二手房买卖

线性回归预测房价(学会scikit-learn)

  说明:这篇就是为了让我们更好的利用scikit-learn做机器学习,现以简单的线性回归为例子了解下如何调用scikit-learn一些基本流程。每一块代码下面我们会进行一些分析。   任务:   基于usa_housing_price.csv数据,建立线性回归模型,预测合理房价:   1、以面积为输入变量,建立单因子模型,评估模型表现,可视化线性回归预测结果   2、以income、house age、numbers of rooms、population、area 为输入变量,建立多因子模型,评估模型表现   3、预测income = 65000,House Age = 5,Number of Rooms=5,Polulation = 30000,size = 200的合理房价   在这里插入图片描述   分析:以上先加载数据集,pandas和numpy是进行数据科学运算的工具包,读取数据我们一般用pd.read_csv,读取后的数据是dataFrame类型,可以用head()查看前五行数据,你也可以查看更多行,head(10)就是查看前10行数据。可以从图表中看到地区平均收入,地区平均房龄,地区平均房屋数,地区人口量,房屋大小这几个特征,Price是房价,也是标签。   在这里插入图片描述   分析:我们拿到数据一般会画图比如散点图来看下特征和标签之间的关系,我们分别画了这5个特征和房价之间的关系,收入,房屋数,人口数,面积大小这四个特征,基本上越大,房价越高,呈上升趋势,而房龄越大房价会越低。   1.我们先单因子研究下算法,只看size和price的关系   结果:   0 1.059034e+06   1 1.505891e+06   2 1.058988e+06   3 1.260617e+06   4 6.309435e+05   Name: Price, dtype: float64   结果:   (5000,)   结果   array([[188.2142121],      [160.0425258],      [227.2735445],     …,     [139.4917852],     [184.845371 ],     [148.5894227]])   分析:以上我们通过dataframe的loc方法取出size特征和标签Price,但是注意,如果要放入scikit-learn中的模型拟合数据的话,特征必须是向量,我们的X显然不是向量,通过numpy.array变换,reshape变换转化成矩阵。   结果:   LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)   结果   [1276881.85636623 1173363.58767144 1420407.32457443 … 1097848.86467426 1264502.88144558 1131278.58816273]   结果:   108771672553.6264 0.1275031240418234   在这里插入图片描述   分析:以上,我们调用了scikit中线性模型中的线性回归,fit就是在拟合数据,做好了训练过程。生成的LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)就是我们的模型!就是这么简单。然后我们对X进行了预测。以上mse我们不太好辨别,数据很大,毕竟是房价,但是r2我们知道越接近1模型效果越好。0.1275显然拟合的模型不好。最后我们通过图形查看拟合情况,更直观。   2.我们用多因子研究下算法,考虑所有的特征。   在这里插入图片描述   结果:   LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False)   分析:以上我们来看多因子拟合模型,说白了,多因子就是把所有特征都用于拟合模型,这时候我们X是dataframe类型,多行多列也算是矩阵,是可以被拟合的,不用做类型变换。因为单因子时X是一维数据,只有size,我们把它转化成矩阵才用fit拟合的,不然会报错,你们可以试验,会报类型错误。   结果   [1223968.89166087 1497306.33188629 1250884.31019438 … 1020693.92390376 1260503.36914585 1302737.79157629]   结果:   10219846512.177862 0.9180229195220739   在这里插入图片描述   分析:以上我们可以看到,通过多因子也就是把所有特征数据都用于拟合模型后,模型的效果好很多,从R2确定系数就能看出,0.918越接近1模型越好。   3.来用测试数据预测下房价   结果:   [[65000 5 5 30000 200]]   结果:   [817052.19516299]   分析:X_test显然不是矩阵也不是dataframe类型,那么变换吧。然后做预测。   数据和代码:https://github.com/Sirow/Linear_Regression   总结:   这个流程很好的让我们学习了用scikit-learn如何进行机器学习实验,大致的框架。调用模型,模型评估,画图。   那我给大家提个问题,为啥用线性回归预测房价?我们的房价是连续值,不是分类,是回归问题。所以我们用线性回归。那为啥用R2来评估呢。因为线性回归模型评估重点就是MSE,SSE,R2确定系数。之后我还会补充更复杂的房租预测,比赛项目。特征很多,过程更复杂,设计特征工程,模型混合。其中官方比赛的评价函数规定用的就是R2。   关于线性回归模型评估我自己总结了一篇大家可以参考:   https://blog.csdn.net/Sirow/article/details/109630056
版权说明:
1.版权归本网站或原作者所有;
2.未经本网或原作者允许不得转载本文内容,否则将视为侵权;
3.转载或者引用本文内容请注明来源及原作者;
4.对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权等。
你可能感兴趣的文章
搜索
最新留言
关注我们
关注我们
微信
关注我们
微博
请到后台主题设置添加

Powered ByZ-Blog.