机器学习之线性分类——逻辑回归

一、逻辑回归是什么?

 

逻辑回归是一个分类的算法,是线性的分类器。因为逻辑回归算法是基于多元线性回归的算法。是对已有的数据进行分类,

二、Sigmoid函数的作用

逻辑回归就是在多元线性回归基础上把结果缩放到 0 到 1 之间。 越接近+1 越是
正例,
越接近 0 越是负例,根据中间 0.5 分为二类。其中是预期值

三、Sigmoid函数用python代码实现

"""  
python 实现sigmoid函数(逻辑回归函数)   sigmoid = 1/(1+e**(-x))
"""
import numpy as np
import matplotlib.pyplot as plt
import math


def sigmoid(x):
    a = []
    for item in x:
        a.append(1.0/(1.0 + math.exp(-item)))  
    return a

x = np.arange(-10,10,0.1)
y =sigmoid(x)
plt.plot(x,y)
plt.show()

四、逻辑回归为什么要用 sigmoid 函数?

1)sigmoid函数是一个阀值函数,不管x取什么值,对应的sigmoid函数值总是0<sigmoid(x)<1。

2)sigmoid函数严格单调递增,而且其反函数也单调递增

3)sigmoid函数连续

4)sigmoid函数光滑

5)sigmoid函数关于点(0, 0.5)对称

6)sigmoid函数的导数是以它本身为因变量的函数,即f(x)' = F(f(x))

所以sigmoid函数其实起源于生物学的现象中,其曲线也称为S型生长曲线。在信息科学中,由于sigmoid函数和其反函数都是严格单调递增的,所以sigmoid函数常被用作神经网络的阈值函数,将变量映射到(0,1)内

五、sigmoid函数推导

广义线性回归推导出逻辑回归(Sigmoid)和多元线性回归_宠乖仪的博客-CSDN博客

六、推导逻辑回归的损失函数

1、逻辑回归的公式:

 2、推导过程

2.1 伯努利分布的概率密度函数:

2.2 假设逻辑回归的样本服从伯努利分布:

其中:

 是样本的预期值;是样本的真实值;是每条样本的特征值;是样本特征的权重

2.3 通过最大似然函数

假设每条样本互相独立,于是最大似然函数的表达式为:

通过对数似然函数取log,转换为:

 

 由于损失函数通过梯度下降求最小值,于是在 上式中加上负号 就是求最小

 注意: 上式是逻辑回归的损失函数

六、逻辑回归如何求解得到最优解模型

1、方法: 梯度下降法

2、梯度下降法公式原理可参考:

梯度下降法求解最优解_宠乖仪的博客-CSDN博客

3、逻辑回归使用梯度下降法的求导过程 

3.1 需要求导的函数

3.2 过程

========================================================================= 

 其中是对逻辑回归公式

求导 

 =========================================================================

 接下来的求导过程

七、鸢尾花分类(取其中两个维度)

"""  
逻辑回归对鸢尾花数据集进行二分类
"""
"""  
# 逻辑回归 里面的超参数
LogisticRegression(
    penalty :惩罚项 L1、L2正则项 默认L2   本质 改机器学习算法的损失 loss   目的:提高模型的泛化能力
    C :  与penalty 属性连用   C越大 penalty(正则化)越没作用  ;反之
    tol : 类型 浮点数  默认为 1e-4  ;容忍度  作用:连续多次的loss值 小于该值,就停止迭代
    fit_intercept : 类型 bool 是否计算截距项,
    solver  : 损失函数求参优化算法
    max_iter  : 最大迭代次数
    multi_class : 默认是auto , 多分类情况下用:ovr
    l1_ratio : 值在(0,1), 值越大,正则项L1越重要,反之

)

"""
import numpy as np
from sklearn import datasets  # 这个模块里面有我们所需要的数据集
from sklearn.linear_model import LogisticRegression

# 下载数据
iris = datasets.load_iris()   # 返回一个对象
# print(list(iris.keys()))   # 获取 对象参数里面的keys
# print(iris['DESCR'])
# print(iris['feature_names'])

X = iris['data'][:, 3:]

# iris['target] 为三分类    
# y =(iris['target'] ==2).astype(np.int)  #  astype() 转类型         
y = iris['target']
#  用随机梯度下降求解    max_iter 迭代次数
multi_classifier = LogisticRegression(solver='sag',max_iter=1000)
multi_classifier.fit(X,y)

# 预测模型
# 创建 新数据    np.linspace() 创建的是等差数列
X_new = np.linspace(0,3,1000).reshape(-1,1)

print(X_new)
# 预测  
y_proba = multi_classifier.predict_proba(X_new)

print(y_proba)

y_predict = multi_classifier.predict(X_new)
print(y_predict)

八、逻辑回归实现多分类

方式:使用多个二分类,看哪个预期值大,就认为属于哪个类

"""  
# 逻辑回归 里面的超参数
LogisticRegression(
    penalty :惩罚项 L1、L2正则项 默认L2   本质 改机器学习算法的损失 loss   目的:提高模型的泛化能力
    C :  与penalty 属性连用   C越大 penalty(正则化)越没作用  ;反之
    tol : 类型 浮点数  默认为 1e-4  ;容忍度  作用:连续多次的loss值 小于该值,就停止迭代
    fit_intercept : 类型 bool 是否计算截距项,
    solver  : 损失函数求参优化算法
    max_iter  : 最大迭代次数
    multi_class : 默认是auto , 多分类情况下用:ovr
    l1_ratio : 值在(0,1), 值越大,正则项L1越重要,反之

)

"""
import numpy as np
from sklearn import datasets  # 这个模块里面有我们所需要的数据集
from sklearn.linear_model import LogisticRegression

# 下载数据
iris = datasets.load_iris()   # 返回一个对象
print(iris)
# print(list(iris.keys()))   # 获取 对象参数里面的keys
# print(iris['DESCR'])
# print(iris['feature_names'])

X = iris['data'][:, 3:]

y = iris['target']
print(y)
#  用随机梯度下降求解    max_iter 迭代次数
multi_classifier = LogisticRegression(solver='sag',max_iter=1000,multi_class='ovr')
multi_classifier.fit(X,y)

# 预测模型
# 创建 新数据    np.linspace() 创建的是等差数列
X_new = np.linspace(0,3,1000).reshape(-1,1)

print(X_new)
# 预测  
y_proba = multi_classifier.predict_proba(X_new)

print(y_proba)
# 
y_predict = multi_classifier.predict(X_new)
print(y_predict)

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

allen wy

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

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

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

打赏作者

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

抵扣说明:

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

余额充值