我正在尝试使用AUROC曲线评估逻辑回归,并交叉验证我的分数。当我不交叉验证时,我没有问题,但我真的想使用交叉验证来帮助减少我的方法中的偏差。
无论如何,下面是我在代码的开头部分得到的代码和错误术语:
X = df.drop('Survived', axis=1)
y = df['Survived']
skf = StratifiedKFold(n_splits=5)
logmodel = LogisticRegression()
i=0
for train, test in skf.split(X,y):
logmodel.fit(X[train], y[train]) # error occurs here
predictions = logmodel.predict_proba(X[test])
# a bunch of code that I haven't included which creates the ROC curve
i += 1
错误发生在倒数第四行,返回一个整数列表,后跟"not in index">
我真的不明白问题出在哪里?
这是我对代码的理解:首先,我创建了一个分层kfold和逻辑回归的实例。分层kfold的例子表明要进行五次折叠。接下来,我说,对于我的数据集X,y中的每个训练和测试折叠,我将逻辑模型与数据拟合,然后基于测试数据创建不同概率的预测列表。稍后(此部分未显示(,我将为每个k倍的数据创建ROC曲线。
再说一遍,我真的不明白问题出在哪里,但也许有人可以澄清。我的作品或多或少是直接从sklearn的这个链接复制的:https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc_crossval.html#sphx-glr汽车实例模型选择图roc crossval py
请添加更多详细信息,以便对其进行真正的检查。最好是(实际上是必需的(一段代码,人们可以运行它来查看错误。
在第一个视图中,您获取pandas数据帧并将其输入到模型中,但这是不正确的。请参阅以下正确的行,以检索数据并将其提供给模型:
X = df.drop('Survived', axis=1).values
y = df['Survived'].values
.values
后缀访问存储在这些数据帧中的numpy数据对象,这与代码的其余部分一致。
希望这能帮助您解决错误。
祝你好运!