我一直在使用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,但它仍然有相同的錯誤錯誤是否在我傳入的串列中?
uj5u.com熱心網友回復:
庫及其實作確實發生了變化。如果我們查看版本,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參考官方檔案中的示例
vectorizer = TfidfVectorizer()
X_train = vectorizer.fit_transform(X_train)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/364539.html
標籤:Python 机器学习 scikit-学习 无印良品 tfidfvectorizer
上一篇:超引數調整精度保持不變后
