Python SKlearn TfidfVectorizer 参数错误

Posted

技术标签:

【中文标题】Python SKlearn TfidfVectorizer 参数错误【英文标题】:Python SKlearn TfidfVectorizer arguments error 【发布时间】:2021-12-31 04:29:06 【问题描述】:

我一直在使用SKlearn TfidfVectorizer,但突然出现错误:

TypeError: __init__() takes 1 positional argument but 2 positional arguments 
(and 4 keyword-only arguments) were given

我给出的论点是:

tfidf_vectorizer = TfidfVectorizer(X_train, ngram_range=(1,2), max_df=0.9, min_df=5, token_pattern=r'(\S+)' )

其中 X_train 是一个字符串列表,例如:

 'done earlier siesta',
 'sunday mass us family greatful opportunity',
 'wet wet wet frustrated outside',
 'tired headache headache',
 'friends creative talented inspired friendship love creatives',
 'grateful lucky beaches sunshine hubby family pets awesome sunday',
 'latest artwork',
 'two headache sick tired sore'

我很困惑为什么当我只输入一个 X_train 列表时,它会说我给出了两个位置参数。即使我将语句简化为:

TfidfVectorizer(X_train)

它仍然给出了同样的错误,说我给出了两个位置参数。 我正在使用 Sklearn 1.0.1,但我尝试将其恢复为 1.0.0,但它仍然有相同的错误 错误可能在我传入的列表中吗?

【问题讨论】:

【参考方案1】:

图书馆及其实施确实发生了变化。如果我们查看 0.23.1 版本,我们会收到一条警告,指出它需要通过关键字 args。

tfidvect=TfidfVectorizer(X_train)
FutureWarning: Pass input=['done earlier siesta', 'sunday mass us family greatful opportunity', 'wet wet wet frustrated outside', 'tired headache headache', 'friends creative talented inspired friendship love creatives', 'grateful lucky beaches sunshine hubby family pets awesome sunday', 'latest artwork', 'two headache sick tired sore'] as keyword args. From version 0.25 passing these as positional arguments will result in an error
  warnings.warn("Pass  as keyword args. From version 0.25 "

这么快进到 1.0.1,同样的调用会是这样的:

tfidvect1_01=TfidfVectorizer(input=X_train) # input positional argument

添加了@Ambrayers。

另一种方法是,创建对象然后fit_transform,参考official documentation中的示例

vectorizer = TfidfVectorizer()  
X_train = vectorizer.fit_transform(X_train)

【讨论】:

谢谢您,您说的完全正确,这是由于实施更改所致。您的解决方案非常出色。还想补充一点,我发现另一个有效的解决方案是:vectorizer = TfidfVectorizer() 然后 X_train = vectorizer.fit_transform(X_train) 执行矢量化和 fit_transform() @Ambrayers 添加。谢谢

以上是关于Python SKlearn TfidfVectorizer 参数错误的主要内容,如果未能解决你的问题,请参考以下文章

Python——sklearn提供的自带的数据集

sklearn工具-python数据集操作API

python---sklearn---kmeans

Python数模笔记-Sklearn 介绍

python sklearn 机器学习sklearn.model_selection 介绍

python库之——sklearn