python - Sklearn OneVsRestClassifier - 获取目标类所有可能性的概率
问题描述
我有一个执行特征工程和模型选择的管道。
特征工程和模型选择
from sklearn.svm import LinearSVC
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
特征工程和模型的管道
model = Pipeline([('vectorizer', CountVectorizer()),
('tfidf', TfidfTransformer()),
('clf', OneVsRestClassifier(LinearSVC(class_weight="balanced")))])
参数选择
from sklearn.model_selection import GridSearchCV
parameters = {'vectorizer__ngram_range': [(1, 1), (1, 2),(2,2)],
'tfidf__use_idf': (True, False)}
gs_clf_svm = GridSearchCV(model, parameters, n_jobs=-1)
gs_clf_svm = gs_clf_svm.fit(X, y)
print(gs_clf_svm.best_score_)
print(gs_clf_svm.best_params_)
使用所选参数准备最终管道
model = Pipeline([('vectorizer', CountVectorizer(ngram_range=(1,2))),
('tfidf', TfidfTransformer(use_idf=True)),
('clf', OneVsRestClassifier(LinearSVC(class_weight="balanced")))])
用训练数据拟合模型 model.fit(X_train, y_train)
保存模型
from sklearn.externals import joblib
joblib.dump(model, 'model_question_topic.pkl', compress=1)
现在在另一个文件中,我正在加载模型并预测
from sklearn.externals import joblib
model = joblib.load('model_question_topic.pkl')
现在它将类正确预测为第 1 类
question = "apply leave"
model.predict([question])[0]
但问题是我需要置信率或百分比
Class1 = 0.8 -- Class2 = 0.05 -- Class3 = 0.05 -- Class4 = 0.1
model.predict_proba([question])[0]
我如何在python3中做到这一点?
解决方案
推荐阅读
- android - 将图像添加到 android 模拟器上的照片库
- android - 'AndroidManifest.xml React native 中的应用程序包名称无效
- python - 我怎样才能使这个 matplotlib“词云”图更好看?
- python - 如何更新 Ursina 窗口面板中包含的文本实体?
- java - geotools - 使用 JDBCDataStore 插入新的 SimpleFeature 时是否可以跳过列
- css - 使用 CSS 影响另一个外部元素
- python - Pandas 数据帧乘法,其中数据帧具有不同的矩阵
- sql - 静态和可变日期之间的 SQL 运行总计
- javascript - 你怎么把它变成这个?
- python - Django 脆形式 FormHelper Field() 不接受“密码”作为 HTML attr 类型