【发布时间】:2019-03-15 02:09:19
【问题描述】:
我想根据年份将我的数据集拆分为训练和测试数据集。这个想法是将 2009-2017 年的行放在训练数据集中,将 2018 年的数据放在测试数据集中。在大多数情况下,拆分数据集很容易,但我的模型引发了很多索引问题。
X = ((df[df['Year'] < 2018]))
X_train = np.array(X.drop(['Usage'], 1))
X_test = np.array(X['Usage'])
y =((df[df['Year'] > 2017]))
y_train = np.array(y.drop(['Usage'], 1))
y_test = np.array(y['Usage'])
这就是我计划拆分数据的方式。使用列是我的预测列,包含连续值。应用一个简单的 RandomForestRegressor() 作为回报给了我这个错误
ValueError: Number of labels=14495 does not match number of samples=382772
aditya 我的回归模型非常基本,但我以任何方式附加代码。 X 中传递的列如下:X= [Cust_Id', 'Usage', 'Plan_Group', 'Contract_Type', 'Cust_Status','Premise_Zip', 'Year', 'Month']
model = RandomForestRegressor()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
# evaluate predictions
print(model.score(X_test, y_test))
# accuracy = accuracy_score(y_test, (y_pred < 0.5).astype(int))
【问题讨论】:
-
你的问题是什么?
-
我想按行拆分数据集进行训练和测试。通常你定义一个列作为你的预测列,并在 y_test 和 y_train 中传递它。在这种情况下,我想按行拆分它。我的目标是通过在 2009-2017 年数据上训练模型来预测“2018 年的使用值”
-
@FareenWalani 添加更多代码 - 可能是您调用 RandomForestRegressor() 的行。我发现了你在这里造成的错误,但让我们更正式地采用堆栈溢出方式。我有兴趣了解您如何使用这些参数。并从一开始就了解 X 包含哪些类型的数据。您对 X 和 y 的理解有点不可靠 - 这就是问题的根源。
-
@Aditya 我已在下面的答案中添加了您想要的代码
标签: python machine-learning time-series train-test-split