我正在创建GridSearchCV
分类器
pipeline = Pipeline([
('vect', TfidfVectorizer(stop_words='english',sublinear_tf=True)),
('clf', LogisticRegression())
])
parameters= {}
gridSearchClassifier = GridSearchCV(pipeline, parameters, n_jobs=3, verbose=1, scoring='accuracy')
# Fit/train the gridSearchClassifier on Training Set
gridSearchClassifier.fit(Xtrain, ytrain)
这很有效,我可以预测。但是,现在我想重新训练分类器。为此,我想对一些反馈数据进行fit_transform()
。在
但我得到了这个错误
AttributeError: 'GridSearchCV' object has no attribute 'fit_transform'
基本上我试图fit_transform()
在分类器的内部TfidfVectorizer
。我知道我可以使用named_steps
属性访问Pipeline
的内部组件。我可以为gridSearchClassifier
做类似的操作吗?在
一步一步地叫他们。在
fit_transform
不过是这两行代码,只是没有作为GridSearchCV
的单个方法来实现。在更新
从评论来看,你似乎对GridSearchCV的实际功能有点不知所措。这是一种元方法来拟合具有多个超参数的模型。因此,一旦您调用
^{pr2}$fit
,您将在对象的best_estimator_
字段中得到一个估计器。在您的例子中,它是一个管道,您可以像往常一样提取它的任何部分,因此您应该使用gridsearchcv作为分类器,这只是一种拟合超参数的方法,一旦找到它们,您应该使用
best_estimator_
。但是,请记住,如果您重新安装TFIDF矢量器,那么您的分类器将是无用的;您不能更改数据表示并期望旧模型正常工作,一旦数据更改,您必须重新安装整个分类器(除非这是经过精心设计的更改,并且确保旧维度的含义完全相同-sklearn不支持此类操作,您必须从头开始实现)。在@lejot是正确的,您应该在
gridSearchClassifier
上调用fit()
。在如果}。在
refit=True
被设置在GridSearchCV
上,这是默认设置,那么您可以在安装的gridSearchClassifier
上访问{您可以访问已安装的步骤:
然后,您可以在
^{pr2}$new_X
中转换新文本,方法是:您可以使用此
X_vec
进行预测:您还可以使用对通过整个管道的文本进行预测。在
相关问题 更多 >
编程相关推荐