Python 如何获得分类模型的预测概率?
我正在使用一个二元因变量(已占用/未占用)尝试不同的分类模型。我感兴趣的模型是逻辑回归、决策树和高斯朴素贝叶斯 我的输入数据是一个csv文件,带有日期时间索引(例如2019-01-07 14:00)、三个变量列(“R”、“p”、“C”,包含数值)和因变量列(“值”,包含二进制值) 训练模型不是问题,这一切都很好。所有的模型都以二进制值的形式给出了它们的预测(这当然应该是最终的结果),但我也希望看到预测的概率,这些概率使它们决定了两个二进制值中的任何一个。有没有办法也得到这些值 我已经尝试了所有与yellowbrick包一起运行的分类可视化工具(ClassBalance、ROCAUC、ClassificationReport、ClassPredictionError)。但所有这些都没有给我一个图表,显示数据集模型计算出的概率Python 如何获得分类模型的预测概率?,python,scikit-learn,Python,Scikit Learn,我正在使用一个二元因变量(已占用/未占用)尝试不同的分类模型。我感兴趣的模型是逻辑回归、决策树和高斯朴素贝叶斯 我的输入数据是一个csv文件,带有日期时间索引(例如2019-01-07 14:00)、三个变量列(“R”、“p”、“C”,包含数值)和因变量列(“值”,包含二进制值) 训练模型不是问题,这一切都很好。所有的模型都以二进制值的形式给出了它们的预测(这当然应该是最终的结果),但我也希望看到预测的概率,这些概率使它们决定了两个二进制值中的任何一个。有没有办法也得到这些值 我已经尝试了所有与
import pandas as pd
import numpy as np
data = pd.read_csv('testrooms_data.csv', parse_dates=['timestamp'])
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
##split dataset into test and trainig set
X = data.drop("value", axis=1) # X contains all the features
y = data["value"] # y contains only the label
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.5, random_state = 1)
###model training
###Logistic Regression###
clf_lr = LogisticRegression()
# fit the dataset into LogisticRegression Classifier
clf_lr.fit(X_train, y_train)
#predict on the unseen data
pred_lr = clf_lr.predict(X_test)
###Decision Tree###
from sklearn.tree import DecisionTreeClassifier
clf_dt = DecisionTreeClassifier()
pred_dt = clf_dt.fit(X_train, y_train).predict(X_test)
###Bayes###
from sklearn.naive_bayes import GaussianNB
bayes = GaussianNB()
pred_bayes = bayes.fit(X_train, y_train).predict(X_test)
###visualization for e.g. LogReg
from yellowbrick.classifier import ClassificationReport
from yellowbrick.classifier import ClassPredictionError
from yellowbrick.classifier import ROCAUC
#classificationreport
visualizer = ClassificationReport(clf_lr, support=True)
visualizer.fit(X_train, y_train) # Fit the visualizer and the model
visualizer.score(X_test, y_test) # Evaluate the model on the test data
g = visualizer.poof() # Draw/show/poof the data
#classprediction report
visualizer2 = ClassPredictionError(LogisticRegression())
visualizer2.fit(X_train, y_train) # Fit the training data to the visualizer
visualizer2.score(X_test, y_test) # Evaluate the model on the test data
g2 = visualizer2.poof() # Draw visualization
#(ROC)
visualizer3 = ROCAUC(LogisticRegression())
visualizer3.fit(X_train, y_train) # Fit the training data to the visualizer
visualizer3.score(X_test, y_test) # Evaluate the model on the test data
g3 = visualizer3.poof() # Draw/show/poof the data
例如,最好有一个类似于pred_lr的数组,其中包含为csv文件的每一行计算的概率。可能吗?如果是,我如何获得它?在大多数sklearn估计器(如果不是全部)中,您有一种方法来获得排除分类的概率,无论是对数概率还是概率 例如,如果您有朴素贝叶斯分类器,并且希望获得概率而不是分类本身,您可以这样做(我在代码中使用了相同的术语):
希望这能有所帮助。我投票将这个问题作为离题题题来结束,因为答案直接位于等的相关文档中
from sklearn.naive_bayes import GaussianNB
bayes = GaussianNB()
pred_bayes = bayes.fit(X_train, y_train).predict(X_test)
#for probabilities
bayes.predict_proba(X_test)
bayes.predict_log_proba(X_test)