当前位置: 首页 > news >正文

打卡Day55

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

模型比较

1. 线性回归

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. 随机森林

from sklearn.ensemble import RandomForestRegressorrf = 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)

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

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

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}")

可视化比较

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()

在这里插入图片描述

http://www.lqws.cn/news/447805.html

相关文章:

  • 【lenovo】LEGION 2020款跳过windows账号登录
  • 12.10 在主线程或子线程中更新 UI
  • 退出python解释器的四种方式
  • C#语言入门-task2 :C# 语言的基本语法结构
  • vue3 defineExpose的使用
  • 不同系统修改 Docker Desktop 存储路径(从C盘修改到D盘)
  • 解锁微服务潜能:深入浅出 Nacos
  • 蜻蜓Q系统的技术演进:从Laravel 6到Laravel 8的升级之路-优雅草卓伊凡
  • C# winform教程(二)----GroupBox
  • ROS学习之服务通信
  • 【AI编程】第3期,针对AI生成的改枪码列表创建对应的数据库表
  • AWS CloudFormation深度解析:构建现代云原生应用基础设施
  • SpringBoot扩展——发送邮件!
  • Spring MVC参数绑定终极手册:单多参对象集合JSON文件上传精讲
  • 网络编程及原理(五)
  • Kotlin 2.6 猜数小游戏
  • AI免费工具:promptpilot、今天学点啥、中英文翻译
  • WSL 安装使用和常用命令
  • 设计模式精讲 Day 7:桥接模式(Bridge Pattern)
  • OpenAI 公布《走向理解与预防失准泛化:由“角色特征”驱动的突现性失准》研究总结
  • 用“Gemini 2.0 Flash Preview Image Generation”模型修改图片,有哪些常用的提示词和方法
  • uni-app项目实战笔记16--实现头部导航栏效果
  • C++ inline变量
  • 记录存储的使用
  • MySQL 的 WITH ROLLUP 功能
  • LLM大模型应用监控---LangChain接入LangFuse进阶篇
  • Java Map 深度解析
  • 垃圾收集器
  • 【Wi-Fi天气时钟】前置知识合集
  • 硬件-DAY04(ds18b20、ARM内核)