Делайте прогнозы из обученного питона классификатора #Scikitlearn #SVM - PullRequest
0 голосов
/ 03 мая 2018

Мне нужна помощь в классификации невидимых данных. У меня есть образец набора данных.

    ID         Comment                Category
    2017_01    inadequate stock       Availability
    2017_02    Too many failures      Quality
    2017_03    no documentation       Customer Service
    2017_04    good product           Satisfied
    2017_05    long delivery times    Delivery

Я обучил многоуровневому текстовому классификатору, используя эти данные. Я проверил соответствие данных, используя MultinomialNB и SVM, и я выбрал SVM в качестве окончательной модели

# Support Vector Machines - calculating the SVM Fit
from sklearn.linear_model import SGDClassifier
text_clf_svm = Pipeline([('vect', CountVectorizer()), ('tfidf', 
TfidfTransformer()),('clf-svm', SGDClassifier(loss='hinge', 
penalty='l2',alpha=1e-3, n_iter=5, random_state=42))])

text_clf_svm = text_clf_svm.fit(X_train, y_train)
predicted_svm = text_clf_svm.predict(X_train)
np.mean(predicted_svm == y_train)
0.8850102669404517

Я протестировал модель по комментарию этого года

print(text_clf_svm.predict(["This is obsolete and being replaced by another product. not very robust and we have had many failures"]))

[ 'качество']

Вопрос: Как передать невидимые данные за 2018 год (ниже), чтобы классифицировать их, как указано выше?

   ID          Comment                            Category
   2018_01     This product is obsolete 
   2018_02     Tech Support takes too long  
   2018_03     2 out of 3 products failed   
   2018_04     Delivery to APAC takes too long  

1 Ответ

0 голосов
/ 04 мая 2018

Я только что понял решение. Если я хочу отобразить результаты прогноза обратно в исходный фрейм данных, мне нужно добавить новый столбец в старый фрейм данных

#Bring in new data and predict
import pandas as pd
df_p = pd.read_csv("comment_to_predict.csv", sep = ',', usecols = range(2), encoding='iso-8859-1')

#Map the predictions to the original data frame (df_p in my case)
df_p['category'] = text_clf_svm.predict(df_p['comment'])
...