【MachineLearning】之 线性回归预测实战

Topic :

尝试加载一个真实数据集,并使用 scikit-learn 构建预测模型,实现回归预测
(以波士顿房价数据集为例)

使用最小二乘法进行线性回归拟合 简介:线性回归

步骤:

  1. 使用 Pandas 加载并预览数据集
  2. 选取特征,用于线性回归模型训练
  3. 划分数据集,为训练集和测试集
  4. 构建和训练模型
  5. 输入测试集特征进行预测
  6. 评估回归预测结果(平均绝对误差、平均绝对百分比误差、均方误差等)

(1)数据集划分

这里写图片描述

(2)最终拟合线性函数

(1) f = 0.69979497 x 1 + 10.13564218 x 2 0.20532653 x 3 38.00096988969026


(3)均方误差(MSE)

(2) M S E ( y , y 1 ) = 1 n i = 1 n ( y y 1 ) 2


(4)平均绝对误差(MAE)

就是绝对误差的平均值

(3) M A E ( y , y ̂ ) = 1 n i = 1 n | y y 1 |


# 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)

猜你喜欢

转载自blog.csdn.net/fanfan4569/article/details/81269573
今日推荐