我訓練估計與此:如何用估算器對文本進行分類?
def train_estimator(feature_list, expected_values, k=5):
pipeline = Pipeline([('vect', CountVectorizer(input='filename', stop_words='english')),
('clf', MultinomialNB())])
parameters = {'vect__ngram_range':[(1, 1), (1, 2), (1, 3)],
'vect__min_df':[0.001, 0.01, 0.02, 0.05, 0.1],
'vect__max_df':[0.85, 0.90, 0.95, 0.99, 1.0],
'clf__alpha':[0.001, 0.01, 0.1, 0.2, 0.5, 1.0]}
gs_clf = GridSearchCV(pipeline, parameters, n_jobs=6, cv=k, verbose=1, refit=True, scoring='roc_auc')
gs_clf.fit(feature_list, expected_values)
return gs_clf.best_estimator_
現在我需要一些文字與此估計進行分類,但其並不清楚如何正確地矢量化的文本。
我需要矢量化text
,然後用矢量調用estimator.predict()
。問題是,這個向量必須與用於訓練estimator
的向量(foobar
這個詞必須與用於訓練模型的向量相同的索引)一致。從文檔中不清楚如何以這種方式矢量化text
。
我該如何編寫這個predict()
函數?
def predict(estimator, text):
# Vectorize text and call estimator.predict()
編輯
feature_list
和expected_values
作了如下:
def fetch_training_set(doc_iterator):
files, labels = list(), list()
for row in doc_iterator:
filename = 'somepath/%s.txt' % random()
with open(filename, 'w', encoding='utf-8') as f:
f.write(row['text'])
files.append(filename)
labels.append(row['label'])
feature_list = np.array(files)
expected_values = np.array(labels)
return feature_list, expected_values
什麼是'feature_list'?原始文本? –
@Vivek Kumar'feature_list'是一個文件名列表。每個文件都包含文本。 – Jay
@Vivek Kumar'feature_list'實際上是一個'np.array()'文件名。我用更多的信息更新了這個問題。 – Jay