使用 sklearn RandomForestRegressor 时我的数据框的 x 值是多少?

Posted

技术标签:

【中文标题】使用 sklearn RandomForestRegressor 时我的数据框的 x 值是多少?【英文标题】:What is my dataframe's x value when using sklearn RandomForestRegressor? 【发布时间】:2020-04-15 16:10:43 【问题描述】:

我正在为我的学校项目开发一个大数据项目。我的数据集如下所示:https://github.com/gindeleo/climate/blob/master/GlobalTemperatures.csv

我正在尝试预测“LandAverageTemperature”的下一个值。

我之前问过关于这个话题的另一个问题。(它在这里:How to predict correctly in sklearn RandomForestRegressor?)我无法得到这个问题的任何答案。在我的第一个问题没有得到任何结果然后又失败了一天之后,我'我决定从头开始。

现在,我想知道我的数据集中的哪个值是“x”,以便正确进行预测。我读到 y 是我想预测的因变量,而 x 是我应该用作“预测器”来帮助预测过程的自变量。在这种情况下,我的 y 变量是“LandAverageTemperature”。我不知道 x 值是多少。起初我使用 x 的日期值,但目前我不确定这是真的。

如果我不应该对这个数据集使用 RandomForestRegressor 或 sklearn(我从这个项目开始使用 spark),请告诉我。提前致谢。

【问题讨论】:

【参考方案1】:

您只有一个变量 (LandAverageTemperature),所以显然这就是您要使用的变量。您正在寻找的是 df.shift() 函数,它会改变您的值。使用此功能,您将能够将过去值的列添加到您的dataframe。然后,您将能够使用t 1 month/day agot 2 months/days ago 等作为另一天/一个月温度的预测指标。

你可以这样使用它:

for i in range(1, 15):
    df.loc[:, 'T–%s'%i] = df.loc[:, 'LandAverageTemperature'].shift(i)

然后,您的列将是 temperature,温度为 T-1T-2,最多 14 个时间段。

关于什么是时间序列预测的合适模型的问题,这对于本网站来说是题外话,但https://stats.stackexchange.com 上有很多资源。

【讨论】:

这个问题可能听起来很愚蠢,但我对回归本身知之甚少。所以,很明显我应该为 x 使用“T”值,但我有 15 个。在这种情况下,如果我想为我的模型使用RandomForestRegressor,我应该使用哪个 T 值?我可以使用多个预测器吗?如果有,怎么做? 我认为一些基础教程可能会对您有所帮助,有很多。简而言之,您需要将yx 分开。然后,您将使用model.fit(x, y) 方法,然后在您的测试集上使用model.predict()。 docs中有教程【参考方案2】:

一般情况下,您可以将 X 特征矩阵用于除目标列之外的所有数据列。但在你的情况下,有几个并发症:

多年来,您在大多数列中都有遗漏(空)数据。您可以从训练数据中排除此类行/年。或者排除缺少数据的列(这将是您的几乎所有列,这不好)。 回归模型不能直接使用日期字段,您应该将日期字段转换为一些数字字段,例如“第一次观察后的月份”。 (year-1750)*12 + month 之类的东西。或者/并且您可以将年份和月份放在单独的列中(如果您的数据中有一些“季节性”,那就更好了)。 您这里有连续的时间数据,所以您可能不应该使用简单回归。使用一些 ARIMA/SARIMA/SARIMAX 等所谓的 时间序列 模型,在您的情况下逐月逐月预测目标数据。这是一个很难学习的话题,但您绝对应该看看 TS,因为如果不是今天,您将来某个时候会需要它。

【讨论】:

以上是关于使用 sklearn RandomForestRegressor 时我的数据框的 x 值是多少?的主要内容,如果未能解决你的问题,请参考以下文章

当我应该使用其中之一时,“sklearn.cluster.k_means”和“sklearn.cluster.KMeans”有啥区别?

sklearn.svm在建立好模型后怎么使用

sklearn使用小贴士

sklearn.svm在建立好模型后怎么使用

Sklearn:使用 CalibratedClassifierCV 校准多标签分类

sklearn:在 RandomizedSearchCV 中使用管道?