从训练有素的分类器 python #Scikitlearn #SVM 进行预测
Posted
技术标签:
【中文标题】从训练有素的分类器 python #Scikitlearn #SVM 进行预测【英文标题】:Make predictions from a trained classifier python #Scikitlearn #SVM 【发布时间】:2018-10-13 04:14:31 【问题描述】:我需要帮助对看不见的数据进行分类。我有一组样本数据。
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
【问题讨论】:
请用文字替换所有图片。 只需将 cmets 列传递给text_clf_svm()
并将其结果放入类别列中
谢谢Vivek,我在评论区传给ie:category= text_clf_svm(df[Comcopy]) 如何构造一个包含新预测的类别和ID的数据框?跨度>
【参考方案1】:
我刚刚找到了解决方案。如果我想将预测结果映射回原始数据框,我必须将新列添加到旧数据框
#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'])
【讨论】:
以上是关于从训练有素的分类器 python #Scikitlearn #SVM 进行预测的主要内容,如果未能解决你的问题,请参考以下文章