我在学习机器学习,但对此我不太清楚。我在Stack溢出中看到了类似的帖子,但我可能需要您的帮助才能更好地理解。
代码1
kfold = model_selection.KFold(n_splits=10, random_state=7, shuffle=True)
lrCV = LogisticRegression(class_weight='balanced')
scoring = 'roc_auc'
lr_results = model_selection.cross_val_score(lrCV, X_train, y_train, cv=kfold, scoring=scoring)结果
array([0.91374269, 0.70209059, 0.89164087, 0.8021978 , 0.85077519,
0.80888889, 0.79338843, 0.76446281, 0.84803002, 0.74506579])代码2
lrmodel = LogisticRegression(class_weight='balanced')
lrmodel.fit(X_train, y_train)
lr_auc = roc_auc_score(y_test, lrmodel.predict(X_test))结果
Logistic Regression AUC = 0.67显然,代码2比代码1低得多。是什么导致了这种差异?我对ML和自学很陌生。请多告诉我一些这方面的情况。
发布于 2022-06-21 08:16:21
首先,两个模型计算AUC的方法完全相同。这两个实例都使用sklearn roc_auc_score。
代码1:https://scikit-learn.org/stable/modules/model_evaluation.html
代码2:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.roc_auc_score.html
对于代码1,如果您按下roc_auc旁边的链接,您将在与代码2相同的页面上结束。
我认为区别很简单,因为对于代码1来说,你使用的是K折叠简历和洗牌。对于代码2,您使用的是火车测试拆分。我不知道关于你手头数据的任何细节,但是由于有这么大的差异,你的样本大小是多少?如果你的样本很小,你可能会因为你的训练-测试分裂而出现偏见。
https://stackoverflow.com/questions/72697204
复制相似问题