python sklearn pipiline fit:“AttributeError:未找到下限”

Posted

技术标签:

【中文标题】python sklearn pipiline fit:“AttributeError:未找到下限”【英文标题】:python sklearn pipiline fit: "AttributeError: lower not found" 【发布时间】:2018-10-15 23:51:39 【问题描述】:

我正在尝试使用 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))

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

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

提前致谢。

【问题讨论】:

您可以一起删除 CountVectorizer。 TfidfVectorizer 将为您做到这一点。 【参考方案1】:

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

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

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

【讨论】:

以上是关于python sklearn pipiline fit:“AttributeError:未找到下限”的主要内容,如果未能解决你的问题,请参考以下文章

自动sklearn安装错误

在 anaconda 中找不到 sklearn 模块

F_Regression 来自 sklearn.feature_selection

如何使用 python 打印精度、召回率、f 分数?

sklearn中报错ValueError: Expected 2D array, got 1D array instead:

sklearn工具-分类器评估指标