首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高验证AUC -低测试AUC

高验证AUC -低测试AUC
EN

Stack Overflow用户
提问于 2020-06-15 18:26:37
回答 1查看 191关注 0票数 0

我正在使用kaggle的HR Attrition数据集(在班级竞赛中),它包含1628行和27列。大多数功能在本质上是分类的,我使用随机森林并使用Stratified K fold (10折)进行验证,我的验证AUC相当高,约为0.98-99。在提交时,我无法获得超过0.85的AUC,这是一个巨大的偏差。我尝试了很多方法,比如PCA和特征选择,但我的验证并不可信,提交分数也没有提高。

代码语言:javascript
复制
train_data = pd.read_csv('train.csv')
# label encoding
lbl = LabelEncoder()
cat_feats = [f for f in train_data.columns if train_data[f].dtype == object]
for f in cat_feats:
train_data[f] = lbl.fit_transform(train_data[f])
test_data[f] = lbl.transform(test_data[f])

train_id = train_data.Id
train_data = train_data.drop(['Behaviour','Id'],axis = 1) # behaviour has 
# only 1 value

X = train_data.drop('Attrition',axis = 1)
y = train_data.Attrition

# Standard Scaling
skf = StratifiedKFold(n_splits = 10,random_state=42,shuffle=True)

numeric = ['Age','MonthlyIncome','EmployeeNumber']
# target encoding
categorical = [f for f in X.columns if f not in numeric]
pre_pipe = make_column_transformer((TargetEncoder(),categorical), 
(StandardScaler(),numeric))
pipe_rf = make_pipeline(pre_pipe,RandomForestClassifier())

print('RF:',np.mean(cross_val_score(X=X,y=y,cv=skf,estimator=pipe_rf,scoring='accuracy')))

使用目标编码,我的验证给出了平均98%的准确率(数据是平衡的,所以使用准确度,AUC几乎是1),但提交分数最高为85%。我该怎么办?

EN

回答 1

Stack Overflow用户

发布于 2020-06-18 20:45:41

我在这里只是天真的,因为通常交叉验证分数不应该离测试分数那么远。

我只想确保我们谈论的是相同的指标。

  1. 交叉验证分数返回准确性
  2. 也许竞争是在AUC(曲线下面积)

准确率可以达到98%,但如果希望交叉验证中的AUC预测更新最后一行,则auc仍然只能达到85%

print('RF:',np.mean(cross_val_score(X=X,y=y,cv=skf,estimator=pipe_rf,scoring=‘roc_auc’)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62386250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档