目录

  • 逻辑回归
    • 水位判断案例引入逻辑回归计算原理
    • 逻辑回归
    • 单次项逻辑回归代码示例
    • 二阶项及以上项式的边界函数计算和绘制
      • 二阶多项式逻辑回归案例
        • 尝试用一阶函数画出边界
        • 二阶项逻辑回归
  • K近邻分类模型(K-nearest neighbors)
    • K近邻分类模型算法步骤
  • 决策树
    • 决策树原理
    • 核心问题:树结构的每个分支先看哪个特征指标?
      • ID3算法
    • 实战:决策树判断员工是否适合相关工作
      • 修改leaf参数查看效果,改最小50个样本
  • 朴素贝叶斯
    • 条件概率
    • 全概率
    • 贝叶斯
      • 贝叶斯公式
    • 贝叶斯用于机器训练
      • 朴素贝叶斯公式
    • 总结
    • 实战:朴素贝叶斯预测学生录取及奖学金情况
  • K-means聚类分析
    • 核心流程
    • K均值聚类 (KMeans) VS K近邻分类 (KNN)
    • 实战1:普通数值类数据分类
      • knn建模部分
      • 逐步迭代查看KMeans模型训练效果
    • 实战2:K均值聚类实现图像分割
      • 修改分类数(4)
  • 未完待续……

逻辑回归

计算机自动寻找垃圾信息共同特征

在新信息中检测是否包含垃圾信息特征内容,
判断其是否为垃圾邮件


部分特征:发件人、是否群发、网址、元、赢、微信、免费

  • 根据数据类别与部分特征信息,自动寻找类别与特征信息的关系,
    判断一个新的样本属于哪种类别

特征信息以列为单位,行是不同人的信息,输出数据类别(如0是正常,1是垃圾),然后去寻找关系


  • 通过股价预测任务区分回归任务与分类任务

    分类:非连续性判断类别
    模型输出:非连续型标签
    (明天股价预测为:上涨)

回归:连续性数值预测
模型输出:连续型数值
(明天股价预测为:125.1)

水位判断案例引入逻辑回归计算原理

任务:根据水位,判断水池是否需要蓄水或放水

特征信息:水位数据
数据类别:待蓄水(0)、放水(1)

  • 先尝试用线性回归判断(复杂场景就不适用了)

    求得一元线性回归直线方程


    但如果数据样本复杂度增加,模型准确率下降明显

    例如增加了一个x=50后,y的直线方程输出了异常的数据,如x=1时,方程判断结果=0

逻辑回归

根据数据特征,计算样本归属于某一类别的概率P(x),根据概率数值判断其所属类别

Y(x)界线明显,分类效果好!

  • 逻辑回归处理更复杂的分类任务1


需要画分界线,将p(x)中的x变成了函数g(x),如果g(x)>0 ,则输出方形;如果g(x)<0,则输出三角形

  • 逻辑回归处理更复杂的分类任务2

g(x)大于0,小于0,等于0分别对应值在圆圈外,圆圈内,圆圈上

通过以上两个复杂任务的探索,可以知道:
逻辑回归结合多项式边界函数可解决复杂的分类问题
模型求解的核心,在于寻找到合适的多项式边界函数

  • 因此求解边界函数变成了主要的问题
    求解边界函数(可以理解为找到回归方程,但输出的未必是一条直线,而是分界线),需要用到损失函数J来判断预测值和实际值的偏差程度:

求损失函数J(判断预测值和实际值的偏差程度),由原来计算一元线性回归时计算预测yi值与实际y值差的平方和变成了如下图的公式,此时yi就是实际要判断出来值(不是机器预测的值),而-log(p(x))、-log(1-p(x))就是对p(x)这个预测值计算出损失函数J

P(x)就是刚刚的逻辑函数,公式为:

输出的是偏向0或1的值

  • 损失函数J计算值的解释

如果y=1,而p(x)=1,则计算出的J=0

如果y=1,而p(x)=0(说明预测错了),则计算出的J会很大,即损失值很大

同理,对于要测出的实际值是0,如果y=0,而p(x)=1,则计算出的J=0,是符合的


如果y=0,而p(x)=1(说明预测错了),则计算出的J会很大,即损失值很大,也是符合我们的预期判断的

  • 损失函数有关计算汇总

损失函数的两个公式可以整合成一个,也是合理的,当yi=0时,yi*log(p(x))就会=0,而恰好log(1-P(x))就可以输出值;当yi=0时,同理可得,也能得到相应的值

而g(x)中各个θ需要通过梯度下降法进行求解,令θ=tempθ,重新代入计算,直到收敛

单次项逻辑回归代码示例

import pandas as pd
import numpy as np
import matplotlib.pyplot as pltfrom sklearn.linear_model import LogisticRegression # 逻辑回归
# 数据读取
data = pd.read_csv(r'task1_data.csv')
data.head()

# 可视化数据
fig1 = plt.figure()
plt.scatter(data.loc[:,'尺寸1'],data.loc[:,'尺寸2'])
plt.title('size1-size2')
plt.xlabel('size1')
plt.ylabel('size2')
plt.show()

# 建立一个用于筛选类别的变量
mask = data.loc[:,'y'] ==1
print(mask)

# 重新数据可视化,利用布尔筛选显示的数值
ok = plt.scatter(data.loc[:,'尺寸1'][mask],data.loc[:,'尺寸2'][mask])
ng = plt.scatter(data.loc[:,'尺寸1'][~mask],data.loc[:,'尺寸2'][~mask])
plt.title('size1-size2')
plt.xlabel('size1')
plt.ylabel('size2')
plt.legend((ok,ng),('ok','ng'))
plt.show()

# x,y赋值
x = data.drop(['y'],axis=1)
y = data.loc[:,'y']
x.head()

# 创建模型
model = LogisticRegression()
print(model)

# 模型训练
model.fit(x,y)

# 预测值
y_predict = model.predict(x)
print(y_predict)

# 预测值
y_test = model.predict([[1,10]])
print('ok' if y_test == 1 else 'ng')

二阶项及以上项式的边界函数计算和绘制

如果想输出这样的边界函数


需要用到的g(x)函数就会变成如下图的二阶边界函数


而二阶函数其实也是一个二次函数(抛物线方程),数值方面可以进行变成,变成如下图的:

二阶多项式逻辑回归案例

就是有更多的θ,画的边界曲线也更加复杂,如

尝试用一阶函数画出边界

 边界函数:  												

python机器学习之分类预测相关推荐

  1. 数据分享|PYTHON用决策树分类预测糖尿病和可视化实例

    全文下载链接:http://tecdat.cn/?p=23848 在本文中,决策树是对例子进行分类的一种简单表示.它是一种有监督的机器学习技术,数据根据某个参数被连续分割.决策树分析可以帮助解决分类和 ...

  2. python机器交易_[原创]Python 机器学习之 SVM 预测买卖 -- 基于 BotVS 量化平台

    Python 机器学习之 SVM 预测买卖 Python入门简单策略 sklearn 机器学习库的使用 回测系统自带的库有 numpy pandas TA-Lib scipy statsmodels  ...

  3. Python机器学习-多元分类的5种模型

    最近上了些机器学习的课程,于是想透过Kaggle资料集来练习整个资料科学专案的流程,在模型训练阶段,虽然听过许多分类模型,但不是很了解其各别的优缺点与适合的使用时机,所以想来整理一篇文章,统整上课学习 ...

  4. python根据品种散点图鸢尾花_[Python机器学习]鸢尾花分类 机器学习应用

    1.问题简述 假设有一名植物学爱好者对她发现的鸢尾花的品种很感兴趣.她收集了每朵鸢尾花的一些测量数据: 花瓣的长度和宽度以及花萼的长度和宽度,所有测量结果的单位都是厘米. 她还有一些鸢尾花的测量数据, ...

  5. python bp神经网络分类预测结果图_深度学习入门(四)BP神经网络——数字分类...

    采用的是python中机器学习库sklearn图片数据 sklearn简要介绍: #sklearn是Python中的一个机器学习包 from sklearn.datasets import load_ ...

  6. 机器学习SVC分类预测三个月后的股价

    思路:通过学习近两年的每个季度报的基本面财务数据,建立模型,买入并持有预测三个月后会涨5%以上的股票,直到下一批季度报 数据采集:用到了大约10018行数据(已去除缺失值,不采用填充),其中采用了两个 ...

  7. Python机器学习 鸢尾花分类1

    题目描述 请编写代码实现train_and_predict功能,实现能够根据四个特征对三种类型的鸢尾花进行分类. train_and_predict函数接收三个参数: train_input_feat ...

  8. python机器学习常用模型

    python机器学习 算法分类 监督学习 定义︰输入数据是由输入特征值和目标值所组成.函数的输出可以是一个连续的值(称为回归),或是输出是有限个离散值(称作分类). 分类: k-近邻 贝叶斯 决策树 ...

  9. 【机器学习入门】(2) 朴素贝叶斯算法:原理、实例应用(文档分类预测)附python完整代码及数据集

    各位同学好,今天我向大家介绍python机器学习中的朴素贝叶斯算法.内容有:算法的基本原理:案例实战--新闻文档的分类预测. 案例简介:新闻数据有20个主题,有10万多篇文章,每篇文章对应不同的主题, ...

最新文章

  1. 如何正确的使用Java8中的Optional类来消除代码中的null检查
  2. Core Graphics
  3. P1133 教主的花园
  4. 信息学奥赛一本通 1084:幂的末尾 | OpenJudge NOI 小学奥数 7833
  5. vue常见知识点总结
  6. java文档注释加减乘除,java精确的加减乘除
  7. C#中索引器的简单使用
  8. 自动化运维工具SaltStack
  9. mysql gui tools ojdbc14.jar_转 OJDBC驱动版本区别 [ojdbc14.jar,ojdbc5.jar跟ojdbc6.jar的区别]...
  10. windows快捷键大全
  11. 基于android的超级记事本,超级记事本基于设计论文
  12. Micrium uC-Probe STM32调试工具 ucosIIucosIII
  13. apache-ant-1.7 下载
  14. android项目银联支付
  15. 超声波测距实现距离预警(米斯琪+开发板)
  16. 前端项目如何使用svg矢量图
  17. LightOJ-1253 Misere Nim
  18. Turing GPU将如何彻底改变沉浸式AI
  19. 如何关上计算机设备锁,微信如何设置应用锁?微信怎么开启设备锁?
  20. 学习:SharePoint Caml Filter with Muli-values Lookup field

热门文章

  1. ios备忘录下载安卓版_叮咚~biubiu加速器IOS国服版上线啦
  2. 记录使用centos7桌面版-倍洽 Linux 版
  3. 硬件测试工程师——第一天(认识元器件)
  4. 4.BLDC电机控制算法
  5. bzoj 3234: [Ahoi2013]立方体
  6. compileSdkVersion、buildToolsVersion、minSdkVersion、targetSdkVersion
  7. 深度学习用Ubuntu 18.04装机记录
  8. B2B2C/B2B/B2C商城源码
  9. linux下qt打印功能如何实现,QT实现操控打印机打印图片
  10. 移动视频终端接入南瑞统一视频平台的两种方式