线性回归是机器学习中一种非常基础的算法,它通过找到一个最佳拟合线来预测连续值。Scikit-learn是一个强大的Python机器学习库,它提供了线性回归的实现。本文将深入探讨Scikit-learn中的线性回归,并通过一个实战案例进行代码深度解析。

1. 线性回归原理

线性回归旨在找到一组输入变量(自变量)和输出变量(因变量)之间的线性关系。其数学表达式为:

[ y = beta_0 + beta_1x_1 + beta_2x_2 + … + beta_nx_n + epsilon ]

其中,( y ) 是因变量,( x_1, x_2, …, x_n ) 是自变量,( beta_0, beta_1, …, beta_n ) 是回归系数,( epsilon ) 是误差项。

2. Scikit-learn线性回归

Scikit-learn提供了LinearRegression类来实现线性回归。以下是其基本用法:

from sklearn.linear_model import LinearRegression # 创建线性回归对象 model = LinearRegression() # 训练模型 model.fit(X_train, y_train) # 预测 predictions = model.predict(X_test) 

其中,X_trainy_train 分别是训练数据集的特征和目标值,X_test 是测试数据集的特征。

3. 实战案例:房价预测

在这个案例中,我们将使用Scikit-learn来预测房价。

3.1 数据准备

我们使用加州房价数据集,数据可以从UCI机器学习库中获得。

import pandas as pd from sklearn.model_selection import train_test_split # 读取数据 data = pd.read_csv('california_housing.csv') # 特征和目标值 X = data.drop('median_house_value', axis=1) y = data['median_house_value'] # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) 

3.2 训练模型

# 创建线性回归对象 model = LinearRegression() # 训练模型 model.fit(X_train, y_train) 

3.3 评估模型

from sklearn.metrics import mean_squared_error, r2_score # 预测 predictions = model.predict(X_test) # 计算均方误差和R²分数 mse = mean_squared_error(y_test, predictions) r2 = r2_score(y_test, predictions) print(f"Mean Squared Error: {mse}") print(f"R² Score: {r2}") 

3.4 模型解释

线性回归模型的系数可以通过model.coef_model.intercept_获取。

print(f"Coefficients: {model.coef_}") print(f"Intercept: {model.intercept_}") 

3.5 可视化

我们可以使用matplotlib来可视化模型的预测结果。

import matplotlib.pyplot as plt plt.scatter(X_test, y_test, color='black', label='Actual') plt.plot(X_test, predictions, color='blue', linewidth=3, label='Predicted') plt.xlabel('Features') plt.ylabel('Median House Value') plt.title('House Price Prediction') plt.legend() plt.show() 

4. 总结

本文详细介绍了Scikit-learn中的线性回归,并通过一个房价预测的实战案例进行了代码深度解析。通过本文的学习,读者应该能够掌握线性回归的基本原理和Scikit-learn中的实现方法。