ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

用线性回归简单预测波士顿房价

2019-03-03 20:44:45  阅读:251  来源: 互联网

标签:pre target boston 回归 print test 线性 波士顿 sum


这次我们会用线性回归来预测波士顿的房价

首先是导入波士顿房价的数据,这是sklearn中的datasets自带的

from sklearn import datasets
boston = datasets.load_boston()

先用key方法查看数据集

print(boston.keys())

得到结果

dict_keys(['data', 'target', 'feature_names', 'DESCR'])

这里的data有13个维度,target就是我们要预测的房价,接下来再查看feature_names

print(boston['feature_names'])
['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO' 'B' 'LSTAT']

其中'RM'列就是我们需要的房间数,接下为了方便处理,我们将其转为DataFrame类型,并进行数据划分得到训练集和测试集

data = pd.DataFrame(boston['data'],columns=boston['feature_names'])
x = pd.DataFrame(data['RM'],columns=['RM'])
y = pd.DataFrame(boston['target'],columns=['target'])
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.33, random_state=42)

接下来训练线性回归模型,并进行预测

lr = LinearRegression()
lr.fit(x_train,y_train)
y_pre = lr.predict(x_test)

为了评价模型的好坏,我们将从以下的均方误差(MSE),均方根误差(RMSE),平均绝对误差(MAE),R Squared

from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error 
from sklearn.metrics import mean_absolute_error 
print(r2_score(y_test,y_pre))
print(mean_absolute_error(y_test,y_pre))
print(mean_squared_error(y_test,y_pre))

结果为

0.4834590168919489
4.271512885857222
39.09105111486995

下面用python实现这四种评价指标

def MSE(y_test,y_pre):
    print(((y_test - y_pre)**2).sum() / len(y_pre))
def RMSE(y_test,y_pre):
    print((((y_test - y_pre)**2).sum() / len(y_pre))**0.5)
def MAE(y_test,y_pre):
    y1 = np.array(y_test)
    y2 = np.array(y_pre)
    print(np.sum(np.absolute(y1 - y2))/len(y1))
def r2_score_(y_test,y_pre):
    print(1 - ((y_test - y_pre)**2).sum() / ((y_test - y_test.mean())**2).sum())

MSE(y_test,y_pre)
MAE(y_test,y_pre)
r2_score_(y_test,y_pre)

结果为

target    39.091051
dtype: float64
4.271512885857222
target    0.483459
dtype: float64

 

标签:pre,target,boston,回归,print,test,线性,波士顿,sum
来源: https://www.cnblogs.com/mambakb/p/10467383.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有