人工智能直通车系列13【机器学习基础】(线性回归模型实现scikit - learn)
目录
线性回归模型实现步骤及解释
场景示例
在 Python 中,scikit-learn
是一个常用的机器学习库,提供了丰富的工具和算法用于各种机器学习任务,包括线性回归模型的实现。
线性回归模型实现步骤及解释
- 导入必要的库和模块
import numpy as np
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
这里导入了numpy
和pandas
用于数据处理,LinearRegression
是线性回归模型类,train_test_split
用于将数据集划分为训练集和测试集,mean_squared_error
和r2_score
用于评估模型的性能。
- 准备数据
# 生成一些示例数据
data = {
'x': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'y': [2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
}
df = pd.DataFrame(data)
# 划分特征和目标变量
X = df[['x']]
y = df['y']
# 将数据划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
首先创建了一个简单的数据集,包含特征x
和目标变量y
,它们之间存在线性关系y=2x。然后使用train_test_split
函数将数据集按照 8:2 的比例划分为训练集和测试集,random_state=42
确保每次运行结果的可重复性。
- 创建和训练模型
# 创建线性回归模型对象
model = LinearRegression()
# 使用训练数据拟合模型
model.fit(X_train, y_train)
创建LinearRegression
类的实例model
,然后使用训练集X_train
和y_train
来拟合模型,即通过最小二乘法等方法找到最佳的模型参数(斜率和截距)。
- 进行预测
# 使用训练好的模型进行预测
y_pred = model.predict(X_test)
使用训练好的模型对测试集X_test
进行预测,得到预测值y_pred
。
- 评估模型性能
# 计算均方误差(MSE)
mse = mean_squared_error(y_test, y_pred)
# 计算决定系数(R²)
r2 = r2_score(y_test, y_pred)
print(f'均方误差: {mse}')
print(f'决定系数: {r2}')
使用mean_squared_error
函数计算均方误差(MSE),它衡量了预测值与真实值之间的平均平方误差,值越小表示模型性能越好。使用r2_score
函数计算决定系数(R2),它表示模型对数据的拟合程度,取值范围在 0 到 1 之间,越接近 1 表示模型拟合效果越好。
场景示例
假设你是一位房地产分析师,想要预测房屋价格。你收集了一些房屋的面积数据以及对应的销售价格,希望通过线性回归模型来建立房屋面积与价格之间的关系,从而对新的房屋进行价格预测。
# 读取房屋数据
house_data = pd.read_csv('house_data.csv')
# 提取特征和目标变量
X = house_data[['area']]
y = house_data['price']
# 划分训练集和测试集
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(f'房屋价格预测模型 - 均方误差: {mse}')
print(f'房屋价格预测模型 - 决定系数: {r2}')
# 预测新房屋价格
new_house_area = [[150]] # 假设新房屋面积为150平方米
predicted_price = model.predict(new_house_area)
print(f'面积为150平方米的新房屋预测价格: {predicted_price[0]}')
在这个示例中,从 CSV 文件中读取房屋数据,将房屋面积作为特征,价格作为目标变量。通过scikit-learn
的线性回归模型进行训练、预测和评估。最后,使用训练好的模型对面积为 150 平方米的新房屋进行价格预测。