首页 > 解决方案 > 分类模型中的概率仅给出小数点后 1 位的概率

问题描述

我正在对数据集进行基本分类。我的问题是,有时 target_probabilities 只给出小数点后 1 位。这似乎是随机的,例如,有时它们会保留几个小数位。请注意,这不仅仅发生在 Bagging Classifier 上——它似乎发生在几个 Classifier 上。

这是下面的代码,带有输出。

train = df[df['Season']<2018] 
test = df[df['Season'] == 2018]

X_train = train.drop([target,'Season','Team'],axis=1)
X_test = test.drop([target,'Season','Team'],axis=1)
Y_train = train[target]
Y_test = test[target]

model = BaggingClassifier()
model.fit(X_train, Y_train)
y_predicted = model.predict(X_test)

target_probabilities = model.predict_proba(X_test)[:,1]
target_probabilities = np.clip(target_probabilities, a_min=0.05,a_max=0.95)
print(target_probabilities)

在此处输入图像描述

标签: pythonpandasmachine-learningscikit-learnprobability

解决方案


你得到了 1 个小数,因为它是所有估计器预测BaggingClassifier结果的平均值。默认情况下,您的估算器是s, 。DecisionTreen_estimators=10

因此,您对 DT 的预测是二进制的(0 或 1),BC 将它们汇总并除以估计器的数量。这就是为什么你得到 1 个小数。

如果你把n_estimators=10000你得到一个更精确的数字。

请注意,这不仅仅发生在 Bagging Classifier 上——它似乎发生在几个 Classifier 上。

您测试了哪些分类器?对于 LogisticRegression,一切都按预期工作。


推荐阅读