1. 回归的基本概念
在机器学习的有监督学习中,回归(Regression)是一种常见的任务,它的目标是通过观察数据来建立一个模型,用一个或多个自变量来预测因变量的值。
回归分析通常用于: a.预测,基于已有数据,预测未知的数据,b. 解释关系,分析自变量与因变量之间的关系和影响。
回归任务举例: 根据房屋的面积、位置、房龄等信息,预测房屋的市场价格。
回归模型的类型: 线性回归(Linear Regression)、 非线性回归(Nonlinear Regression)、岭回归(Ridge Regression)等
2. 线性回归(Linear Regression)
线性回归是最基础的回归方法,它假设自变量和因变量之间存在线性关系。常见的线性回归模型有:
3. 非线性回归(Nonlinear Regression)
当自变量和因变量之间的关系不再是线性时,可使用非线性回归,适用于那些数据呈现曲线而不是直线趋势的情况。这种回归模型包含了更复杂的数学关系,例如:
4. 回归任务的评估指标
回归模型的评估指标用来衡量模型的预测能力和拟合程度。常见的评估指标有:
5. 使用 scikit-learn 库进行单变量线性回归分析
# 导入必要的库
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score# 生成模拟数据
np.random.seed(42) # 为了可复现性
X = 2 * np.random.rand(100, 1) # 生成100个随机自变量
Y = 4 + 3 * X + np.random.randn(100, 1) # 生成因变量(线性关系加上噪声)# 可视化数据
plt.scatter(X, Y, color='blue', label='Data Points')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Generated Data')
plt.show()
# 数据集划分:80%训练,20%测试
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.2, random_state=42)# 创建线性回归模型
model = LinearRegression()# 训练模型
model.fit(X_train, Y_train)# 进行预测
Y_pred = model.predict(X_test)# 打印回归系数和截距
print(f"回归系数 (β1): {model.coef_[0]}")
print(f"截距 (β0): {model.intercept_}")
#回归系数 (β1): [2.79932366]
#截距 (β0): [4.14291332]
# 评估模型
mse = mean_squared_error(Y_test, Y_pred)
r2 = r2_score(Y_test, Y_pred)
print(f"均方误差 (MSE): {mse}")
print(f"决定系数 (R²): {r2}")
#均方误差 (MSE): 0.6536995137170021
#决定系数 (R²): 0.8072059636181392# 可视化结果
plt.scatter(X_test, Y_test, color='blue', label='True Data')
plt.plot(X_test, Y_pred, color='red', label='Regression Line')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Linear Regression Model')
plt.legend()
plt.show()