使用sklearn 里面的datasets 内置数据集波士顿的房价 来测试这个模型
首先导入
from sklearn import datasets
loaded_data = datasets.load_boston()#波士顿房价预测
data_x = loaded_data.data
data_y = loaded_data.target
然后使用打出来的数据观察数据类型,确定数据的的测试集训练集
# print(loaded_data)
# print(data_x)
# print(data_y)
# print(data_x.shape)
# print(data_y.shape)
#可以看出有13个特征值 506个样本一个标签预测值
导入sklearn里面的linearRegression模型,并且划分测试集训练集,建立模型
在这里from sklearn import model_selection
x_train,x_test,y_train,y_test=model_selection.train_test_split(data_x,data_y,test_size=0.25)
from sklearn.linear_model import LinearRegression
linreg=LinearRegression()
linregTr=linreg.fit(x_train,y_train)
test_pred=linreg.predict(x_test)插入代码片
输出线性回归的截距和系数矩阵
print(linregTr.coef_)
print(linregTr.intercept_)
对模型进行性能分析
在这里from sklearn import metrics
mse_score=metrics.mean_squared_error(y_test,test_pred)
print('均方差',mse_score)
score_pred=linregTr.score(x_test,y_test)
print('准确率',score_pred)
from sklearn.model_selection import cross_val_predict
predicted=cross_val_predict(linregTr,data_x,data_y,cv=10)
print('交叉验证后的mse_error',metrics.mean_squared_error(data_y,predicted))插入代码片
画图直观感受一下模型预测
在这里import matplotlib.pyplot as plt
fig,axe=plt.subplots()
axe.scatter(y_test,test_pred,color='y',marker='o')
axe.scatter(data_y,predicted,color='b')
axe.scatter(data_y,data_y,color='g',marker='*')
plt.show()插入代码片
完整代码如下:
在这里插入from sklearn import datasets
loaded_data = datasets.load_boston()#波士顿房价预测
data_x = loaded_data.data
data_y = loaded_data.target
# print(loaded_data)
# print(data_x)
# print(data_y)
# print(data_x.shape)
# print(data_y.shape)
#可以看出有13个特征值 506个样本一个标签预测值
from sklearn import model_selection
x_train,x_test,y_train,y_test=model_selection.train_test_split(data_x,data_y,test_size=0.25)
from sklearn.linear_model import LinearRegression
linreg=LinearRegression()
linregTr=linreg.fit(x_train,y_train)
test_pred=linreg.predict(x_test)
print(linregTr.coef_)
print(linregTr.intercept_)
from sklearn import metrics
mse_score=metrics.mean_squared_error(y_test,test_pred)
print('均方差',mse_score)
score_pred=linregTr.score(x_test,y_test)
print('准确率',score_pred)
from sklearn.model_selection import cross_val_predict
predicted=cross_val_predict(linregTr,data_x,data_y,cv=10)
print('交叉验证后的mse_error',metrics.mean_squared_error(data_y,predicted))
import matplotlib.pyplot as plt
fig,axe=plt.subplots()
axe.scatter(y_test,test_pred,color='y',marker='o')
axe.scatter(data_y,predicted,color='b')
axe.scatter(data_y,data_y,color='g',marker='*')
plt.show()代码片
能明显看出线性回归模型对于偏差数据表现异常明显,所以数据在训练之前的处理就显得异常重要,换句话说也就是容易过拟合,此时采用其他的模型更加好一点,但是选择小数据判断时,线性回归模型绝对是首选