【发布时间】:2020-02-03 23:56:50
【问题描述】:
我想使用以下方法应用 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: bad input shape ()。我应该怎么做才能获得训练有素的标签并使其发挥作用?
【问题讨论】:
标签: python pandas scikit-learn nlp