前几天完成了机器学习的第一个基础实战案例,Boston房价预测,今天来分享一下我在学习过程中的心得体会!

  Boston房价预测是机器学习过程中一个关于线性回归的问题,属于监督学习。本文通过对Boston房价进行分析,进行机器学习模型训练。本文所使用的的数据集下载:Boston_housing_predict

  下面给出数据集中各列名称的定义:

CRIM: 城镇人均犯罪率

ZN: 住宅用地所占比例

INDUS: 城镇中非住宅用地所占比例

CHAS: 虚拟变量,用于回归分析

NOX: 环保指数

RM: 每栋住宅的房间数

AGE: 1940 年以前建成的自住单位的比例

DIS: 距离 5 个波士顿的就业中心的加权距离

RAD: 距离高速公路的便利指数

TAX: 每一万美元的不动产税率

PTRATIO: 城镇中的教师学生比例

B: 城镇中的黑人比例

LSTAT: 地区中有多少房东属于低收入人群

MEDV: 房子均价

  首先导入我们要使用的工具包。

import pandas as pd                           
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error

  然后,我们利用pandas工具包里面的函数read_csv()将我们需要分析的数据集导入,并显示数据集中前5行的数据。

data=pd.read_csv(r'C:\Users\Liujiangchuan\Desktop\Work_zone\BostonHousingData.csv')
data.head()

  这里的read_csv()中,由于我是直接复制的文件地址,由于在python中\有转义的含义,如\t代表TAB,\n代表换行,为了让\不被解读为转义字符,有三种解决办法:1路径前加r保持为原生字符串,2替换为双反斜杠,3,替换为单正斜杠。我采取了第一种方法。

  现在我们来简单处理一下数据,我们将数据集的结果‘target’这一列去掉构造X,构造y保存‘target’这一列。

X = data.copy().drop(['target'],axis=1)
y = data['target']

  现在我们可以得到,X就是所有的房价影响因素数据,y就是房价。

  下面我们利用sklearn.model_selection工具包里面的train_test_split对训练和测试数据集进行划分。

#比例为70%(训练)--30%(测试)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3)

  接下来就构建线性回归模型并进行拟合。

lr=LinearRegression()
lr.fit(X_train,y_train)

  最后进行模型预测和对预测结果进行分析。

y_pred=lr.predict(X_test)
print(r2_score(y_test,y_pred))
print(mean_squared_error(y_test,y_pred))

  利用predict函数可以预测所给定的测试数据集所得到的房价,然后用r2_score()函数得到R方值用于评价所得到模型的好坏,R方值越接近1,模型效果越好。最后我们可以通过计算预测值和真实值之间的方差来对预测结果进行评估,均方差(MSE)越小越好。