gpt4 book ai didi

python - Scikit学习: TypeError: float() argument must be a string or a number,而不是 'Bunch'

转载 作者:太空宇宙 更新时间:2023-11-03 20:19:19 26 4
gpt4 key购买 nike

我想使用以下方法应用svm,但显然“Bunch”类型不合适。

通常,对于Bunch(类似字典的对象),有趣的属性是:“数据”,要学习的数据和“目标”,分类标签。您可以相应地访问 .data 和 .target 信息。我怎样才能让它工作,因为我有下面的代码?

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)

在“trained_labels”位置的clf.fit行中,我放置了“vectorizer.vocabulary_.keys()”,但它给出:ValueError:错误的输入形状()。我应该怎么做才能获得训练有素的标签并使其发挥作用?

最佳答案

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

Scale each feature by its maximum absolute value

如果你想找到文本数据的向量,那么你需要使用像CountVectorizer这样的东西。请参阅this example来自此处的官方文档。

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

关于python - Scikit学习: TypeError: float() argument must be a string or a number,而不是 'Bunch',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58256824/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com