【问题标题】:Random Forest on Panel Data using Python使用 Python 对面板数据进行随机森林
【发布时间】:2021-04-29 15:58:14
【问题描述】:

所以我在面板数据上运行随机森林回归时遇到了一些麻烦。

目前的数据是这样的:

我想进行随机森林回归,根据我拥有的变量预测每个 ID 随时间变化的 KwH。我已使用以下代码将数据拆分为训练和测试样本:

from sklearn.model_selection import train_test_split
X = df[['hour', 'day', 'month', 'dayofweek', 'apparentTemperature',
       'summary', 'household_size', 'work_from_home', 'num_rooms',
       'int_in_renew', 'int_in_gen', 'conc_abt_cc', 'feel_abt_lifestyle',
       'smrt_meter_help', 'avg_gender', 'avg_age', 'house_type', 'sum_insul',
       'total_lb', 'total_fridges', 'bigg_apps', 'small_apps',
       'look_at_meter']]
y = df[['KwH']]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)

然后我希望训练我的模型并针对测试样本进行测试,但是我不确定如何执行此操作。我试过这段代码:

from sklearn.ensemble import RandomForestRegressor
rfc = RandomForestRegressor(n_estimators=200)
rfc.fit(X_train, y_train)

但是我收到以下错误消息:

当需要一维数组时,传递了列向量 y。请将 y 的形状更改为 (n_samples,),例如使用 ravel()。

我不确定该错误是否根本在于我的数据排列方式或我执行随机森林的方式,因此非常感谢您对此提供任何帮助,然后根据测试样本测试数据。

提前致谢。

【问题讨论】:

    标签: python scikit-learn random-forest prediction panel-data


    【解决方案1】:

    只需将y = df[['KwH']] 切换为y = df['KwH']y = df.KwH 即可解决此问题。

    这是因为 scikit-learn 不希望 y 成为数据框,而选择具有双精度 [[...]] 的列正是返回数据框。

    【讨论】:

    • 谢谢马克西姆这工作!很高兴有一个简单的解决方案
    猜你喜欢
    • 2021-11-27
    • 2014-08-11
    • 2023-04-09
    • 2018-05-27
    • 2017-12-12
    • 2013-07-05
    • 2014-03-08
    • 2021-05-29
    • 2016-10-20
    相关资源
    最近更新 更多