3

次のコードがあります (こちらのサンプルに基づく) が、機能していません。

[...]
def my_analyzer(s):
    return s.split()
my_vectorizer = CountVectorizer(analyzer=my_analyzer)
X_train = my_vectorizer.fit_transform(traindata)

ch2 = SelectKBest(chi2,k=1)
X_train = ch2.fit_transform(X_train,Y_train)
[...]

を呼び出すと、次のエラーが表示されますfit_transform

AttributeError: 'function' object has no attribute 'analyze'

ドキュメントによると、CountVectorizer は次のように作成する必要がありますvectorizer = CountVectorizer(tokenizer=my_tokenizer)。ただし、これを行うと、次のエラーが発生します"got an unexpected keyword argument 'tokenizer'"

私の実際の scikit-learn のバージョンは 0.10 です。

4

1 に答える 1

3

あなたは、ベクトライザーがオーバーホールされた0.11(まもなくリリースされる予定)のドキュメントを見ています。0.10のドキュメントを確認してください。tokenizer引数はなく、メソッドanalyzerを実装するオブジェクトである必要があります。analyze

class MyAnalyzer(object):
    @staticmethod
    def analyze(s):
        return s.split()

v = CountVectorizer(analyzer=MyAnalyzer())

http://scikit-learn.org/devは次のリリース(いつでも変更される可能性があります)のドキュメントですが、http:// scikit-learn/stableには現在の安定バージョンのドキュメントがあります。

于 2012-04-29T16:14:55.343 に答える