为了账号安全,请及时绑定邮箱和手机立即绑定

在 sklearn 中训练多个类

在 sklearn 中训练多个类

aluckdog 2021-11-09 18:31:09
我正在寻找一种训练这个数据集的方法,所以我用这个代码用 sklearn 进行了尝试train_x, test_x, train_y, test_y = train_test_split(df[['city','text']], df[['1','2','3','4']], test_size = 0.40, random_state = 21)count_vect = CountVectorizer(analyzer='word', ngram_range=(2,3), max_features=20000)count_vect.fit(df['text'])x_train =  count_vect.transform(train_x)x_test =  count_vect.transform(test_x)classifier = DecisionTreeClassifier()classifier.fit(x_train, train_y)但我有这样的错误ValueError: Number of labels=2348 does not match number of samples=1实际上我不知道是否可以直接用它的 4 个标签来训练我的数据
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

错误是由于以下行:

x_train =  count_vect.transform(train_x)

你看,你的train_xtest_x有两列(来自df[['city','text']]),但CountVectorizer只适用于单列。它只需要一个可迭代的字符串,而不是更多。所以你这样做是对的:

count_vect.fit(df['text'])

因为您只提供一列。但是当您提供train_xin 时count_vect.transform(train_x),它们只count_vect使用列名而不是实际数据。

也许你想要:

x_train = count_vect.transform(train_x['text'])


查看完整回答
反对 回复 2021-11-09
?
慕勒3428872

TA贡献1848条经验 获得超6个赞

错误是因为输入的形状X应该是[n_samples, n_features]. 如果检查 的形状X,应该是 (2348, )。最好的转型X方式

X = X[:, np.newaxis]


查看完整回答
反对 回复 2021-11-09
  • 2 回答
  • 0 关注
  • 223 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信