打卡Day55

作业:手动构造类似的数据集(如cosx数据),观察不同的机器学习模型的差异

模型比较

1. 线性回归

python 复制代码
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error

# 线性回归
lr = LinearRegression()
lr.fit(X_train, y_train)
y_pred = lr.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Linear Regression MSE: {mse:.4f}")

2. 随机森林

python 复制代码
from sklearn.ensemble import RandomForestRegressor

rf = RandomForestRegressor(n_estimators=100, random_state=42)
rf.fit(X_train, y_train)
y_pred = rf.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print(f"Random Forest MSE: {mse:.4f}")

3. 支持向量回归(SVR)

python 复制代码
from sklearn.svm import SVR
from sklearn.preprocessing import StandardScaler

# 标准化数据
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

svr = SVR(kernel='rbf', C=100, gamma=0.1, epsilon=0.1)
svr.fit(X_train_scaled, y_train)
y_pred = svr.predict(X_test_scaled)
mse = mean_squared_error(y_test, y_pred)
print(f"SVR MSE: {mse:.4f}")

4. 简单RNN

python 复制代码
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import SimpleRNN, Dense

# 重塑数据为RNN需要的形状 [样本数, 时间步数, 特征数]
X_train_rnn = X_train.reshape((X_train.shape[0], X_train.shape[1], 1))
X_test_rnn = X_test.reshape((X_test.shape[0], X_test.shape[1], 1))

# 构建RNN模型
model = Sequential([
    SimpleRNN(50, activation='tanh', input_shape=(X_train_rnn.shape[1], 1)),
    Dense(1)
])
model.compile(optimizer='adam', loss='mse')

# 训练模型
history = model.fit(X_train_rnn, y_train, epochs=50, batch_size=32, 
                    validation_data=(X_test_rnn, y_test), verbose=0)

y_pred = model.predict(X_test_rnn)
mse = mean_squared_error(y_test, y_pred)
print(f"Simple RNN MSE: {mse:.4f}")

5. LSTM

python 复制代码
from tensorflow.keras.layers import LSTM

# 构建LSTM模型
model = Sequential([
    LSTM(50, activation='tanh', input_shape=(X_train_rnn.shape[1], 1)),
    Dense(1)
])
model.compile(optimizer='adam', loss='mse')

# 训练模型
history = model.fit(X_train_rnn, y_train, epochs=50, batch_size=32, 
                    validation_data=(X_test_rnn, y_test), verbose=0)

y_pred = model.predict(X_test_rnn)
mse = mean_squared_error(y_test, y_pred)
print(f"LSTM MSE: {mse:.4f}")

可视化比较

python 复制代码
import matplotlib.pyplot as plt

# 绘制预测结果对比
plt.figure(figsize=(12, 6))
plt.plot(y_test[:100], label='True')
plt.plot(lr.predict(X_test)[:100], label='Linear Regression')
plt.plot(rf.predict(X_test)[:100], label='Random Forest')
plt.plot(svr.predict(X_test_scaled)[:100], label='SVR')
plt.plot(model.predict(X_test_rnn)[:100], label='LSTM')
plt.legend()
plt.title('Comparison of Model Predictions')
plt.show()
相关推荐
AC赳赳老秦4 小时前
OpenClaw+Power Apps 实战:自动生成 Power Apps 应用、连接 Excel 数据源
大数据·开发语言·python·serverless·excel·deepseek·openclaw
茉莉玫瑰花茶6 小时前
综合案例 - AI 智能租房助手 [ 5 ]
服务器·数据库·人工智能·python·ai
文艺倾年6 小时前
【强化学习】强化学习基本概念,20W字总结(一)
人工智能·python·语言模型·自然语言处理·面试·职场和发展·大模型
宸丶一6 小时前
Day 13:持久化记忆 - 让 Agent 拥有长期记忆
jvm·python·ai
码云骑士6 小时前
13-列表append的底层真相(上)-listobject源码中的预分配策略
开发语言·python
浦信仿真大讲堂6 小时前
达索系统SIMULIA Abaqus 2026接触和约束的增强新功能介绍
人工智能·python·算法·仿真软件·达索软件
xufengzhu7 小时前
第三方 Python 库 Loguru 的进阶实战
python·loguru
极光代码工作室8 小时前
基于深度学习的手写数字识别系统
人工智能·python·深度学习·神经网络·机器学习
geovindu8 小时前
python: speech to text offline
开发语言·python·语音识别
AI创界者8 小时前
告别云端限制!Sulphur 2 本地文生视频/图生视频整合包,本地部署,解压即用,保姆级部署与工作流实战
人工智能·python·aigc·音视频