07 - 逻辑回归

介绍

这里看到逻辑回归的名词,但是需要注意,它并不是和前面的回归一样为求一个确定的值;它其实是一个经典的二分类算法
机器学习算法选择:先逻辑回归再用复杂的,能简单还是用简单的
逻辑回归的决策边界:可以是非线性的

Sigmoid函数

完成的任务:由输入转变成概率;是一个分类任务
在这里插入图片描述
在这里插入图片描述

逻辑回归求解

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

python实战

案例:建立一个逻辑回归模型来预测一个学生是否被大学录取。假设你是一个大学系的管理员,想根据两次考试的成果来决定每个申请人的录取机会。你有以前的申请的人的历史数据,可以用它作为逻辑回归的训练集。对于每一个培训例子,你有两个考试的申请人的分数和录取决定。为了做到这一点,建立一个分类模型,根据考试成绩估计入学概率
在这里插入图片描述
在这里插入图片描述
使用上面的代码就能够画出如下的散点图
在这里插入图片描述
有了上面的这个图形之后,就需要构建模型了
目标:建立分类器
设定阈值,根据阈值判断录取结果
要完成的模块:
sigmoid:映射到概率的函数
model:返回预测结果值
cost:根据参数计算损失
gradient:计算每个参数的梯度方向
descent:进行参数更新
accuracy:计算精度

这里首先定义好一个sigmoid函数:
在这里插入图片描述
对于上面的sigmoid函数,自变量的取值范围是任意实数,值域为[0,1],当z等于0的时候,值为0.5,当z的值趋近于负无穷的时候,值趋近于0,当z的值趋近于正无穷的的时候,值趋近于1
在这里插入图片描述
在上面的计算中,传入的值是x和theta,在计算中使用到的是dot(就是进行矩阵的乘法),theta.T表示就是theta的转置。并且在最后return的时候交给了sigmoid函数进行数据的整合
下面使用insert的方法在pdData中间的第0列加上一列内容(列名为Ones,数值为1)
在这里插入图片描述
因为后面进行公式的输入的时候,需要有theta值,目前暂时不知theta的值,所以,这里可以先使用0进行占位
在这里插入图片描述
如上,就创建了一个1行3列的数据
在这里插入图片描述
通过使用values,就能够将DataFrame中间的数据转换为一个ndarray的格式,之后使用shape[1]就能够获取到这个ndarray的列数,如果是shape[0]获取的就是行数,使用数据切分的方式就能够获取到中间对应的自变量X和因变量Y
完成上面的工作之后,就能够开始定义损失函数了
在这里插入图片描述
首先还是找到对数似然函数,这个函数中间可以分成两个部分,这里使用left和right进行定义,使用np.multiply进行乘法的操作;最后转为求平均损失,使用到了sum的方法进行数据累加
在这里插入图片描述
在进行正式的梯度下降算法的时候,首先我们需要考虑在一种什么样的情况下我们的梯度下降算法可以停止
1、按照一个迭代次数,当迭代次数到达某一个数值的时候,就停止
2、当损失值达到一个数量的时候,就停止
3、当梯度的变化改变并不大的时候,就停止
如下所示:
在这里插入图片描述
另外,当我们进行一个数据分析的时候,首先我们需要对数据进行一个洗牌(数据打乱)
在这里插入图片描述
如上,在numpy中间自带了一个shuffle方法就是用来做洗牌的操作的,操作方式例如下:
在这里插入图片描述
已经将上面的数据的顺序进行了打乱
在进行梯度下降的时候,通常情况下我们选择样本较多,并且将学习率调整的较小,这样的情况会使得最后的结果进行收敛,同时也会将建模的时间增长;其实还有一个方式,在进行梯度下降前,首先对数据进行一个预处理,这样处理之后再建模,收敛的速度会更快

猜你喜欢

转载自blog.csdn.net/Escid/article/details/90726731
07
今日推荐