今日分享:岭回归房价预测、训练模型的保存与加载
一:流程
波士顿地区房价数据获取,数据来自于sklearn自带数据集;
波士顿地区房价数据分割;
训练与测试数据标准化处理;
使用正则化的线性回归-Ridge 岭回归模型对房价进行预测
二:数据集介绍
由于之前已介绍过如何查看自带数据集的各项信息,这里不再赘述,可参考K-近邻:鸢尾花(iris数据集)分类
三:已训练模型的保存与加载
#sklearn中自带的模块
from sklearn.externals import joblib
# 举例
# 保存训练好的模型,格式为pkl文件
joblib.dump(rd, "rd.pkl")
# 加载模型
rd = joblib.load('rd.pkl')
# 具体应用可参考下面的房价预测代码
四:代码演示
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
from sklearn.externals import joblib
注意:在下面的代码中,小编提前运行一遍,以便将rd训练结果保存到本地pkl文件,所以下面只演示通过加载文件来进行回归预测
def mylinear():
'''线性回归预测房子价格'''
#获取数据
lb = load_boston()
# print(lb.data.shape)
#分割数据集到训练集和测试集
x_train,x_test,y_train,y_test = train_test_split(lb.data,lb.target,test_size=0.25)
#线性回归
#特征值和目标值都必须进行标准化处理
#实例标准化
std_x = StandardScaler()
x_train = std_x.fit_transform(x_train)
x_test = std_x.transform(x_test)
#目标值标准化
std_y = StandardScaler()
#需要将一维数组形式的
y_train = std_y.fit_transform(y_train.reshape(-1,1))
y_test = std_y.transform(y_test.reshape(-1,1))
# '''岭回归进行房价预测'''
# rd = Ridge(alpha=1.0)
# rd.fit(x_train, y_train)
# # 保存训练好的模型
# joblib.dump(rd, "rd.pkl")
# print('保存成功')
# 加载已运行一次保存好的模型文件
rd = joblib.load('rd.pkl')
print(rd.coef_)
# 预测测试集的房子价格
y_rd_predict = std_y.inverse_transform(rd.predict(x_test))
# print("岭回归测试集里面每个房子的预测价格:", y_rd_predict)
print("岭回归均方误差:", mean_squared_error(std_y.inverse_transform(y_test), y_rd_predict))
if __name__ == '__main__':
mylinear()
输出结果
[[-0.08647201 0.09927995 0.00135953 0.08665024 -0.23339298 0.27244918
0.03623914 -0.32155484 0.28463043 -0.20056145 -0.21004638 0.07625221
-0.44287302]]
岭回归均方误差: 21.810770452716646
源代码已上传至QQ群,如若需要请加群获取
公众号 QQ群
扫QQ群二维码进交流学习群
或在后台回复:加群