拆分数据集以按行进行训练和测试
Splitting dataset for training and testing row wise
我想根据年份将我的数据集拆分为训练和测试数据集。这个想法是将 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() 在 return
中给了我这个错误
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))
对于 sklearn 堆栈中的大多数算法,您都有一个标准符号:
X,大写字母,通常是一个数组(即使只有一个特征)并以向量形式表示每个数据点。
y,小写字母,通常是表示标签的向量,例如class 回归元素的标签或值。
您将 X 和 y 创建为由 Year 属性生成的数据框。相反,你必须分成 X_train 和 X_test.
X = df.drop(['Usage'],1)
X_train = df[df['Year'] < 2018]
X_test = df[df['Year'] > 2017]
y_train = df[df['Year'] < 2018]
y_test = df[df['Year'] > 2017]
y_train = y_train['Usage']
y_test = y_test['Usage']
然后你在X_train和y_train
的基础上训练
model = RandomForestRegressor()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
虽然这不是最好的方法。会回来编辑答案,但这应该足以让你现在开始。
我想根据年份将我的数据集拆分为训练和测试数据集。这个想法是将 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() 在 return
中给了我这个错误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))
对于 sklearn 堆栈中的大多数算法,您都有一个标准符号: X,大写字母,通常是一个数组(即使只有一个特征)并以向量形式表示每个数据点。 y,小写字母,通常是表示标签的向量,例如class 回归元素的标签或值。
您将 X 和 y 创建为由 Year 属性生成的数据框。相反,你必须分成 X_train 和 X_test.
X = df.drop(['Usage'],1)
X_train = df[df['Year'] < 2018]
X_test = df[df['Year'] > 2017]
y_train = df[df['Year'] < 2018]
y_test = df[df['Year'] > 2017]
y_train = y_train['Usage']
y_test = y_test['Usage']
然后你在X_train和y_train
的基础上训练model = RandomForestRegressor()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
虽然这不是最好的方法。会回来编辑答案,但这应该足以让你现在开始。