统计学 逻辑回归

逻辑回归是一种用于分类的统计学习方法,常用于二分类问题,其通过线性回归和sigmoid函数转化为概率预测。数据分析师使用它因为其简单快速、可解释性强,并适用于大规模数据。示例展示了如何用scikit-learn的LogisticRegression进行建模和评估。
摘要由CSDN通过智能技术生成

1、什么是逻辑回归?

逻辑回归是一种常用的统计学习方法,用于解决分类问题。虽然名字中带有"回归"两个字,但逻辑回归实际上是一种分类算法,用于预测离散标签的概率

逻辑回归的原理是基于线性回归的思想,但是它通过一个逻辑函数(通常是sigmoid函数)将线性回归的结果映射到[0, 1]之间,从而得到概率值。在二分类问题中,逻辑回归将概率大于等于一个阈值(通常为0.5)的样本划分为正类,概率小于阈值的样本划分为负类。

逻辑回归的优势包括:

简单快速:逻辑回归模型相对简单,并且计算速度较快,适用于大规模数据集。

可解释性:模型的输出是概率值,易于解释和理解模型的预测结果。

对特征的要求较低:逻辑回归对数据特征的要求相对较低,不需要进行特征缩放。

适用于线性可分和线性不可分问题:逻辑回归既可以处理线性可分的问题,也可以通过特征组合处理一定程度上的线性不可分问题。

可以用于概率预测:除了用于分类问题,逻辑回归还可以用于概率预测,对于一些需要得到概率值的场景非常有用。

2、数据分析师为什么使用逻辑回归?

数据分析师使用逻辑回归作为一种常见的分类算法,有以下几个主要原因:

简单快速:逻辑回归是一种线性模型,计算速度相对较快,模型的构建和预测过程较简单。对于大规模数据集和快速迭代的场景,逻辑回归是一种高效的选择。

可解释性:逻辑回归的输出是概率值,表示样本属于某个类别的概率。这种概率输出使得模型的结果具有可解释性,数据分析师可以直观地理解模型的预测结果。

可扩展性:逻辑回归可以很容易地与其他模型集成,形成集成学习方法,例如逻辑回归与随机森林组成的模型。这些集成方法可以进一步提高模型的性能。

适用于二分类问题:逻辑回归主要用于二分类问题,即将样本划分为两个类别。在许多实际应用中,数据分析师面临的问题是二分类问题,如判断是否患病、是否购买产品等。

对特征的要求较低:逻辑回归对数据特征的要求相对较低,不需要进行特征缩放(例如标准化或归一化)。这使得在处理不同尺度的特征时更加方便。

可以用于概率预测:除了用于分类问题,逻辑回归还可以用于概率预测。对于一些需要得到概率值的场景,逻辑回归非常有用。

对于线性可分和线性不可分问题都适用:逻辑回归既可以处理线性可分的问题,也可以通过特征组合处理一定程度上的线性不可分问题。

总体来说,逻辑回归是一种简单且有效的分类算法,适用于许多不同类型的二分类问题。数据分析师可以利用逻辑回归构建快速、解释性强的分类模型,对于探索数据并做出预测非常有帮助。当然,在实际应用中,数据分析师也可以结合其他算法和技术,根据具体问题的需求选择最合适的方法。

3、逻辑回归分类 案例

'''
逻辑回归分类
使用scikit-learn库来构建逻辑回归模型,并使用一个虚拟的二分类数据集来进行演示。

在这个例子中,我们使用了一个虚拟的二分类数据集,并构建了一个逻辑回归分类器。
然后,我们对测试集进行预测,并计算了模型的准确率、分类报告和混淆矩阵。
'''

import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix

# 创建虚拟的二分类数据集
data = {
    'Feature1': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
    'Feature2': [2, 4, 5, 4, 5, 6, 7, 8, 9, 10],
    'Target': [0, 0, 1, 0, 1, 1, 1, 0, 1, 1]
}

# 转换为DataFrame
df = pd.DataFrame(data)

# 划分特征和目标变量
X = df[['Feature1', 'Feature2']]
y = df['Target']

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# 构建逻辑回归模型
logreg = LogisticRegression()
logreg.fit(X_train, y_train)

# 进行预测
y_pred = logreg.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("准确率:", accuracy)

# 打印分类报告
print("分类报告:")
print(classification_report(y_test, y_pred))

# 打印混淆矩阵
print("混淆矩阵:")
print(confusion_matrix(y_test, y_pred))


>>> %Run '逻辑回归分类.py'
准确率: 0.5
分类报告:
C:\Users\wx\AppData\Roaming\Python\Python310\site-packages\sklearn\metrics\_classification.py:1469: UndefinedMetricWarning: Recall and F-score are ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
C:\Users\wx\AppData\Roaming\Python\Python310\site-packages\sklearn\metrics\_classification.py:1469: UndefinedMetricWarning: Recall and F-score are ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
C:\Users\wx\AppData\Roaming\Python\Python310\site-packages\sklearn\metrics\_classification.py:1469: UndefinedMetricWarning: Recall and F-score are ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.
  _warn_prf(average, modifier, msg_start, len(result))
              precision    recall  f1-score   support

           0       0.00      0.00      0.00         0
           1       1.00      0.50      0.67         2

    accuracy                           0.50         2
   macro avg       0.50      0.25      0.33         2
weighted avg       1.00      0.50      0.67         2

混淆矩阵:
[[0 0]
 [1 1]]
>>> 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值