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

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

在本文中,我们将介绍Python中的scikit-learn库中的LogisticRegression算法,并讨论如何更改它的默认阈值以进行分类。

阅读更多:Python 教程

LogisticRegression算法

LogisticRegression是一种用于二元分类的线性模型。它通过将输入特征与权重相乘,然后将结果传递给一个logistic函数来预测输出的概率。

首先,我们需要导入所需的库和准备用于训练和测试的数据集。

import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression

# 创建一个随机的特征矩阵
X = np.random.rand(100, 5)
# 创建一个随机的目标向量
y = np.random.randint(2, size=100)

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
Python

接下来,我们创建一个LogisticRegression对象,并使用fit()方法对模型进行训练。

# 创建LogisticRegression对象
model = LogisticRegression()

# 进行模型训练
model.fit(X_train, y_train)
Python

现在我们已经训练好了模型,可以使用predict()方法对新的输入进行分类。

# 预测测试集中的样本类别
y_pred = model.predict(X_test)
Python

更改分类的默认阈值

默认情况下,LogisticRegression类使用默认阈值0.5来进行分类。即,输出概率大于0.5的样本将被分类为正类,否则为负类。

然而,有时我们需要根据特定的需求来更改默认阈值。例如,在一些疾病的预测中,我们可能希望将阈值更改为0.3,以便更准确地捕获患病的患者。

要更改默认阈值,我们可以使用predict_proba()方法获取样本属于各个类别的概率。

# 获取测试样本属于正类的概率
y_prob = model.predict_proba(X_test)[:, 1]
Python

接下来,我们可以使用numpy库的where()方法将概率转换为类别。如果概率大于我们设定的阈值,则被分类为正类,否则被分类为负类。

# 设置新的阈值
threshold = 0.3

# 使用where()方法将概率转换为类别
y_new = np.where(y_prob > threshold, 1, 0)
Python

现在,我们可以将新的预测结果与原始结果进行比较,以评估更改阈值对模型性能的影响。

# 计算模型的准确率
accuracy = (y_new == y_test).mean()

# 打印准确率
print("Accuracy: {:.2f}".format(accuracy))
Python

通过更改默认阈值,我们可以控制分类的灵敏度和特异性。更低的阈值会增加正类的识别率,但可能会增加误判负类的风险。

总结

在本文中,我们介绍了Python中scikit-learn库中的LogisticRegression算法。我们学习了如何使用LogisticRegression进行二元分类,并通过更改默认阈值来调整分类的灵敏度和特异性。使用predict_proba()方法获取样本属于各个类别的概率,并使用where()方法将概率转换为类别。我们还讨论了不同阈值对模型性能的影响。

LogisticRegression算法在数据科学和机器学习中被广泛应用,可以用于各种二元分类问题。通过灵活地更改默认阈值,我们可以根据具体需求来优化我们的模型。

希望本文对您理解LogisticRegression算法和如何更改默认阈值有所帮助!祝您在使用Python进行机器学习时取得成功!

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册