我知道这是一个非常经典的问题,可以在这个论坛上多次回答,但我找不到任何明确的答案,从头开始清楚地解释了这一点。
首先,假设我的数据集my_data有4个变量,如 my_data = variable1,variable2,variable3,target_variable
所以,让我们来解决我的问题。我将解释我的所有步骤并向我寻求帮助以解决我被困的问题:
SubDbContext newContext = new SubDbContext(string.Format(userDatabase, "sub_db_" + userId));
newContext.Countries.FirstOrDefault();
newContext.Cities.FirstOrDefault();
在这一步,我想根据训练数据集拟合我的模型,然后 在测试数据集上使用该模型并预测测试目标。我还想计算所需的统计数据,如MSE,r2等,以了解我的模型的性能。
如果有人帮我解决Step5的一些基本代码,我会很感激。
谢谢&的问候,
Cagdas
答案 0 :(得分:1)
首先,您正在使用scikit库的已弃用软件包cross-validation
。新包名为model_selection
。所以我在这个答案中使用它。
其次,您要导入RandomForestRegressor
,但在代码中定义RandomForestClassifier
。我在这里接受RandomForestRegressor
,因为您想要的指标(MSE,R2等)仅针对回归问题而非分类定义。
有多种方法可以做你想要的。我假设您在此尝试使用KFold交叉验证,您希望将每个折叠的左侧数据用作测试折叠。要做到这一点,我们可以做到:
predictors = my_data[[
'variable1',
'variable2',
'variable3'
]]
targets = my_data.target_variable
from sklearn import model_selection
from sklearn.ensemble import RandomForestRegressor
from sklearn import metrics
model = RandomForestClassifier(n_estimators=100)
cv = model_selection.KFold(n_splits=3)
for train_index, test_index in kf.split(X):
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = predictors[train_index], predictors[test_index]
y_train, y_test = targets[train_index], targets[test_index]
# For training, fit() is used
model.fit(X_train, y_train)
# Default metric is R2 for regression, which can be accessed by score()
model.score(X_test, y_test)
# For other metrics, we need the predictions of the model
y_pred = model.predict(X_test)
metrics.mean_squared_error(y_test, y_pred)
metrics.r2_score(y_test, y_pred)
对于所有这些,文档是你最好的朋友。 scikit-learn文档是我见过的最好的文档之一。以下链接可以帮助您了解更多信息:
答案 1 :(得分:0)
在for循环中也应该是:
model = RandomForestRegressor(n_estimators=100)
for train_index, test_index in cv.split(X):