Logistic回归之梯度上升优化算法(四)

这篇博客介绍了如何使用Python实现Logistic回归,特别是针对有缺失值的数据集进行预处理,并应用梯度上升优化算法预测病马因疝气病的死亡率。通过实例展示了数据清洗、模型构建以及结果分析,探讨了梯度上升算法在小数据集上的效果。
摘要由CSDN通过智能技术生成

Logistic回归之梯度上升优化算法(四)

从疝气病症状预测病马的死亡率

1、实战背景

我们使用Logistic回归来预测患疝气病的马的存活问题。原始数据集点击这里下载。数据中一个包含了368个样本和28个特征。这种病不一定源自马的肠胃问题,其他问题也可能引发疝气病。该数据集中包含了医院检测疝气病的一些指标,有的指标比较主观,有的指标难以测量。例如马的疼痛级别。另外需要说明的是,除了部分指标主观和难以测量外,该数据集有30%的值是缺失的。所以我们得预先对数据集进行处理,再利用Logistic回归和随机梯度上升算法来预测病马的死亡率。

2、准备数据

假设有100个样本和20个特征,这些数据都是机器手机回来的。若机器上的某个传感器损坏导致一个特征无效时该怎么办?此时是否要扔掉整个数据?这种情况下,另外19个特征怎么办?是否还可用?答案是肯定的。因为有的数据相当昂贵,扔掉和重新获取都是不可取的,下面给出了一些处理方法。

  • 使用可用特征的均值来填补缺失值
  • 使用特殊值来填补缺失值,如-1
  • 忽略有缺失值的样本
  • 使用相似样本的均值填补缺失值
  • 使用另外的机器学习算法预测缺失值

现在我们要进行数据预处理。有两件事,一、所有的缺失值必须用一个实数值;唉替换,因为我们使用的Numpy数据类型不允许包含缺失值。这里选择实数0来替换所有缺失值。这样做的好处在于更新时不会影响回归系数的值,如果选择实数0来替换缺失值,那么dataMatrix的某特征对应值为0,那么该特征的系数将不做更新。所有以0代替缺失值在Logistic回归中可以满足这个要求。二、如果在测试数据集中发现一条数据的类别标签已经缺失,那么我们的简单做法是将该条数据丢弃,这是因为类别标签与特征不同,很难确定采用某个合适的值来替换。采用Logistic回归进行分析时这类做法是合理的。现在我没有一个干净可用的数据集和一个不错的优化算法,将二者结合,预测马的生死问题。

干净数据集下载地址:https://github.com/Jack-Cherish/Machine-Learning/tree/master/Logistic

3、使用Python构建Logistic回归分类器

使用训练集的每个特征用于最优化算法中得到回归系数。把测试集的特征乘以回归系数并求和放入Sigmoid函数中。如果返回值大于0.5,预测标签为1,否则为0.

import numpy as np
import random
'''
函数说明:sigmoid函数
Parameters:
    inX - 数据
Retruns:
    sigmoid函数
'''
def sigmoid(inX):

    return (1.0/(1+np.exp(-inX)))
'''
函数说明ÿ
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值