我正在尝试使用sklearn将几个文本数据分为3类。但是我越来越


  “ AttributeError:找不到更低的值”


运行时。

码:

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))


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

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

提前致谢。

最佳答案

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

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

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

关于python - python sklearn pipiline fit:“AttributeError:找不到更低的值”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50192763/

10-12 23:56