题目
使用scikit-learn实现简单的线性回归模型
信息
- 类型:问答
- 难度:⭐
考点
数据预处理,模型训练,模型评估
快速回答
实现线性回归的三个关键步骤:
- 准备数据:加载数据集并划分特征/标签
- 创建模型:实例化
LinearRegression对象 - 训练与评估:调用
fit()方法训练,用score()计算R²分数
示例代码核心:
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
score = model.score(X_test, y_test)
## 解析
1. 问题背景
线性回归是机器学习中最基础的监督学习算法,用于建立特征与连续目标值之间的线性关系。本题考察使用scikit-learn库实现标准工作流程的能力。
2. 完整实现步骤
# 导入必要库
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score
import numpy as np
# 1. 准备数据(示例使用随机数据)
X = np.array([[1], [2], [3], [4], [5]]) # 特征矩阵
Y = np.array([2, 4, 5, 4, 5]) # 目标值
# 2. 划分训练集/测试集(简单场景可不划分)
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.2)
# 3. 创建并训练模型
model = LinearRegression() # 实例化模型
model.fit(X_train, y_train) # 训练模型
# 4. 评估模型
score = model.score(X_test, y_test) # 计算R²分数
print(f"模型R²分数: {score:.2f}")
# 5. 预测新数据
y_pred = model.predict([[6]])
print(f"特征值为6时的预测结果: {y_pred[0]:.2f}")3. 核心原理说明
- 模型目标: 找到最佳拟合直线 $y = wx + b$ 的参数 $w$(权重)和 $b$(偏置)
- 训练过程: 通过最小二乘法最小化预测值与真实值的平方误差
- R²分数: 评估指标,取值范围[0,1],值越大说明模型解释能力越强
4. 最佳实践
- 数据预处理: 实际应用中需先进行缺失值处理、特征缩放等
- 模型验证: 重要场景应使用交叉验证(如
cross_val_score) - 结果解读: R²=0.8表示模型能解释80%的目标值变化
5. 常见错误
- 维度错误: 未将一维特征数组reshape为二维(正确格式:
X.reshape(-1,1)) - 数据泄漏: 在训练前对全数据集做预处理(应先划分再分别处理)
- 误用分类指标: 对回归问题使用准确率等分类指标
6. 扩展知识
- 多项式回归: 通过
PolynomialFeatures处理非线性关系 - 正则化: 使用
Ridge/Lasso防止过拟合 - 关键属性: 训练后可通过
model.coef_获取权重,model.intercept_获取截距