假设数据集包含汽车的重量(千克)、发动机功率(千瓦)、车辆长度(米)以及对应的燃油效率(升 / 百公里)。
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库绘制散点图展示测试集中实际的燃油效率,以及预测的燃油效率曲线。通过对比,可以直观地看到模型预测的效果,了解预测值和实际值的接近程度。