from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
Hallo Ich habe die folgende Liste der Kommentare:Warum funktioniert die folgende Teilanpassung nicht?
comments = ['I am very agry','this is not interesting','I am very happy']
Dies sind die entsprechenden Etiketten:
sents = ['angry','indiferent','happy']
ich TFIDF verwende diese Kommentare zu vektorisieren wie folgt:
tfidf_vectorizer = TfidfVectorizer(analyzer='word')
tfidf = tfidf_vectorizer.fit_transform(comments)
from sklearn import preprocessing
Ich verwende Label-Encoder zur Vektorisierung der Etiketten:
le = preprocessing.LabelEncoder()
le.fit(sents)
labels = le.transform(sents)
print(labels.shape)
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.model_selection import train_test_split
with open('tfidf.pickle','wb') as idxf:
pickle.dump(tfidf, idxf, pickle.HIGHEST_PROTOCOL)
with open('tfidf_vectorizer.pickle','wb') as idxf:
pickle.dump(tfidf_vectorizer, idxf, pickle.HIGHEST_PROTOCOL)
Hier sind passiv aggressiv bin mit dem Modell passen:
clf2 = PassiveAggressiveClassifier()
with open('passive.pickle','wb') as idxf:
pickle.dump(clf2, idxf, pickle.HIGHEST_PROTOCOL)
with open('passive.pickle', 'rb') as infile:
clf2 = pickle.load(infile)
with open('tfidf_vectorizer.pickle', 'rb') as infile:
tfidf_vectorizer = pickle.load(infile)
with open('tfidf.pickle', 'rb') as infile:
tfidf = pickle.load(infile)
Hier Ich versuche, die Nutzung von Teil fit zu testen, wie mit drei neuen Kommentaren und ihren entsprechenden Etikett folgt:
new_comments = ['I love the life','I hate you','this is not important']
new_labels = [1,0,2]
vec_new_comments = tfidf_vectorizer.transform(new_comments)
print(clf2.predict(vec_new_comments))
clf2.partial_fit(vec_new_comments, new_labels)
Das Problem ist, dass ich nicht die richtigen Ergebnisse nach der Teilanpassung wie folgt erhalten:
print('AFTER THIS UPDATE THE RESULT SHOULD BE 1,0,2??')
print(clf2.predict(vec_new_comments))
aber ich erhalte diese Ausgabe:
[2 2 2]
So habe ich wirklich schätzen zu finden unterstützen, warum das Modell nicht aktualisiert wird, wenn ich es mit den gleichen Beispielen mich entschieden, dass es trainiert werden verwendet die gewünschter Ausgang sollte sein:
Ich würde gerne Unterstützung zu ajust vielleicht die Hyperparameter schätzen, um die gewünschte Ausgabe zu sehen.
dies ist der vollständige Code, die teilweise fit zeigen:
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer
import sys
from sklearn.metrics.pairwise import cosine_similarity
import random
comments = ['I am very agry','this is not interesting','I am very happy']
sents = ['angry','indiferent','happy']
tfidf_vectorizer = TfidfVectorizer(analyzer='word')
tfidf = tfidf_vectorizer.fit_transform(comments)
#print(tfidf.shape)
from sklearn import preprocessing
le = preprocessing.LabelEncoder()
le.fit(sents)
labels = le.transform(sents)
from sklearn.linear_model import PassiveAggressiveClassifier
from sklearn.model_selection import train_test_split
with open('tfidf.pickle','wb') as idxf:
pickle.dump(tfidf, idxf, pickle.HIGHEST_PROTOCOL)
with open('tfidf_vectorizer.pickle','wb') as idxf:
pickle.dump(tfidf_vectorizer, idxf, pickle.HIGHEST_PROTOCOL)
clf2 = PassiveAggressiveClassifier()
clf2.fit(tfidf, labels)
with open('passive.pickle','wb') as idxf:
pickle.dump(clf2, idxf, pickle.HIGHEST_PROTOCOL)
with open('passive.pickle', 'rb') as infile:
clf2 = pickle.load(infile)
with open('tfidf_vectorizer.pickle', 'rb') as infile:
tfidf_vectorizer = pickle.load(infile)
with open('tfidf.pickle', 'rb') as infile:
tfidf = pickle.load(infile)
new_comments = ['I love the life','I hate you','this is not important']
new_labels = [1,0,2]
vec_new_comments = tfidf_vectorizer.transform(new_comments)
clf2.partial_fit(vec_new_comments, new_labels)
print('AFTER THIS UPDATE THE RESULT SHOULD BE 1,0,2??')
print(clf2.predict(vec_new_comments))
Allerdings habe ich:
AFTER THIS UPDATE THE RESULT SHOULD BE 1,0,2??
[2 2 2]
Wie Sie die 'clf2' passend sind. Bitte posten Sie den gesamten Code als ein Code-Snippet. Jetzt ist es sehr nervig, Paste immer wieder zu kopieren. –
@VivekKumar Ich habe die Frage aktualisiert, ich habe den kompletten Code hinzugefügt, um mein Problem zu reproduzieren, danke für die Unterstützung – neo33