Python 使用交叉验证和ROC评估逻辑回归

Python 使用交叉验证和ROC评估逻辑回归,python,scikit-learn,logistic-regression,cross-validation,sklearn-pandas,Python,Scikit Learn,Logistic Regression,Cross Validation,Sklearn Pandas,我试图使用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

我试图使用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中的这个链接复制的:

请添加更多详细信息,以便能够真正检查。最好是(而且实际上是必需的)一段可以运行以查看错误的代码

从第一个视图中,您获取一个熊猫数据帧并将其馈送到模型中,这是不正确的。 请参阅以下几行内容,这些内容对于检索数据并将其提供给模型是正确的:

X = df.drop('Survived', axis=1).values
y = df['Survived'].values
.values
后缀访问存储在这些数据帧中的numpy数据对象,这与代码的其余部分一致

希望这能帮助您解决错误


祝你好运

请参阅有关问题的指南。请附上准确的错误行,以便我们可以看到错误。另外,你的标题是误导性的-你在逻辑模型中有错误,而不是在验证步骤(这里也不包括)中,你只是陈述你所知道的,没有问题。您希望验证您的知识吗?X,y是熊猫对象。您需要使用
iloc
来访问元素。看见或者你可以按照@mr_mo的建议,首先将pandas对象转换为numpy数组。@VivekKumar谢谢!!!!这很有效。