Ich trainierte Schätzer mit diesem:Wie klassifiziere ich Text mit einem Schätzer?
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_
Jetzt muß ich mit diesen Schätzer einen Text klassifizieren, aber es ist nicht klar, wie der Text richtig vektorisieren.
Ich muss text
vektorisieren und dann estimator.predict()
mit dem Vektor aufrufen. Die Sache ist, dieser Vektor muss mit den Vektoren übereinstimmen, die verwendet werden, um estimator
zu trainieren (das Wort foobar
muss den gleichen Index wie die Vektoren haben, die verwendet werden, um das Modell zu trainieren). Aus der Dokumentation geht nicht eindeutig hervor, wie man auf diese Weise text
vektorisieren kann.
Wie schreibe ich diese predict()
Funktion?
def predict(estimator, text):
# Vectorize text and call estimator.predict()
EDIT
feature_list
und expected_values
wie folgt vorgenommen:
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
Was ist 'feature_list'? Rohtexte? –
@Vivek Kumar 'feature_list' ist eine Liste von Dateinamen. Jede Datei enthält Text. – Jay
@Vivek Kumar 'feature_list' ist eigentlich ein' np.array() 'von Dateinamen. Ich habe die Frage mit weiteren Informationen aktualisiert. – Jay