gpt4 book ai didi

python - 缺少值的sklearn RFECV

转载 作者:行者123 更新时间:2023-12-05 05:22:11 25 4
gpt4 key购买 nike

我对 sklearn 中的教程稍作修改

所以X有缺失值。这不适用于原始 svc,因此我尝试创建一个 clf 作为管道——一个 imputer,然后是一个 svc。但是,我仍然收到缺失值错误。将 RFECV 等特征选择方法与流水线中的分类器链接在一起时,如何估算?

print(__doc__)

import matplotlib.pyplot as plt
from sklearn.svm import SVC
from sklearn.model_selection import StratifiedKFold
from sklearn.feature_selection import RFECV
from sklearn.datasets import make_classification
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import Imputer

# Build a classification task using 3 informative features
X, y = make_classification(n_samples=20, n_features=25, n_informative=3,
n_redundant=2, n_repeated=0, n_classes=8,
n_clusters_per_class=1, random_state=0)

X[1][8]=np.NAN#plant missing value

# Create the RFE object and compute a cross-validated score.
svc = SVC(kernel="linear")
clf=make_pipeline(Imputer(),svc)
# The "accuracy" scoring is proportional to the number of correct
# classifications
rfecv = RFECV(estimator=clf, step=1, cv=StratifiedKFold(2),
scoring='accuracy')
rfecv.fit(X, y)

print("Optimal number of features : %d" % rfecv.n_features_)

# Plot number of features VS. cross-validation scores
plt.figure()
plt.xlabel("Number of features selected")
plt.ylabel("Cross validation score (nb of correct classifications)")
plt.plot(range(1, len(rfecv.grid_scores_) + 1), rfecv.grid_scores_)
plt.show()

最佳答案

您在这里尝试做的事情有两个问题:

  1. RFECV 在开始时检查 X 是否适合函数,通过调用 check_X_y(X, y, "csr")。这会导致 ValueError 你正在查看,因为 X 甚至没有到达输入器。

  2. 即使情况并非如此,您似乎也无法使用管道在 RFECV 中,因为该分类器不公开“coef_”或“feature_importances_”属性,这是使用的先决条件RFECV。

我建议在整个 X 上使用 Imputer,即使这可能会导致训练数据和测试数据之间发生间接泄漏。然后,您可以直接在 SVC 分类器上运行 RFECV。

X = Imputer().fit_transform(X)
rfecv = RFECV(estimator=svc, step=1, cv=StratifiedKFold(2),
scoring='accuracy')
rfecv.fit(X, y)

关于python - 缺少值的sklearn RFECV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41170927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com