我在使用scikit-learn通过逻辑回归实现分类。类标签是通过predict()
函数预测的,而预测的概率则是通过predict_proba()
函数输出的。
下面是代码片段:
# 将数据集分成训练和测试数据X_train, X_test, y_train, y_test = train_test_split(ds_X, ds_y, test_size=0.33, random_state=42) y_pred = logreg.predict(X_test) # 从测试特征预测的类标签y_predicted_proba = logreg.predict_proba(X_test) # 从测试特征预测的概率
预测的标签被打印为
array([1, 1, 1, 1, 1, 1, 1, 1, 0, 1.......... 等等
相应的预测概率被打印为
array([[ 0.03667012, 0.96332988], [ 0.03638475, 0.96361525], [ 0.03809274, 0.96190726], [ 0.01746768, 0.98253232], [ 0.02742639, 0.97257361], [ 0.03676579, 0.96323421], [ 0.02881874, 0.97118126], [ 0.03082288, 0.96917712], [ 0.65332179, 0.34667821], [ 0.02091977, 0.97908023], . ' 等等
观察,
第一个预测标签 – 1
第一个预测概率 – [ 0.03667012, 0.96332988]
为什么是0.03667012先被打印,而不是0.96332988?难道不应该是相反的吗?
回答:
第0列是类别0的概率,
第1列是类别1的概率。
如果您有n个类别,输出概率的形状将是(n_examples, n_classes)。