一、boston房价预测
1. 读取数据集
2. 训练集与测试集划分
3. 线性回归模型:建立13个变量与房价之间的预测模型,并检测模型好坏。
4. 多项式回归模型:建立13个变量与房价之间的预测模型,并检测模型好坏。
from sklearn.datasets import load_boston #导入Boston房价数据集 boston = load_boston() #读取数据集 # boston.keys() #查看key值 x = boston.data y = boston.target #训练集与测试集划分 from sklearn.cross_validation import train_test_split x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.3,random_state=0) #其中 test_size是样本占比,如果是整数的话就是样本的数量; #random_state是随机数的种子,不同的种子会造成不同的随机采样结果,相同的种子采样结果相同。 print(x_train.shape,y_train.shape) #建立一元线性回归模型 from sklearn.linear_model import LinearRegression lr = LinearRegression() lr.fit(x_train,y_train) lr.coef_ #系数 lr.intercept_ #截距 #检测模型好坏 from sklearn.metrics import regression y_pred = lr.predict(x_test) #预测 n = regression.mean_squared_error(y_test,y_pred) #预测模型均方误差 print("线性回归均方误差:",n) a = regression.mean_absolute_error(y_test,y_pred) print("线性回归平均绝对误差",a) s = lr.score(x_test,y_test) #模型分数 print("线性回归模型分数:",s) #多元多项式回归模型 from sklearn.preprocessing import PolynomialFeatures poly= PolynomialFeatures(degree=2) x_poly_train= poly.fit_transform(x_train) #多项式化 x_poly_test = poly.transform(x_test) #建立模型 lr2 = LinearRegression() lr2.fit(x_poly_train,y_train) #预测 y_pred2 = lr2.predict(x_poly_test) #检测模型好坏,计算模型的预测指标 n2 = regression.mean_squared_error(y_test,y_pred2) print("多项式回归均方误差:",n2) a2 = regression.mean_absolute_error(y_test,y_pred2) print("多项式回归平均绝对误差",a2) s2 = lr2.score(x_poly_test,y_test) print("多项式回归模型分数:",s2)
# 用一元线性回归拟合观察效果 lr2 = LinearRegression() lr2.fit(x,y_train) # 建立多项式模型 from sklearn.preprocessing import PolynomialFeatures # 多项式化x x = x_train[:,12].reshape(-1,1) poly= PolynomialFeatures(degree=2) x_poly = poly.fit_transform(x) # 用多项式后的x建立多项式回归模型 lrp = LinearRegression() lrp.fit(x_poly,y_train) # 预测 x_poly2 = poly.transform(x_test[:, 12].reshape(-1,1)) y_ploy_predict = lrp.predict(x_poly2) # 图形化,将元数据,一元拟合,多元拟合进行绘图观察 plt.scatter(x_test[:,12], y_test) plt.plot(x, lr2.coef_* x + lr2.intercept_, 'g') plt.scatter(x_test[:,12], y_ploy_predict, c='r') plt.show()
5、比较线性模型与非线性模型的性能,并说明原因。
如上图可知,非线性模型的性能比较好,因为非线性模型(即多项式回归模型)的曲线比线性模型直线更能契合人口密度与房屋样本的分布状况,而且从上述分析可知多项式回归的误差跟线性回归误差相比较小。
二、中文文本分类