logistic 回归

Logistic回归是一种分类学习方法,通过构建sigmoid函数进行概率预测。它直接对分类可能性建模,适用于无需预设数据分布的任务。文章介绍了Logistic回归的模型表达式,采用对数几率函数,并通过梯度下降等优化算法寻找最佳权重和偏置。实验部分以西瓜数据集为例,讨论了数据预处理中的常见问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Logist回归  “对数几率回归” ;实际是一种分类学习方法

优点 1、直接对分类可能性进行建模,无需事先假设数据分布,避免了假设分布不准确所带来的问题;

        2、不仅预测出类别,而且可以得到近似概率预测,对许多需要利用概率辅助决策的任务很有用;

        3、对率函数是任意阶可导凸函数

1、模型

对数几率函数:一种sigmoid 函数

                                                                       (1)

转换成广义线性模型 变成   

                                ;                               (2)

 进一步

                                                     (3)


若将y视为样本x作为正例的可能性,1-y是其反例的可能性,两者比值,就是“几率” (odds)。反映了x作为正例的相对可能性。

通过数据计算出对数几率,然后带入到(1) 中,得到 y的值,就是当前分类器对y的分类结果。通过一系列的优化过程最终得到一个好的分类器,

即好的权重和偏置,能够把正例和反例尽可能多的分开。

2、策略

    损失函数,目标是求最小值:

                                                                     (4)

    需要找到最佳参数即找到最佳权重和偏置使得f(x)的取值与y最接近。

3、算法

    优化器最基本的是梯度下降算法 。这里讲的很清楚了

    http://www.ishowcode.com/ai/ml/linear-regression-gradient-descent/                 


**实验部分  参照《机器学习实战》第五章 Logistic 回归部分进行。

1、数据集使用 西瓜数据集3.0a ----西瓜数据集汇总    http://whatbeg.com/2016/04/22/xiguadataset.html

     17个样本,8个正例,9个反例。共两列属性,密度、含糖率;

2.导入数据集     

 

def loadDataSet():
    dataMat=[]
    labelMat=[]
    fr = open('dataset/watermelon.txt')
    for line in fr.readlines():
        lineArr = line.strip().split(" ")
        if(len(lineArr)<3):
            continue
        dataMat.append([1.0,float(lineArr[0]),float(lineArr[1])])#第一项是偏置b
        labelMat.append(int(lineArr[2]))
    return dataMat,labelMat
def sigmoid(inX):
    return 1.0/(1+exp(-inX))

  这里粗心大意遇到了几个坑

    1)  readlines()  写成了 readline() 这两个函数的功能差距还是很大的。

         readline() 读一行,readlines()依次读取每一行

    2)在文件的最后多加了回车,然后readlines()依然会把空行读入作为一行。但是这一行没有数据,所以在切分数据之后,按数组下标获取数据时,会报错:List index out of range.  所以在切分数据后加入判断,若当前行没有切分出足够长度的list 则continue.

   3)看到数据在文件中是浮点型,想当然的认为,读入的数据也是浮点型。其实读入之后,切分到list中,都是string型。所以在append的时候一定要将获取到的数据转为float.

未完。。。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值