机器学习——Logistic Regression

0、前言:

  • Logistic回归是解决分类问题的一种重要的机器学习算法模型。
  • 本文更多从应用层面说明如何使用该模型,原理部分浅尝辄止。
  • Logistic回归在应用中可能会出现关于max_iter:最大迭代次数的警告,就要根据警告调整参数。

1、基本原理:

  • Logistic Regression 首先是针对二分类任务提出的一种分类方法
  • 如果将概率看成一个数值属性,则二元分类问题的概率预测就可以转化为一个回归问题。这种思路最简单的实现就是直接采用特征组的回归模型来预测概率,但是回归模型的预测结果无法控制在[0,1]之间。这时Sigmoid函数就派上用场了。
    在这里插入图片描述
  • Logistic Regression 算法
    输入:m条训练数据
    输出:是逻辑回归函数的对数损失函数,目的是使损失函数的值最小(将分类问题转换为了回归问题)
    目标函数:称为交叉熵,目标就是使交叉熵最下,这样就可以使损失函数的值最小

2、用Logistic模型做手写数字识别:

  • 代码
# 导入三件套
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 导入手写数字数据集
from sklearn.datasets import load_digits

Data = load_digits()
# 拿数据
data = Data['data']
target = Data['target']
target_names = Data['target_names']
feature_names = Data['feature_names']
images = Data['images']

# 划分数据集
from sklearn.model_selection import train_test_split

x_train, x_test, y_train, y_test = train_test_split(data,target,test_size=0.2)
display(x_train.shape,y_train.shape,x_test.shape,y_test.shape)
'''
(1437, 64)
(1437,)
(360, 64)
(360,)
'''

# 导入机器学习模型
from sklearn.linear_model import LogisticRegression

'''逻辑回归模型参数说明
1、penalty选择l2正则,默认就是l2
2、C=1.0,默认是1.0(惩罚因子,越大越严格,可能导致过拟合,太小又可能欠拟合)
3、solver:优化算法,有{'newton-cg','libfgs','liblinear','sag','saga'},默认libfgs
    newton-cg、libfgs:适用中数据集
    sag、saga:适用大量数据集(>10万),采用部分样本进行梯度下降,随机平均梯度下降,不适合%%sh数据集
    liblinear:一般适用小数据集,适用的是liblinear库
    后面会使用自动调参,会自动选择适合的优化算法
4、max_iter:最大迭代次数,默认100,如果不够会警告,就要根据警告不断调节,注意只有{'sag','libfgs','newton-cg'}才会使用该参数
5、n_jobs:多进程处理,一般设置为CPU数量的1-2倍(电脑win+r,输入msinfo32查看cpu)
''' 
# Lg = LogisticRegression(
#     solver = 'lbfgs',
#     max_iter = 2500
# )
Lg = LogisticRegression(solver='liblinear')
%timeit Lg.fit(x_train,y_train)  # 149 ms ± 3.58 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

# 测试数据得分
Lg.score(x_test,y_test) # 0.9611111111111111
# 模型得分
Lg.score(x_train,y_train) # 0.9937369519832986

# 对比KNN模型
from sklearn.neighbors import KNeighborsClassifier

knn = KNeighborsClassifier()
%timeit knn.fit(x_train, y_train) # 590 µs ± 17.5 µs per loop (mean ± std. dev. of 7 runs, 1,000 loops each)

# 计算测试集得分
knn.score(x_test,y_test) # 0.9833333333333333
# 计算模型得分
knn.score(x_train,y_train) # 0.9916492693110647


3、总结:

  • 在使用Logistic模型时,要根据数据集大小调整模型优化算法。
  • 通过实验发现,Logistic回归算法训练时间比KNN要长,但是预测时间要比KNN短。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值