1.数据集
- 特征值
共有20640条数据,8个特征。
- 目标值
2.代码实现
2.1 回归预测
from sklearn.datasets import fetch_california_housing as fch # 大数据集,需要下载,加利福尼亚房价数据集
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression as LR
from sklearn.model_selection import cross_val_score
import pandas as pd
# 获取数据集并进行探索
housevalue = fch()
x = pd.DataFrame(housevalue.data)
y = housevalue.target
x.columns = housevalue.feature_names
# 划分数据集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=420)
# 建模
reg = LR().fit(x_train, y_train)
# 预测值
yhat = reg.predict(x_test)
print(yhat)
# 探索建好的模型
print(reg.coef_) # 线性回归系数w
# 将特证名与w一一对应显示
print([*zip(x_train.columns, reg.coef_)])
print(reg.intercept_) # 线性回归的截距
结果:
2.2 模型评估
2.2.1 使用的评价指标——MSE
2.2.1 使用的评价指标——R2和EVS
R2:
EVS:
结论: 虽然我们在加利福尼亚房子价值数据集上的MSE相当小,但我们的 却不高,这证明我们的模型比较好地拟合了数据的数值,却没有能正确拟合数据的分布。
2.3 绘制ytest、yhat对比曲线
- 虽然我们的大部分数据被拟合得比较好,但是图像的开头和结尾处却又着较大的拟合误差。如果我们在图像右侧分布着更多的数据,我们的模型就会越来越偏离我们真正的标签。
- 这种结果类似于我们前面提到的,虽然在有限的数据集上将数值预测正确了,但却没有正确拟合数据的分布,如果有更多的数据进入我们的模型,那数据标签被预测错误的可能性是非常大的。
【PS】这是我看看sklearn菜菜的视频学习笔记~