【问题标题】:cross_val_score writes that target variable is unknowncross_val_score 写入目标变量未知
【发布时间】:2022-01-19 23:55:42
【问题描述】:

我的目标变量是 Survived 并且只有 0 和 1 值,我的以下代码导致错误:

kfold = StratifiedKFold(n_splits=8,shuffle=True, random_state=42)

rs = 15
clrs = []

clrs.append(AdaBoostClassifier(random_state=rs))
clrs.append(GradientBoostingClassifier(random_state=rs))
clrs.append(RandomForestClassifier(random_state=rs))
clrs.append(ExtraTreesClassifier(random_state = rs))
clrs.append(DecisionTreeClassifier(random_state = rs))

cv_results = []
for clr in clrs :
    cv_results.append(cross_val_score(clr, X_train, y_train , scoring = 'accuracy', cv = kfold, n_jobs=-1))

这里是错误:

ValueError: Supported target types are: ('binary', 'multiclass'). Got 'unknown' instead.

这是我的目标:

【问题讨论】:

  • 你试过np.unique(y_train)或者检查y_train中是否有空值

标签: pandas scikit-learn cross-validation k-fold


【解决方案1】:

您展示了df 的屏幕截图,我假设您的y_train 来自Survived 列。它是 dtype object,这意味着它可以是字符串或混合的。因此,您会收到该错误。您需要将其转换为整数:

例如:

df = pd.DataFrame(np.random.uniform(0,1,(100,3)))
df['Survived'] = np.random.choice(['0','1'],100)
X_train = df.drop('Survived',axis=1)
y_train = df['Survived'].astype(int)

kfold = StratifiedKFold(n_splits=8,shuffle=True, random_state=42)

rs = 15
clrs = []

clrs.append(AdaBoostClassifier(random_state=rs))
clrs.append(GradientBoostingClassifier(random_state=rs))
clrs.append(RandomForestClassifier(random_state=rs))

cv_results = []
for clr in clrs :
    cv_results.append(cross_val_score(clr, X_train, y_train,cv = kfold))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    • 1970-01-01
    • 2021-04-21
    • 2014-04-06
    • 1970-01-01
    相关资源
    最近更新 更多