gpt4 book ai didi

python - sklearn LogisticRegression 和更改分类的默认阈值

转载 作者:太空狗 更新时间:2023-10-29 17:32:20 25 4
gpt4 key购买 nike

我正在使用 sklearn 包中的 LogisticRegression,并且有一个关于分类的快速问题。我为我的分类器构建了一条 ROC 曲线,结果证明我的训练数据的最佳阈值约为 0.25。我假设创建预测时的默认阈值是 0.5。在进行 10 折交叉验证时,如何更改此默认设置以了解我的模型的准确性?基本上,我希望我的模型为大于 0.25 而不是 0.5 的任何人预测“1”。我一直在查看所有文档,但似乎一无所获。

最佳答案

我想给出一个实际的答案

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, recall_score, roc_auc_score, precision_score

X, y = make_classification(
n_classes=2, class_sep=1.5, weights=[0.9, 0.1],
n_features=20, n_samples=1000, random_state=10
)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

clf = LogisticRegression(class_weight="balanced")
clf.fit(X_train, y_train)
THRESHOLD = 0.25
preds = np.where(clf.predict_proba(X_test)[:,1] > THRESHOLD, 1, 0)

pd.DataFrame(data=[accuracy_score(y_test, preds), recall_score(y_test, preds),
precision_score(y_test, preds), roc_auc_score(y_test, preds)],
index=["accuracy", "recall", "precision", "roc_auc_score"])

通过将THRESHOLD 更改为0.25,可以发现recallprecision 分数正在下降。但是,通过删除 class_weight 参数,accuracy 增加但 recall 得分下降。引用@accepted 的回答

关于python - sklearn LogisticRegression 和更改分类的默认阈值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31417487/

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