机器学习基础算法 (一)-线性回归

python 环境的配置参考 从零开始:Python 环境搭建与工具配置

线性回归的 Python 实现

线性回归是一种经典的机器学习算法,用于预测连续的目标变量。它假设目标变量和特征之间存在线性关系。本文将详细介绍线性回归的原理、Python 实现、模型评估和调优,并结合房价预测案例进行实战演练。

一、线性回归原理

线性回归的目标是找到一条最佳拟合线,能够最大程度地描述特征与目标变量之间的关系。这条线可以用以下公式表示:

y = β₀ + β₁x₁ + ⋯ + βᵣ𝑥ᵣ + 𝜀

其中:

  • y 是目标变量
  • x₁, x₂, ..., xᵣ 是特征
  • β₀ 是截距
  • β₁, β₂, ..., βᵣ 是系数
  • 𝜀 是误差项

线性回归模型通过学习训练数据,找到最佳的 β₀, β₁, ..., βᵣ 参数值,使得预测值与真实值之间的误差最小化。

二、Python 实现线性回归模型

Python 中可以使用 scikit-learn 库来实现线性回归模型。以下是一个简单的示例:

python 复制代码
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

# 导入数据
# 假设 X 是特征矩阵,y 是目标变量向量

# 划分训练集和测试集
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)

# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print('均方误差:', mse)
print('R²:', r2)

三、模型评估和调优

线性回归模型的评估指标主要包括:

  • 均方误差 (MSE): 衡量预测值与真实值之间误差的平方和的平均值。
  • R²: 衡量模型对目标变量方差的解释程度。

为了提高模型的性能,可以进行以下调优:

  • 特征工程: 选择合适的特征,进行特征缩放、特征组合等操作。
  • 正则化: 添加 L1 或 L2 正则化项,防止模型过拟合。
  • 超参数调优: 调整模型的超参数,例如学习率、迭代次数等。

四、案例实战:房价预测

下面我们使用线性回归模型来预测房价。

1. 导入必要的库

python 复制代码
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt

2. 加载数据

python 复制代码
# 使用 pandas 加载数据
data = pd.read_csv('housing.csv')  # 将 'housing.csv' 替换为实际文件名

# 选择特征和目标变量
X = data[['RM']]  # 使用房间数量作为特征
y = data['MEDV']  # 房价中位数作为目标变量

3. 划分训练集和测试集

python 复制代码
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4. 创建和训练模型

python 复制代码
model = LinearRegression()
model.fit(X_train, y_train)

5. 预测和评估

python 复制代码
y_pred = model.predict(X_test)

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print('均方误差:', mse)
print('R²:', r2)

6. 可视化结果

python 复制代码
plt.scatter(X_test, y_test, color='blue')
plt.plot(X_test, y_pred, color='red', linewidth=2)
plt.xlabel('房间数量')
plt.ylabel('房价中位数')
plt.title('线性回归预测房价')
plt.show()

完整代码:

python 复制代码
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score
import matplotlib.pyplot as plt

# 加载数据
data = pd.read_csv('housing.csv')
X = data[['RM']]
y = data['MEDV']

# 划分训练集和测试集
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)

mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print('均方误差:', mse)
print('R²:', r2)

# 可视化结果
plt.scatter(X_test, y_test, color='blue')
plt.plot(X_test, y_pred, color='red', linewidth=2)
plt.xlabel('房间数量')
plt.ylabel('房价中位数')
plt.title('线性回归预测房价')
plt.show()

完整的代码: LinerRegression

总结:

本文介绍了线性回归的原理、Python 实现、模型评估和调优,并通过房价预测案例演示了如何使用线性回归模型进行预测。线性回归是一种简单易懂的算法,但它在许多领域都有广泛的应用。希望本文能帮助你理解线性回归,并能够使用 Python 进行实际应用。

想要系统学习AI算法Python实现?这个专栏将带你学习机器学习基础算法、深度学习基础算法、强化学习基础算法、模型优化与调参。每个都将包括原理、算法和实战!

点击进入:AI算法Python实现

点击进入:机器学习基础算法 (二)-逻辑回归

本文为原创内容,未经许可不得转载。

相关推荐
zhangfeng11331 小时前
国家超算中心 scnet.cn 跨用户文件分享流程总结 多个用户之间 文件共享 不需要反复下载上传
人工智能·语言模型·大模型
MATLAB代码顾问4 小时前
5大智能算法优化标准测试函数对比(Python实现)
开发语言·python
ting94520004 小时前
Tornado 全栈技术深度指南:从原理到实战
人工智能·python·架构·tornado
果汁华4 小时前
Browserbase Skills:让 Claude Agent 真正“看见“网页世界
人工智能·python
ZhengEnCi4 小时前
04-缩放点积注意力代码实现 💻
人工智能·python
2zcode5 小时前
基于LSTM神经网络的金属材料机器学习本构模型研究(硕士级别)
神经网络·机器学习·lstm·金属材料
DeepReinforce5 小时前
三、AI量化投资:使用akshare获取A股主板20260430所有的涨停股票
python·量化·akshare·龙头战法
HackTwoHub5 小时前
AI大模型网关存在SQL注入、附 POC 复现、影响版本LiteLLM 1.81.16~1.83.7(CVE-2026-42208)
数据库·人工智能·sql·网络安全·系统安全·网络攻击模型·安全架构
段一凡-华北理工大学5 小时前
【高炉炼铁领域炉温监测、预警、调控智能体设计与应用】~系列文章08:多模态数据融合:让数据更聪明
人工智能·python·高炉炼铁·ai赋能·工业智能体·高炉炉温
万粉变现经纪人5 小时前
如何解决 pip install llama-cpp-python 报错 未安装 CMake/Ninja 或 CPU 不支持 AVX 问题
开发语言·python·开源·aigc·pip·ai写作·llama