如何在交叉验证期间获取实例索引
How to get indices of instances during cross-validation
我在做二分类。请问在做K折交叉验证的时候,如何提取训练数据框误分类或分类实例的真实索引?我找不到这个问题的答案 here.
我按照描述得到了折叠的值:
skf=StratifiedKFold(n_splits=10,random_state=111,shuffle=False)
cv_results = cross_val_score(model, X_train, y_train, cv=skf, scoring='roc_auc')
fold_pred = [pred[j] for i, j in skf.split(X_train,y_train)]
fold_pred
有没有办法得到误分类(或分类)的索引?所以输出是一个数据框,在进行交叉验证时只有错误分类(或分类)的实例。
期望的输出:
具有真实索引的数据框中的错误分类实例。
col1 col2 col3 col4 target
13 0 1 0 0 0
14 0 1 0 0 0
18 0 1 0 0 1
22 0 1 0 0 0
其中输入有 100 个实例,在执行 CV 时有 4 个被错误分类(索引号 13、14、18 和 22)
从 cross_val_predict
你已经有了预测。这是对预测与真实标签不同的数据框进行子集化的问题,例如:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_predict, StratifiedKFold
from sklearn.datasets import load_breast_cancer
import pandas as pd
data = load_breast_cancer()
df = pd.DataFrame(data.data[:,:5],columns=data.feature_names[:5])
df['label'] = data.target
rfc = RandomForestClassifier()
skf = StratifiedKFold(n_splits=10,random_state=111,shuffle=True)
pred = cross_val_predict(rfc, df.iloc[:,:5], df['label'], cv=skf)
df[df['label']!=pred]
mean radius mean texture ... mean smoothness label
3 11.42 20.38 ... 0.14250 0
5 12.45 15.70 ... 0.12780 0
9 12.46 24.04 ... 0.11860 0
22 15.34 14.26 ... 0.10730 0
31 11.84 18.70 ... 0.11090 0
我在做二分类。请问在做K折交叉验证的时候,如何提取训练数据框误分类或分类实例的真实索引?我找不到这个问题的答案 here.
我按照描述得到了折叠的值
skf=StratifiedKFold(n_splits=10,random_state=111,shuffle=False)
cv_results = cross_val_score(model, X_train, y_train, cv=skf, scoring='roc_auc')
fold_pred = [pred[j] for i, j in skf.split(X_train,y_train)]
fold_pred
有没有办法得到误分类(或分类)的索引?所以输出是一个数据框,在进行交叉验证时只有错误分类(或分类)的实例。
期望的输出: 具有真实索引的数据框中的错误分类实例。
col1 col2 col3 col4 target
13 0 1 0 0 0
14 0 1 0 0 0
18 0 1 0 0 1
22 0 1 0 0 0
其中输入有 100 个实例,在执行 CV 时有 4 个被错误分类(索引号 13、14、18 和 22)
从 cross_val_predict
你已经有了预测。这是对预测与真实标签不同的数据框进行子集化的问题,例如:
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_predict, StratifiedKFold
from sklearn.datasets import load_breast_cancer
import pandas as pd
data = load_breast_cancer()
df = pd.DataFrame(data.data[:,:5],columns=data.feature_names[:5])
df['label'] = data.target
rfc = RandomForestClassifier()
skf = StratifiedKFold(n_splits=10,random_state=111,shuffle=True)
pred = cross_val_predict(rfc, df.iloc[:,:5], df['label'], cv=skf)
df[df['label']!=pred]
mean radius mean texture ... mean smoothness label
3 11.42 20.38 ... 0.14250 0
5 12.45 15.70 ... 0.12780 0
9 12.46 24.04 ... 0.11860 0
22 15.34 14.26 ... 0.10730 0
31 11.84 18.70 ... 0.11090 0