gpt4 book ai didi

python - 为什么混淆指标中的正样本量小于实际数据?

转载 作者:行者123 更新时间:2023-11-30 09:59:58 24 4
gpt4 key购买 nike

我正在对我的优惠券数据集进行逻辑回归,优惠券.flag.value_counts() 显示有 22356 个负样本和 2961 个正样本。但是建立逻辑回归模型后,训练混淆度量中的正样本总数只有 51 个。(test_size = 0.3) 有人可以帮我找出问题所在吗?谢谢!

coupon=pd.read_csv('L2_Week3.csv')
coupon=pd.get_dummies(coupon)
coupon.flag.value_counts()
0 22356
1 2961
Name: flag, dtype: int64

from sklearn.model_selection import train_test_split
y=coupon['flag']
x=coupon[['coupon_used_in_last_month','job_retired','job_student','marital_single','returned_yes','job_bl
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=100)
from sklearn import linear_model
lr=linear_model.LogisticRegression()
lr.fit(x_train,y_train)
y_pred_train=lr.predict(x_train)
y_pred_test=lr.predict(x_test)
import sklearn.metrics as metrics
metrics.confusion_matrix(y_train,y_pred_train)

Out[96]:
array([[15589, 34],
[ 2081, 17]])

正如我所说,指标中正样本的数量远小于实际数据。

最佳答案

逻辑回归给出的结果是概率,而不是纯粹的0和1。在这种预测中,您应该找到一个阈值(使用有效的数据集)来决定哪个概率将被视为0,哪个概率将被视为1以获得最佳值的指标(准确度、精确度等),然后使用此阈值进行测试预测。如果不执行此操作,则会使用默认阈值 (0.5) 生成混淆矩阵,这是一个坏主意,因为即使没有任何进一步优化,阈值也应设置为数据集中 1 的比例,即 2961/(2961+22356)。

尝试使用此代码:

    threshold = 2961/(2961+22356)
metrics.confusion_matrix(y_train,(y_pred_train>threshold).astype(int))

Notabene,不需要此操作来评估 AUC,它既对概率以及纯 0 和 1 进行操作。值得注意的是,转换为 0 和 1 的预测概率通常会比原始概率给出更差的 AUC。

关于python - 为什么混淆指标中的正样本量小于实际数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59432142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com