python sklearn pipiline fit:“AttributeError:找不到更低的”

SY9*_*SY9 0 python machine-learning svm scikit-learn text-classification

我正在尝试使用 sklearn 将 sveveral 文本数据分为 3 个类别。但我得到

“属性错误:未找到下限”

跑步时。

代码:

train, test = train_test_split(df, random_state=42, test_size=0.3, shuffle=True)
X_train = train.contents
X_test = test.contents
Y_train = train.category
Y_test = test.category

clf_svc = Pipeline([('vect', CountVectorizer()),
                    ('tfidf', TfidfVectorizer(tokenizer=',', use_idf=True, stop_words="english")),
                    ('clf', OneVsRestClassifier(LinearSVC(), n_jobs=1)),
                    ])

clf_svc = clf_svc.fit(X_train, Y_train)
predicted_svc = clf_svc(X_test)
print(np.mean(predicted_svc == Y_test))
Run Code Online (Sandbox Code Playgroud)

数据框 (df) 由 2 列组成:内容(长文本数据)和类别(文本数据)。内容是抓取的文本,因此包含数十或数百个单词,类别是单个单词,例如“A”,“B”。

我已经在 stackoverflow 中检查了过去的问题,但我无法解决发生的这个错误。
我很高兴知道解决方案或代码本身的问题。
任何建议和答案将不胜感激。

提前致谢。

Max*_*axU 6

或者删除步骤('vect', CountVectorizer())或使用TfidfTransformer,而不是TfidfVectorizer作为TfidfVectorizer串作为输入,并且期望的阵列 CountVectorizer()返回occurances的矩阵(即,数字矩阵)。

默认情况下,TfidfVectorizer(..., lowercase=True)将尝试“小写”所有字符串,因此会“AttributeError: lower not found”出现错误消息。

参数也tokenizer需要一个可调用的(函数)或None,所以不要指定它。