Ich arbeite im Kundensupport, und ich verwende scikit-learn, um Tags für unsere Tickets vorherzusagen, mit einem Trainingssatz von Tickets (ca. 40.000 Tickets im Training einstellen).Python: mit scikit-lerne vorhersagen, gebe leere Vorhersagen
Ich verwende das Klassifikationsmodell basierend auf this one. Es sagt nur "()" als die Tags für viele meiner Testsätze voraus, auch wenn keines der Tickets im Trainingssatz ohne Tags ist.
Meine Trainingsdaten für Tags ist eine Liste von Listen, wie:
tags_train = [['international_solved'], ['from_build_guidelines my_new_idea eligibility'], ['dropbox other submitted_faq submitted_help'], ['my_new_idea_solved'], ['decline macro_backer_paypal macro_prob_errored_pledge_check_credit_card_us loading_problems'], ['dropbox macro__turnaround_time other plq__turnaround_time submitted_help'], ['dropbox macro_creator__logo_style_guide outreach press submitted_help']]
Während meine Trainingsdaten für Beschreibungen Ticket nur eine Liste von Strings, zB:
descs_train = ['description of ticket one', 'description of ticket two', etc]
Hier die relevant ist Teil meines Code, um das Modell zu bauen:
import numpy as np
import scipy
from sklearn.pipeline import Pipeline
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.multiclass import OneVsRestClassifier
from sklearn.svm import LinearSVC
# We have lists called tags_train, descs_train, tags_test, descs_test with the test and train data
X_train = np.array(descs_train)
y_train = tags_train
X_test = np.array(descs_test)
classifier = Pipeline([
('vectorizer', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', OneVsRestClassifier(LinearSVC(class_weight='auto')))])
classifier.fit(X_train, y_train)
predicted = classifier.predict(X_test)
jedoch „vorhergesagt“ gibt eine Liste, die wie folgt aussieht:
Ich verstehe nicht, warum es leer() voraussagt, wenn es keine im Trainingssatz gibt. Sollte es nicht das nächste Tag vorhersagen? Kann mir jemand irgendwelche Verbesserungen für das Modell empfehlen, das ich verwende?
Vielen Dank für Ihre Hilfe im Voraus!
[CountVectorizer Dokumentation] (http://scikit-learn.org/dev/modules/generated/sklearn.feature_extraction.text.CountVectorizer.html) [ TfidfTransformer-Dokumentation] (http://scikit-learn.github.io/scikit-learn.org/0.8/modules/generated/scikits.learn.feature_extraction.text.TfidfTransformer.html) [OneVsRestClassifier-Dokumentation] (http://scikit-learn.org/dev/modules/generated/sklearn.multiclass.OneVsRestClassifier.html) – jegeragh
Tun Sie wollen eine Mehrklassen- oder Multi-Label-Klassifizierung? Darf ein Ticket mit mehr als einem Tag versehen werden? – mbatchkarov
Ja, Multi-Label! – jegeragh