期末大作业

一、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、比较线性模型与非线性模型的性能,并说明原因。

  如上图可知,非线性模型的性能比较好,因为非线性模型(即多项式回归模型)的曲线比线性模型直线更能契合人口密度与房屋样本的分布状况,而且从上述分析可知多项式回归的误差跟线性回归误差相比较小。

二、中文文本分类

猜你喜欢

转载自www.cnblogs.com/Tlzlykc/p/10131831.html