首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ValueError:类数必须大于一个;在MultiLabel分类问题中得到一个类

ValueError:类数必须大于一个;在MultiLabel分类问题中得到一个类
EN

Data Science用户
提问于 2020-04-18 13:36:48
回答 1查看 5.8K关注 0票数 2

我在Python中研究一个多标签分类问题。我有一个数据集与文本和约20k独特的标签。我将文本转换为单词嵌入,现在我在ChainClassifier中使用它来预测每个文本可能具有的标记。

代码语言:javascript
复制
from skmultilearn.problem_transform import LabelPowerset, ClassifierChain, BinaryRelevance
from sklearn.svm import SVC

df = pd.read_csv('sample_fos.csv')
df = df.dropna()
df.fos = df.fos.str.split(',')

mlb = MultiLabelBinarizer()

data = df.join(pd.DataFrame(mlb.fit_transform(df.pop('fos')),
                          columns=mlb.classes_,
                          index=df.index))

labels = mlb.classes_

X_train, X_test, y_train, y_test = train_test_split(data[features], data[labels], test_size=0.20, shuffle=True)

clf = ClassifierChain(classifier=SVC(gamma="auto"))
clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)

我得到以下错误:

代码语言:javascript
复制
  File "<ipython-input-54-976064cc6433>", line 30, in <module>
    clf.fit(X_train,y_train)

  File "/lib/python3.7/site-packages/skmultilearn/problem_transform/cc.py", line 155, in fit
    X_extended), self._ensure_output_format(y_subset))

  File "/lib/python3.7/site-packages/sklearn/svm/base.py", line 147, in fit
    y = self._validate_targets(y)

  File "/lib/python3.7/site-packages/sklearn/svm/base.py", line 521, in _validate_targets
    " class" % len(cls))

ValueError: The number of classes has to be greater than one; got 1 class

据我所知,这意味着标签列中只有一个类( 01)。

但是,运行下面的代码段,我发现我的所有列都有两个唯一的值

代码语言:javascript
复制
b = []
for i in labels:
    b.append(len(data[i].unique()))
print(min(b),max(b))
>> 2, 2
EN

回答 1

Data Science用户

发布于 2020-04-21 10:51:03

你能看到有多少个班在接受训练和考试吗?

代码语言:javascript
复制
y_train.unique()
y_test.unique()

可能会发生这样的情况:在某个时候,只有一个标签的分割,如果数据很小或严重不平衡,就会有更多的机会。解决这一问题的一种方法是对目标进行分层。

代码语言:javascript
复制
train_test_split(data[features], data[labels], test_size=0.20, shuffle=True,stratify=data[labels])
票数 1
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/72536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档