深入理解逻辑回归算法(LogisticRegression),“以回归之名,证分类之实力”。

深入理解逻辑回归算法

1. 介绍

逻辑回归是一种常用于解决二分类问题的机器学习算法。尽管其名为“回归”,实际上逻辑回归是一种分类算法。在本文中,我们将深入探讨逻辑回归算法的原理、应用和实现。

2. 逻辑回归原理

逻辑回归通过将线性回归模型的输出结果经过一个逻辑函数(也称为 sigmoid 函数)进行转换,将结果限制在 0 到 1 之间,代表概率值。通常情况下,大于 0.5 的概率被归为一类,小于 0.5 的概率被归为另一类。

3. 逻辑回归的应用

逻辑回归广泛应用于各种分类问题,如垃圾邮件检测等。由于其简单且效果好,逻辑回归常被用作分类算法的基准模型。
垃圾邮件分类的代码(数据集私信):

#!/usr/bin/env python
# encoding: utf-8
"""

"""
import pandas as pd
import warnings

from sklearn.feature_extraction.text import TfidfVectorizer  # 文本型数据处理
from sklearn.preprocessing import LabelEncoder  # 字符串型数据编码
from sklearn.model_selection import train_test_split
from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import roc_curve, auc
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

from matplotlib import rcParams
import matplotlib

# matplotlib.use("Agg")  # 输出时不显示绘图
import matplotlib.pyplot as plt  # matplotlib.use('agg')必须在本句执行前运行

rcParams['font.family'] = 'simhei'  # 可以让图像中显示中文(黑体),无需引用
rcParams['axes.unicode_minus'] = False  # 解决负数坐标显示问题
warnings.filterwarnings('ignore')

# #############################################################################################
# 公共部分:分类模型评价体系evaluation
# todo: 构建分类模型的评价体系并存储在evaluation中,方便对比查看,全局变量
evaluation = pd.DataFrame({
   'Model': [],
                           '准确率': [],
                           '精确率': [],
                           '召回率': [],
                           'F1 值': [],
                           'AUC值': [],
                           '5折交叉验证的score': []})

# #############################################################################################
# 步骤1 todo: 数据读取、数据集划分及单词文本处理及标签数值化处理
# 步骤1.1 todo: 读取数据并统计数据类别信息
df = pd.read_csv('./垃圾短信预测/data/SMSSpamCollection', delimiter='\t', header=None)  # 利用pandas直接读取已有的数据集,数据以tab分割
print(df.head())
print('信息为spam的:', df[df[0] == 'spam'][0].count())
print('信息为ham的:', df[df[0] == 'ham'][0].count())
# 步骤1.2 todo: 先对整体数据按照train_size进行划分,得到训练集和测试集, random_state确保结果的一致性
train_size = 0.67
x_train_raw, x_test_raw, y_train_raw, y_test_raw = train_test_split(df[1], df[0], test_size=train_size, random_state=0)

# 步骤1.3 todo: 对数据集中单词文本进行处理
# 由于数据集为单词文本数据,构建TfidfVectorizer来计算每个单词的TF-IDF权重
tfidf_vectorizer = TfidfVectorizer()
x_train = tfidf_vectorizer.fit_transform(x_train_raw)
x_test = tfidf_vectorizer.transform(x_test_raw)
# 步骤1.4 todo: 目标变量中为字符串型数据,使用labe
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云端.代码农夫CloudFarmer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值