Logistic回归

  • 回归

    • 在介绍Logistic回归之前,先容我介绍一下什么是回归
    • 回归,指研究一组随机变量(Y1 ,Y2 ,…,Yi)和另一组(X1,X2,…,Xk)变量之间关系的统计分析方法,又称多重回归分析。通常Y1,Y2,…,Yi是因变量,X1、X2,…,Xk是自变量。
    • 若自变量和因变量之间保持一种最基本的线性关系,我们称之为线性回归,最简单的线性回归是指一元线性回归,关系为Y=a+bX+c。
    • 回归研究的过程一般是一个拟合的过程(找寻最佳拟合)。
  • Logistic回归
    • 是一种二分类算法(标签只有“是”或者“否”两个选项)
    • 利用Sigmoid函数阈值在[0,1]区间上的特性
    • 主要思想为:根据现有数据对分类边界线建立回归公式
    • 本质上就是一个基于条件概率的判别模型
    • 公式是这样的
    • 其中θ是参数列向量(也就是我们要求解的),x是样本列向量(也就是给定的数据集),θ的转置和x相乘得到矩阵z,g函数实现了任意实数到[0,1]的映射,这样样本数据集x都可以映射到[0,1]之间进行分类,h函数则给出了输出为1的概率。
    • 这就是说,如果有合适的θ,配合上x,我们通过上述公式可以计算出一个概率来对样本x分类,如果这个概率大于0.5,就说这是一个正样本,否则,这是一个负样本。
    • 问题变为了如何求这个θ了,我们可以通过定义代价函数,配合最大似然估计法,再将公式对数化,得到一个公式,求使公式值最大的θ就可以了,使用梯度上升算法可求。
    • 求出θ,也就得到了分类模型了。
    • 由于主要介绍库内使用,具体数学推导就不多赘述了。
  • 算法优点
    • Logistic回归的目的是寻找一个非线性函数Sigmoid的最佳拟合参数,只要找到,对于二分类问题,分类较快。
  • 算法缺点
    • 对于多分类问题,存在分类的难度。
  • 代码主要演示sklearn中Logistic回归使用,具体实现可以斟酌自行完成。
# -*- coding:UTF-8 -*-
"""
sklearn中Logistic回归的使用
"""
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScalerdef solve():'''处理原始数据原始数据集有缺失,经过处理特征缺失换0,不影响,因为Logistic回归中立标签缺失删除:return:'''rawFile = open('./data/rawdata.txt')dataSet = []label = []print(rawFile)for line in rawFile:line = line.strip()line = line.replace("\n", '')line2list = line.split(' ')if line2list[-1] == "?":passelse:del line2list[2]del line2list[23]del line2list[23]for i in range(len(line2list)):if line2list[i] == "?":line2list[i] = 0dataSet.append(line2list[:len(line2list)-2])label.append(line2list[-1])return dataSet, labeldef scale(dataSet):'''归一化:param dataSet: 数据集:return:'''scaler = MinMaxScaler()dataSet_new = scaler.fit_transform(dataSet)return dataSet_newdef divide(dataSet, labels):'''比例切分两个数据集:param dataSet::param labels::return:'''train_data, test_data, train_label, test_label = train_test_split(dataSet, labels, test_size=0.2)return train_data, test_data, train_label, test_labelif __name__ == '__main__':data, labels = solve()data = scale(data)# 得到数据集trainDataSet, testDataSet, trainDataLabel, testDataLabel = divide(data, labels)# 建立模型并训练# 其中,solver表示优化算法选择参数,有五个可选参数# newton-cg,lbfgs,liblinear,sag,saga# 默认为liblinear# solver参数决定了我们对逻辑回归损失函数的优化方法# 具体如何选择可以查看官方文档,一般小数据集使用下面使用的即可(多分类不是)# 其中,max_iter指明最大迭代次数,默认为10,一般无效classifier = LogisticRegression(solver='liblinear', max_iter=10).fit(trainDataSet, trainDataLabel)# 给出分类准确率,指明数据集和实际标签即可rst = classifier.score(testDataSet, testDataLabel) * 100.0print('正确率:{:.2f}'.format(rst))

使用的数据集为马的数据集,代码及数据集可以访问我的github查看。

机器学习-Logistic回归原理及实战相关推荐

  1. 机器学习8/100天-Logistic回归原理与实现

    Day 8 Logistic回归原理与实现 github: 100DaysOfMLCode 最大似然函数 L=∏i=0npyi(1−p)1−yiL = \prod_{i=0}^np^{y_i}(1-p ...

  2. 监督学习 | 线性分类 之Logistic回归原理及Sklearn实现

    文章目录 1. Logistic 回归 1.1 Logistic 函数 1.2 Logistic 回归模型 1.2.1 模型参数估计 2. Sklearn 实现 参考资料 相关文章: 机器学习 | 目 ...

  3. [机器学习]Logistic回归

    目录 什么是逻辑斯蒂(Logistic)回归? 1.线性回归函数 2.  逻辑函数(Sigmoid函数) 3. Logistic回归函数 Logistic回归分类器 梯度上升算法 python实现梯度 ...

  4. 机器学习--Logistic回归

    一.前言 logistic回归又称logistic回归分析,是一种广义的线性回归分析模型,常用于数据挖掘,疾病自动诊断,经济预测等领域.例如,探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等 ...

  5. 机器学习——logistic回归

    何为回归?假设有一系列数据点,我们使用一条直线对这些点进行拟合(该线称为最佳拟合直线),这个拟合过程就称为回归.利用Logistic回归进行分类的主要思想是:根据现有数据对分类边界线建立回归公式,并以 ...

  6. 机器学习 Logistic回归

    目录 一.线性模型及回归: 1.一维数据线性模型: 2.多维数据: 二.对数线性回归: 三.Logistic回归: 1.极大似然估计: 2.梯度下降: 三.本次实验数据集介绍: 1.数据集信息介绍: ...

  7. 机器学习--logistic回归和softmax回归

    logistic回归和softmax回归放在一起总结一下,其实softmax就是logistic的推广,logistic一般用于二分类,而softmax是多分类. logistic回归虽然也是叫回归, ...

  8. 十分钟理解logistic回归原理

    关于逻辑回归的分类算法,很多书籍都有介绍,比较来看,还是**李航老师的书<统计学习方法>**里介绍的更清楚,若大家有时间,请不要偷懒,还是建议从头开始看李航老师的书,这本书简洁明了,适合入 ...

  9. 机器学习之Stacking原理与实战

    学习过机器学习相关基础的童鞋应该知道,从基学习器的类型可将集成学习分为两大类: 同质集成(homogeneous) Boosting:Adaboost.GBDT.XGboost.lightGBM等 B ...

最新文章

  1. AVAudioPlayer播放音频
  2. Py之tkinter:python最简单的猜字小游戏带你进入python的GUI世界
  3. latex换页_备忘 | Latex 双栏模式下表格太长怎么办?
  4. 【学术相关】供参考:刚刚,2021 世界大学学术排名发布!
  5. 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先
  6. spring + mybatis 注解 @Transactional失效
  7. [Leetcode][第104题][JAVA][二叉树的最大深度][递归][BFS]
  8. phpcms v9网站的数据库配置文件在哪
  9. bootstrapValidator验证的remote中data属性里获取select一直是默认值
  10. 新零售不简单,当初马云自己都没解释清楚!
  11. topcoder srm 540 div1
  12. linux下怎样创建文本文件,如何使用Linux中的命令行快速创建文本文件 | MOS86
  13. python doc转pdf
  14. java脚手架_Java代码重构
  15. html设置只在最后一页显示页脚,在Word里怎么设置页脚只在最后一页显示?
  16. 全新荣耀手表GS 3正式发布,8通道心率AI引擎精准高效管理健康生活
  17. 产量预测文献读后整理
  18. 周期信号的傅里叶级数展开
  19. Ubuntu/Debian网络配置 Ubuntu禁用自动更新
  20. 《马里奥兄弟》告诉我们的那些道理

热门文章

  1. ZkServer服务启动的逻辑-QuorumPeerMain.runFromConfig
  2. SpringMVC简介-SpringMVC概述
  3. 从源码深处体验Spring核心技术--基于注解的IOC初始化
  4. show status用法
  5. spring事务管理-演示事务的环境准备
  6. SpringBoot 包含处理
  7. c语言怎么减去一个16进制数,一个简单的有关问题:像这样的16进制数怎么转换得到...
  8. sed模式空间(pattern space)和保持空间(hold space)
  9. 【OOP】零钱通项目
  10. 白苹果了怎么强制开机_iphone X 手机进水开机卡白苹果怎么回事?