我正在尝试使用AUROC曲线评估logistic回归并交叉验证我的分数。当我不进行交叉验证时,我没有任何问题,但是我真的想使用交叉验证来减少方法的偏差。
无论如何,下面是我在代码开始部分得到的代码和错误术语:
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
该错误发生在倒数第四行,并返回一个整数列表,后跟“不在索引中”
我真的不明白问题出在哪里吗?
这是我对代码的理解:首先,我创建了一个分层kfold和逻辑回归的实例。分层的kfold实例表明要进行五折。接下来,我说对于数据集X中的每个训练和测试折叠,y使逻辑模型适合数据,然后根据测试数据创建针对不同概率的预测列表。稍后(此部分未显示),我将为每个k倍数据创建一个ROC曲线。
再说一次,我不是很了解问题所在,但也许有人可以澄清。我的作品或多或少直接从sklearn中的此链接复制的:https://scikit-learn.org/stable/auto_examples/model_selection/plot_roc_crossval.html#sphx-glr-auto-examples-model-selection-plot-roc-crossval-py
答案 0 :(得分:0)
请添加更多详细信息,以便对其进行真实检查。最好(并且实际上是必需的)一段可以运行以查看错误的代码。
在第一个视图中,您获取了一个熊猫数据框并将其输入到模型中,这是不正确的。 请参阅以下正确的行以获取数据并将其提供给模型:
X = df.drop('Survived', axis=1).values
y = df['Survived'].values
后缀.values
访问存储在这些数据框中的numpy数据对象,这与其余代码一致。
希望能帮助您解决错误。
祝你好运!