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

Python基于训练数据集预测Deadline_Changes变量的最优实现方案

实现方案

你的需求属于典型的结构化数据回归任务,目标是预测连续值Deadline_Changes。考虑到数据集规模小、同时包含数值特征(Month、Day)和分类特征(Test),最优方案是使用Scikit-learn的Pipeline封装特征处理和模型拟合流程,无需手动处理特征对齐问题,代码可复用性高。

完整可运行代码

import pandas as pd
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
from sklearn.ensemble import RandomForestRegressor
from sklearn.pipeline import Pipeline

# 1. 构造训练集(如果从本地文件读取,替换为 pd.read_csv("训练集文件路径") 即可)
train_data = [
    [3, 19, 2, "English"],
    [5, 3, 8, "Math"],
    [3, 8, 34, "Science"],
    [10, 2, 17, "Science"],
    [5, 9, 21, "Social"],
    [4, 12, 3, "Math"],
    [8, 29, 1, "Music"],
    [12, 31, 9, "English"]
]
train_df = pd.DataFrame(train_data, columns=["Month", "Day", "Deadline_Changes", "Test"])

# 2. 构造待预测数据集(同理可替换为 pd.read_csv("测试集文件路径"))
test_data = [
    [5, 30, "Math"],
    [9, 2, "Social"],
    [12, 9, "Science"],
    [11, 30, "Music"],
    [8, 24, "Music"],
    [2, 2, "English"],
    [6, 12, "Music"],
    [4, 9, "English"]
]
test_df = pd.DataFrame(test_data, columns=["Month", "Day", "Test"])

# 3. 定义特征分类
num_features = ["Month", "Day"]
cat_features = ["Test"]

# 4. 构建特征处理+模型训练流水线
preprocessor = ColumnTransformer(
    transformers=[
        ("cat", OneHotEncoder(handle_unknown="ignore"), cat_features),
        ("num", "passthrough", num_features)
    ]
)
model = Pipeline(steps=[
    ("preprocessor", preprocessor),
    ("regressor", RandomForestRegressor(random_state=42, n_estimators=100))
])

# 5. 拟合模型并输出结果
X_train = train_df[num_features + cat_features]
y_train = train_df["Deadline_Changes"]
model.fit(X_train, y_train)

# 预测结果取整,符合 Deadline_Changes 为整数的业务特征
test_df["Predicted_Deadline_Changes"] = model.predict(test_df).round().astype(int)

# 打印最终输出
print(test_df)

方案说明

  • 用OneHotEncoder处理分类特征Test,避免有序编码引入的错误权重,handle_unknown="ignore"参数可兼容测试集中出现训练集不存在的科目的情况
  • 选择随机森林回归器是因为小数据集下不易过拟合,无需对数值特征做标准化,对特征尺度不敏感
  • 如果需要调整预测精度,可以修改RandomForestRegressor的参数(比如max_depth、min_samples_split),或者更换为GradientBoostingRegressor等其他回归模型

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 11:00:04