首页 > 解决方案 > 目标是二进制的,但我得到“ValueError:支持的目标类型是:('binary','multiclass')。得到了'unknown'。”

问题描述

我在使用 sklearn KFold 的简单 ML 模型中遇到问题

我使用以下代码对目标值进行分类:

# Import the DB
df = pd.read_csv("DB_ML_TJA20182019.csv")
#Transform continuous target into binary
category = pd.cut(df.length,bins=[0,4,100],labels=[0,1])
df.insert(18,"length_over", category)

现在,如果我打开 csv,我可以看到一个添加的列(length_over第 18 列,从 0 开始计数),其中包含由列的二值化生成的二值化变量length。然后,我将数据集保存为一个新文件,并使用以下代码将其拆分为测试验证子集:

# Save the dataset with binary target
df.to_csv(r'DB_ML_TJA20182019_multilabel.csv', index = False)

# Load dataset for ML modeling (already imputed)
url = 'DB_ML_TJA20182019_multilabel.csv'
names = ...
dataset = read_csv(url, names=features, skiprows=1)

# Split-out validation dataset
array = dataset.values
X = array[:,0:18]
y = array[:,18]
X_train, X_validation, Y_train, Y_validation = train_test_split(X, y, test_size=0.30, random_state=1)

但是,在进行模型评估和比较之前,我得到了错误:Out: "ValueError: Supported target types are: ('binary', 'multiclass'). Got 'unknown' instead."

我还使用检查了目标的类型

#Check the type of target
from sklearn.utils.multiclass import type_of_target
print(type_of_target(y))

结果是unknown

可能是什么问题?当我打开 csv 时,目标是二进制的,但函数将其视为未知...

dtype 是 int64

标签: pythonpython-3.xpandasmachine-learningscikit-learn

解决方案


推荐阅读