Cómo llevar a cabo la selección de características (rfecv) de la validación cruzada en sklearn

fem:

Quiero realizar recursive feature elimination with cross validation (rfecv)en 10 veces la validación cruzada (es decir, cross_val_predicto cross_validate) en sklearn.

Dado que rfecven sí tiene una parte de la validación cruzada en su nombre, no me queda claro cómo hacerlo. Mi código actual es la siguiente.

from sklearn import datasets
iris = datasets.load_iris()
X = iris.data
y = iris.target

from sklearn.ensemble import RandomForestClassifier

clf = RandomForestClassifier(random_state = 0, class_weight="balanced")

k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)

rfecv = RFECV(estimator=clf, step=1, cv=k_fold)

Por favor, hágamelo saber cómo puedo usar los datos Xy ycon rfecven 10-fold cross validation.

Estoy feliz de proporcionar más detalles si es necesario.

desertnaut:

Para utilizar en función de eliminación recursiva en conjunto con un pre-definido k_fold, se debe utilizar RFEy no RFECV:

from sklearn.feature_selection import RFE
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import StratifiedKFold
from sklearn.metrics import accuracy_score
from sklearn import datasets

iris = datasets.load_iris()
X = iris.data
y = iris.target

k_fold = StratifiedKFold(n_splits=10, shuffle=True, random_state=0)
clf = RandomForestClassifier(random_state = 0, class_weight="balanced")
selector = RFE(clf, 5, step=1)

cv_acc = []

for train_index, val_index in k_fold.split(X, y):
    selector.fit(X[train_index], y[train_index])
    pred = selector.predict(X[val_index])
    acc = accuracy_score(y[val_index], pred)
    cv_acc.append(acc)

cv_acc
# result:
[1.0,
 0.9333333333333333,
 0.9333333333333333,
 1.0,
 0.9333333333333333,
 0.9333333333333333,
 0.8666666666666667,
 1.0,
 0.8666666666666667,
 0.9333333333333333]

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=369648&siteId=1
Recomendado
Clasificación