python sklearn pipiline fit:" AttributeError:lower not found"

时间:2018-05-05 18:29:33

标签: python machine-learning scikit-learn svm text-classification

我尝试使用sklearn将两个文本数据分类为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))

Dataframe(df)由2列组成:内容(长文本数据)和类别(文本 数据)。内容是被删除的文本,因此包含数十或数百个单词,并且类别是单个单词,例如" A"," B"。

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

删除步骤('vect', CountVectorizer())或使用TfidfTransformer代替TfidfVectorizer,因为TfidfVectorizer期望字符串数组作为输入,CountVectorizer()返回出现的矩阵(即数字矩阵)。

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

参数tokenizer也需要可调用(函数)或None,因此不要指定它。