首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scikit学习: TypeError: float()参数必须是字符串或数字,而不是“Bunch”

Scikit学习: TypeError: float()参数必须是字符串或数字,而不是“Bunch”
EN

Stack Overflow用户
提问于 2019-10-06 11:32:50
回答 1查看 2.1K关注 0票数 1

我想使用下面的方法来应用svm,但是显然"Bunch“类型是不合适的。

通常,对于类字典对象,有趣的属性是:‘data’,需要学习的数据和‘目标值’,分类标签。您可以相应地访问.data和.target信息。我如何使它工作,因为我有下面的代码?

代码语言:javascript
复制
import pandas as pd
from sklearn import preprocessing

#Call the data below using scikit learn which stores them in Bunch

newsgroups_train = fetch_20newsgroups(subset='train',remove=('headers', 'footers', 'quotes'), categories = cats)
newsgroups_test = fetch_20newsgroups(subset='test',remove=('headers', 'footers', 'quotes'), categories = cats)
vectorizer = TfidfVectorizer( stop_words = 'english') #new

vectors = vectorizer.fit_transform(newsgroups_train.data) #new

vectors_test = vectorizer.transform(newsgroups_test.data) #new

max_abs_scaler = preprocessing.MaxAbsScaler()
scaled_train_data = max_abs_scaler.fit_transform(vectors)#corrected
scaled_test_data = max_abs_scaler.transform(vectors_test)
clf=CalibratedClassifierCV(OneVsRestClassifier(SVC(C=1)))
clf.fit(scaled_train_data, train_labels)
predictions=clf.predict(scaled_test_data)
proba=clf.predict_proba(scaled_test_data)

clf.fit行的"trained_labels“位置上,我将"vectorizer.vocabulary_.keys()”放在“vectorizer.vocabulary_.keys()”中,但它给出了:ValueError: bad input shape ()。我该怎么做才能得到受过训练的标签并使其发挥作用?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-06 14:22:53

您正在尝试对文本数据应用数值缩放操作。这在逻辑上是不正确的。如果您看到正式文件 of MaxAbsScalar,它的功能是:

按其最大绝对值对每个特征进行缩放。

如果您想要找到文本数据的向量,那么您需要使用类似于CountVectorizer的东西。请参阅这里的官方文档中的这个例子

或者,您也可以尝试TfIDfTransformer这里是将它与新闻组数据一起使用的示例。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58256824

复制
相关文章

相似问题

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