我有以下代码(基于此处的示例),但它不起作用:
[...]
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。
您正在查看 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 具有当前稳定版本的文档。