线性二分类——机器学习

news2024/9/25 13:23:10

目录

一、算法思想

 二、算法原理

三、算法分析

四、源程序代码

五、运行结果及分析

六、总结


一、算法思想


(1)二分类:表示分类任务有两个类别,比如我们想识别图片中是不是狗,也就是说,训练一个分类器,输入一幅图片,用特征向量x表示,输出是不是狗,用y=0或1表示。二类分类是假设每个样本都被设置了一个且仅有一个标签 0 或者 1。

 

(2)多类分类: 表示分类任务中有多个类别, 比如对一堆水果图片分类, 它们可能是橘子、苹果、梨等. 多类分类是假设每个样本都被设置了一个且仅有一个标签: 一个水果可以是苹果或者梨, 但是同时不可能是两者。

(3)多标签分类: 给每个样本一系列的目标标签. 可以想象成一个数据点的各属性不是相互排斥的(一个水果既是苹果又是梨就是相互排斥的), 比如一个文档相关的话题. 一个文本可能被同时认为是宗教、政治、金融或者教育相关话题。

(4)二分类函数:对率函数Logistic Function,本身是激活函数,又可以当作二分类的分类函数。

 

此函数实际上是一个概率计算,它把[ − ∞ , ∞ ]之间的任何数字都压缩到[0,1]之间,返回一个概率值。这就是它的工作原理。

 二、算法原理


        训练时,一个样本x在经过神经网络的最后一层的矩阵运算后的结果作为输入,经过Sigmoid后,输出一个[0,1]之间的预测值。

        我们假设这个样本的标签值为0(属于负类,另外一类是第1类属于正类),如果其预测值越接近0,就越接近标签值,那么误差越小,反向传播的力度就越小。

        推理时,我们预先设定一个阈值,比如上图中的红线,我们设置阈值=0.5,则当推理结果大于0.5时,认为是正类;小于0.5时认为是负类;等于0.5时,根据情况自己定义。

        阈值也不一定就是0.5,也可以是0.65等等,阈值越大,准确率越高,召回率越低;阈值越小则相反。

三、算法分析


(1)、先进行正向计算,如z=x1w1+x2w2+b

(2)、然后进行分类计算a=1/(1+e^z)

(3)、损失函数计算loss=-[yln(a)+(1-y)ln(1-a)]

(4)、根据loss的值来判断分类情况是否正确

四、源程序代码



import matplotlib.pyplot as plt
import numpy as np
from sklearn.metrics import classification_report
from sklearn import tree
import graphviz
#载入数据
data = np.genfromtxt('.csv',delimiter=',')
x_data = data[:,:-1]
y_data = data[:,-1]
plt.scatter(x_data[:,0],x_data[:,-1],c=y_data)
plt.show()
#创建决策树模型
model = tree.DecisionTreeClassifier()
model.fit(x_data,y_data)
#导出决策树
dot_data = tree.export_graphviz(model,
                                out_file=None,
                                #特征的名字,要设置
                                feature_names = ['x','y'],
                                class_names=['label0','label1'],
                                filled=True,
                                rounded=True,
                                special_characters=True)
graph = graphviz.Source(dot_data)
graph.render('cart_1')
#获取数据值所在范围
x_min,x_max = x_data[:,0].min() - 1,x_data[:,0].max() + 1
y_min,y_max = x_data[:,1].min() - 1,x_data[:,1].max() + 1
 
#生成网格矩阵
xx,yy = np.meshgrid(np.arange(x_min,x_max,0.02),
                    np.arange(y_min,y_max,0.02))
z = model.predict(np.c_[xx.ravel(),yy.ravel()])
#扁平化,得到一个一个的点
#ravel和flatten类似,多维数据转一维,flatten不会改变原始数据,而ravel会
z = z.reshape(xx.shape)
#等高线图
#在这里,只有两个高度,0和1
cs = plt.contourf(xx,yy,z)
#样本散点图
plt.scatter(x_data[:,0],x_data[:,1],c=y_data)
plt.show()

五、运行结果及分析


 

由图可见,数据几乎被一条线分隔为两部分

六、总结


        通过本次实验的学习,基本可以实现线性二分类。通过对该方法的学习,发现相同的模型在不同的终止方式、不同的训练次数、损失、梯度的情况下有不同的效果。

        特别是数据标准化前和标准化后的处理有很大的差异,所以要多尝试不同的指定参数。详细的分析方式在之后的内容中介绍。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/31874.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用云服务器搭配宝塔面板搭建Z-blog个人博客系统

之前写过使用过WordPress和Typecho搭建个人博客网站的方法,这篇文章将使用Z-blog搭建个人博客系统,Z-blog相当于WordPress而言,更加小巧,但是依然有着强大的功能,以及丰富的主题和插件,因此也值得很多用户选…

数字图像处理均衡化、规定化例题及解题思路

目录 均衡化 规定化 均衡化 前置知识: rk:表示灰度级 nk:表示第k个灰度级出现的个数 sk:表示用变换函数公式计算映射后的灰度级sk 变换函数公式: 例题: 1.列表写出图像直方图均衡化的过程 2.画出均衡化以后的图像 3.画出原始图像直方图…

如何给PDF解密?建议收藏这些方法

我们在传输接收文件的时候,经常都是以PDF格式进行的,因为PDF格式具有很强的稳定性。那小伙伴们平时接收的时候,会不会发现有些PDF文件为了保密性会进行加密,如果我们经常需要使用它,就需要不断地输入密码,这…

Navicat使用教程

文章目录1.连接数据库1.1 启动MySQL1.2 Navicat连接数据库1.3 操作数据库1.4 导入EXcel表内容1.5 新建查询1.连接数据库 1.1 启动MySQL 使用管理员身份打开命令提示符 net start mysql 启动服务 net stop mysql 关闭服务 1.2 Navicat连接数据库 第一步:连接数据库之前一定要…

基于ZigBee设计的物联网LED控制系统

1. 前言 随着LED照明越来越普及以及移动互联网技术的快速发展,人们对家居生活的网络化、智能化、节能化的需求越来越强烈,将家用电器、照明灯具等模块通过无线网络集成到控制平台,实现智能控制和智能管理,目前智能LED照明已成为IOT中重要的一部分。 本文为了绿色智慧照明…

构建企业级DNS系统(十)搭建Docker容器bind

把bind运行在docker中 伴随着应用微服务化,大量应用跑在了容器之中,为了让容器的管理更可靠、可控并为上层应用提供更好的体验,更快的发布,更灵活的调度,容器云应运而生。 当各种上层应用跑在了容器之中,大…

Linux怎么设置中文语言? centos中文乱码的解决办法

怎么设置Linux系统中文语言?是很多小伙伴在开始使用Linux的时候,都会遇到一个问题,就是终端输入命令回显的时候中文显示乱码。出现这个情况一般是由于没有安装中文语言包,或者设置的默认语言有问题导致的。今天我们就以centos为例…

千亿贴息助科研,维视智造院校实验室建设攻略来了(四)!

01千亿政策贴息助力院校设备升级 近期,关于高校教育信息化的利好政策密集出台。9月7日,国务院常务会议提出对高校、职业院校和实训基地等10大领域设备购置和更新改造新增贷款,实施阶段性鼓励政策,中央财政贴息2.5个百分点&#xf…

【跟学C++】C++STL标准模板库——算法详细整理(下)(Study18)

文章目录1、简介2、STL算法分类及常用函数2.2、变序算法(二)2.2.1 替换算法(2个)2.2.2 排序算法(6个)2.2.3 分区算法(4个)2.2.4 可用于排序容器的算法(3个)3、总结 【说明】 大家好,本专栏主要是跟学C内容,自己学习了这位博主【 …

SAP PS 第八节 PS 常见问题处理-来源于SAP EPPM分享

SAP PS 常见问题处理1 配置类1.1 结果分析的几类方法1.1.1 关于CO表中价值类别和值类型区别1.1.2 关于结果分析取那个计划成本的问题1.1.3 实际成本大于计划成本的报错1.1.4 结果分析一些典型配置(闲人提供)1.1.5 结果分析1.2 计划成本1.3 结算时&#x…

回炉重造,温故知新__css常规布局方法梳理__开发实战后的经验之谈

目录 1 基础css布局 1.1 position定位 1.2 float定位 2 开发中常用的布局 2.1 flex布局 2.2 antd栅格布局 2.3 grid网格布局 3 flex布局详解 3.1 flex布局是什么 3.2 教程文档小结 3.3 flex布局应用 4 参考资料 👋🏻 写在前面: 在…

【OpenEVSE 】汽车充电桩控制项目解析

【OpenEVSE 】汽车充电桩控制项目解析1. 项目介绍2. 项目硬件3. 软件原理以及流程4. 系统结构:ESP32RAPI APIMQTT 上的 RAPI:5. SAE J1772协议简析:6. 专用充电接插件7 . 源码解析:此项目来源于openEnergyMonitor 的 openEVSE 部分&#xff0…

A. Tokitsukaze and Strange Inequality(前缀和+桶)

Problem - 1677A - Codeforces 时津风有一个长度为n的排列组合p。回顾一下,长度为n的排列组合p是由n个不同的整数组成的序列p1,p2,...,pn,每个整数从1到n(1≤pi≤n)。 她想知道在这个排列组合中,有多少个不同的指数图…

玩转MySQL:你知道什么是表分区吗

引言 分库分表相信大家都听说过,但(partitioning)表分区这个概念却鲜为人知,MySQL在5.1版本中开始支持了表分区技术,同时在MySQL5.5中进行了优化,自从MySQL支持的绝大部分引擎都开启了表分区功能。 但到底什么是表分区技术呢&…

基于golang+uniapp+python 实现的一套A股提醒系统

shareshttps://github.com/xxjwxc/shares 功能 A 股量化交易系统 后台开发语言 Go/Python gmsechttps://github.com/gmsec/gmsec gormt 嵌入,自动数据库代码生成 gorm 自动构建(gormt)https://github.com/xxjwxc/gormt 分时任务,盯盘助手,研报股评,每日监控,微信…

Bioinformatics2022 | AdvProp+:基于集成网络的分子性质预测与药物研发

论文标题:Advanced graph and sequence neural networks for molecular property prediction and drug discovery 代码:https://github.com/divelab/MoleculeX 一、Materials and methods 1、Notations and problem definitions 旨在通过基于图和基于…

Vue基础5

Vue基础5绑定样式绑定class样式绑定style样式条件渲染列表渲染v-for指令key的原理index作为key的时候id作为key的时候总结绑定样式 class样式 写法:class"xxx“ xxx可以是字符串、对象、数组 字符串的写法适用于:类名不确定,要动态获取…

如何做一个小程序商城,需要多少钱

如何做一个小程序商城,需要多少钱? 操作像玩消消乐那么简单! 费用是一年1998元至3498元。免300元认证费。买两年用四年。 日均花费不到2元就能搭建一个小程序商城。 下面分享的是自建小程序商城的教程: 1、进入第三方小程序商城制作平台…

Mybatis-Plus中getOne方法获取最新一条数据

Mybatis-Plus中getOne方法获取最新一条数据一、代码1、Controller2、Service3、效果一、代码 1、Controller GetMapping("/queryNewProduct")public ProductDTO queryNewProduct(RequestParam("type") String type) {return opProductService.queryNewPro…

Python基础(二):不同系统安装Python3

​​​​​​​ 文章目录 不同系统安装Python3 一、Anaconda安装与使用 1、下载 2、安装 3、配置 4、使用 5、常用命令 二、原生Python安装 三、在Linux环境Python安装 不同系统安装Python3 14天学习训练营导师课程:杨鑫《Python 自学编程基础》杨鑫《 P…