Python实战:Lasso回归

假设数据集包含汽车的重量(千克)、发动机功率(千瓦)、车辆长度(米)以及对应的燃油效率(升 / 百公里)。

 

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import Lasso
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split

# 定义汽车数据集,手动创建示例数据
data = np.array([
    [1200, 80, 4.2],
    [1300, 90, 4.5],
    [1400, 100, 4.6],
    [1500, 110, 4.8],
    [1600, 120, 5.0],
    [1700, 130, 5.2],
    [1800, 140, 5.3],
    [1900, 150, 5.5]
])
fuel_efficiency = np.array([7.5, 8.0, 8.2, 8.5, 9.0, 9.2, 9.5, 9.8])

# 划分训练集和测试集,按照7:3的比例划分,设置随机种子保证可重复性
X_train, X_test, y_train, y_test = train_test_split(data, fuel_efficiency, test_size = 0.3, random_state = 42)

# 创建Lasso回归模型对象,设置正则化参数alpha,这里先设置为0.1,可根据实际情况调整
model = Lasso(alpha = 0.1)

# 使用训练集训练模型
model.fit(X_train, y_train)

# 获取模型的系数(权重)和截距
coefficients = model.coef_
intercept = model.intercept_
print(f"模型系数(权重): {coefficients}")
print(f"截距: {intercept}")

# 使用训练好的模型对测试集进行预测
y_pred = model.predict(X_test)

# 计算均方误差(MSE),用于评估模型预测效果
mse = mean_squared_error(y_test, y_pred)
print(f"均方误差(MSE): {mse}")

# 可视化预测结果与实际结果(简单示例,以测试集为例)
plt.scatter(range(len(y_test)), y_test, label='实际燃油效率')
plt.plot(range(len(y_test)), y_pred, color='r', label='预测燃油效率')
plt.xlabel('样本索引')
plt.ylabel('燃油效率(升/百公里)')
plt.title('Lasso回归预测燃油效率结果')
plt.legend()
plt.show()

数据准备阶段:

首先定义了汽车特征数据(汽车重量、发动机功率、车辆长度)的二维numpy数组和对应的燃油效率的一维数组。

然后使用train_test_split函数按照 7:3 的比例划分训练集和测试集,设置随机种子为 42,保证划分结果可重复。

模型构建与训练阶段:

创建Lasso类的对象,传入正则化参数alpha为 0.1。这个参数可以根据数据的特点和模型表现进行调整,它用于控制 Lasso 回归的正则化强度,促使一些不重要的特征系数变为 0,从而起到特征选择的作用。

调用fit方法使用训练集数据对模型进行训练,使模型学习汽车特征和燃油效率之间的关系。

模型评估阶段:

通过模型的coef_属性获取系数,intercept_属性获取截距,了解模型的具体形式。

利用训练好的模型对测试集进行预测,得到y_pred。

使用mean_squared_error函数计算均方误差(MSE)来评估模型预测结果和实际测试集数据之间的误差大小,初步评估模型性能。

可视化阶段:

使用matplotlib库绘制散点图展示测试集中实际的燃油效率,以及预测的燃油效率曲线。通过对比,可以直观地看到模型预测的效果,了解预测值和实际值的接近程度。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值