Topic :
尝试加载一个真实数据集,并使用 scikit-learn 构建预测模型,实现回归预测
(以波士顿房价数据集为例)
使用最小二乘法进行线性回归拟合 简介:线性回归
步骤:
- 使用
Pandas
加载并预览数据集 - 选取特征,用于线性回归模型训练
- 划分数据集,为训练集和测试集
- 构建和训练模型
- 输入测试集特征进行预测
- 评估回归预测结果(平均绝对误差、平均绝对百分比误差、均方误差等)
(1)数据集划分
(2)最终拟合线性函数
(3)均方误差(MSE)
(4)平均绝对误差(MAE)
就是绝对误差的平均值
# Target: 加载一个真实数据集,并使用scikit-learn 构建预测模型,实现回归预测
# 运行并下载数据集
# !wget http://labfile.oss.aliyuncs.com/courses/1081/course-5-boston.csv
# 使用 Pandas 加载并预览数据集
import pandas as pd
df = pd.read_csv("course-5-boston.csv")
# 查看DataFrame 前5行数据
df.head()
# 选取 crim, rm, lstat 三个特征用于线性回归模型训练
features = df[['crim', 'rm', 'lstat']]
# 统计了每列数据的个数、最大值、最小值、平均数等信息
features.describe()
# 目标值数据
target = df['medv']
# 得到 70% 位置
split_num = int(len(features)*0.7)
# 训练集特征
train_x = features[:split_num]
# 训练集目标
train_y = target[:split_num]
# 测试集特征
test_x = features[split_num:]
# 测试集目标
test_y = target[split_num:]
# 使用scikit-learn 构建预测模型
from sklearn.linear_model import LinearRegression
# 建立模型
model = LinearRegression()
# 训练模型
model.fit(train_x, train_y)
# 输出训练后的模型参数和截距项
model.coef_, model.intercept_
# 输入测试集特征进行预测
preds = model.predict(test_x)
# 预测结果
preds
# 平均绝对误差、平均绝对百分比误差、均方差等多个指标进行评价
# 平均绝对误差(MAE)
def mae_value(y_true, y_pred):
n = len(y_true)
mae = sum(pd.np.abs(y_true - y_pred)) / n
return mae
# 均方误差(MSE)
def mse_value(y_true, y_pred):
n = len(y_true)
mse = sum(pd.np.square(y_true - y_pred)) / n
return mse
mae = mae_value(test_y.values, preds)
mse = mse_value(test_y.values, preds)
print("MAE: ", mae)
print("MSE: ", mse)