50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
'''
|
||
线性回归, 用于回归任务, 通过线性方程预测连续值
|
||
'''
|
||
|
||
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
|
||
|
||
# 生成示例数据
|
||
# 假设我们有一些数据点 (X, y),其中 X 是输入特征,y 是目标变量
|
||
# 设置随机种子, 不然每次运行程序结果都不一样
|
||
np.random.seed(0)
|
||
|
||
# 生成形状为[100, 1] 值为[0, 1)均匀分布的数组
|
||
X = 2 * np.random.rand(100, 1)
|
||
y = 4 + 3 * X + np.random.randn(100, 1)
|
||
|
||
print(X)
|
||
print(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(f"Mean Squared Error: {mse}")
|
||
print(f"R^2 Score: {r2}")
|
||
|
||
# 可视化结果
|
||
plt.scatter(X_test, y_test, color='black', label='Actual data')
|
||
plt.plot(X_test, y_pred, color='blue', linewidth=3, label='Fitted line')
|
||
plt.xlabel('X')
|
||
plt.ylabel('y')
|
||
plt.legend()
|
||
|
||
plt.savefig('./output/linear.png')
|