You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Random Forest Classifier预测未来10天的Change值(非测试分类)

嘿,我懂你的需求啦——你不是要对现有测试集做分类,而是想用随机森林预测未来10天的Change值对吧?咱们一步步来用Python实现:

步骤1:数据预处理与特征工程

首先得把原始数据转换成模型能理解的格式:日期要转成数值特征,带百分号的湿度要转成纯数字,还要处理缺失的Change值。

import pandas as pd
from sklearn.ensemble import RandomForestClassifier

# 你的原始数据集
raw_data = [
    ["2018-04-05", 30, "75%", None],
    ["2018-04-06", 30, "90%", 0],
    ["2018-04-07", 31, "80%", 1],
    ["2018-04-08", 32, "50%", 1],
    ["2018-04-09", 29, "80%", -1]
]

# 转成DataFrame方便处理
df = pd.DataFrame(raw_data, columns=["Date", "Temp", "Humid", "Change"])

# 处理湿度:去掉百分号,转成整数
df["Humid"] = df["Humid"].str.replace("%", "").astype(int)

# 处理日期:转换成「从起始日开始的天数」作为数值特征
df["Date"] = pd.to_datetime(df["Date"])
df["Day_Index"] = (df["Date"] - df["Date"].min()).dt.days

# 删掉Change为空的行(这行没法用来训练模型)
train_data = df.dropna(subset=["Change"])
步骤2:训练随机森林分类器

这里我们用Day_Index、Temp、Humid作为输入特征,Change作为预测目标(注意Change是分类变量:-1、0、1,所以用分类器没问题)。

# 提取特征和目标变量
X_train = train_data[["Day_Index", "Temp", "Humid"]]
y_train = train_data["Change"].astype(int)  # 确保目标是整数类型

# 初始化并训练模型(数据量小,用默认参数就行,random_state保证结果可复现)
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)
步骤3:准备未来10天的特征数据

要预测未来的Change,必须先有未来10天的Temp和Humid数据(模型得靠这两个特征才能预测)。这里我先模拟一组数据,实际中你需要替换成真实的未来气象数据,或者先用时间序列模型(比如Prophet、ARIMA)预测出未来的温湿度。

# 生成未来10天的日期
future_dates = pd.date_range(start="2018-04-10", periods=10)

# 模拟未来10天的温度和湿度(替换成你的真实数据)
future_temp = [31, 30, 29, 32, 33, 31, 28, 29, 30, 32]
future_humid = [70, 75, 85, 60, 55, 70, 80, 75, 65, 50]

# 构建未来数据的DataFrame
future_df = pd.DataFrame({
    "Date": future_dates,
    "Temp": future_temp,
    "Humid": future_humid
})

# 计算未来日期的Day_Index(和训练数据的规则一致)
future_df["Day_Index"] = (future_df["Date"] - df["Date"].min()).dt.days
步骤4:预测未来的Change值

用训练好的模型对未来数据做预测就行:

# 提取未来数据的特征矩阵
X_future = future_df[["Day_Index", "Temp", "Humid"]]

# 执行预测
future_df["Predicted_Change"] = rf_model.predict(X_future)

# 查看结果
print(future_df[["Date", "Temp", "Humid", "Predicted_Change"]])
几个关键提醒
  • 温湿度数据是前提:如果没有未来10天的温湿度,模型根本没法预测,所以得先搞定这部分数据。
  • 训练数据量太少:你现在只有4条有效训练数据,模型很难学到真正的规律,实际应用中一定要收集更多历史数据。
  • 特征可以优化:如果有更多数据,还可以加一些特征,比如前一天的Change值(滞后特征)、星期几、月份等,能提升模型效果。

内容的提问来源于stack exchange,提问作者Marco Lau

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:12:45