机器学习-分类-线性分类器

article/2025/9/28 8:43:35

在一个机器学习任务中,如果每一条数据的目标值是离散的,则该任务是一个分类任务。

解决分类问题基本的方法有:线性分类器、决策树、朴素贝叶斯、人工神经网络、K近邻(KNN)、支持向量机(SVM);

组合基本分类器的集成学习算法:随机森林、Adaboost、Xgboost等。

一、线性分类器

线性分类器=假设函数+损失函数,假设函数是原始图像数据到类别的映射;

使用线性分类器分类的问题可以转化为最优化问题:通过更新假设函数的参数值来最小化损失函数的值,从而找到最优解。

在线性分类器中,输出是输入的加权和。

常用的线性分类器有:基本线性分类器、最小二乘线性分类器、感知器、逻辑回归分类器。

1.基本线性分类器

原理:

(1)计算目标值为1的所有正例数据的重心和目标值为0的所有负例数据的重心。

(2)计算与正例重心与负例重心距离相等的超平面。

过程:

(1)对训练集中目标值为1的正例逐个属性求均值,得到正例重心;对训练集中目标值为0的负例逐属性求均值,得到负例重心。

(2)正例重心和负例重心相减得到权重向量\omega

(3)将正例重心和负例重心相加除以2得到中点C。

(4)将T={\omega}^{T}C作为分类阈值。对测试集的每个样本x与权重做点乘,若大于T,则分为1;否则分为0。

 python代码:

#1.基本线性分类器
class BaseLinearClassifier:def __init__(self,w=np.zeros((20,1))):#私有属性不允许继承self.weight=w#查看权重系数@propertydef get_weight(self):return self.weight#训练函数def fit(self,xtrain,ytrain):#得到正例索引index1=np.where(ytrain==1)#得到正例重心#axis=0表示“压缩行”,对各列求均值,最终得到1*n矩阵。pos_centriod=np.mean(xtrain[index1[0]],axis=0)#得到负例索引index2=np.where(ytrain==0)#得到负例重心neg_centriod=np.mean(xtrain[index2[0]],axis=0)#得到权重向量self.weight=pos_centriod-neg_centriod#计算阈值T=np.dot(self.weight,1/2*(pos_centriod+neg_centriod))return T#准确率测试def score(self,xtest,ytest,threshold):#测试集预测的类别predict=[]for i in xtest:#若大于阈值,则返回类别1if np.dot(i,self.weight)>=threshold:predict.append(1)#若小于阈值,则返回类别0else:predict.append(0)#计算准确率accuracy=accuracy_score(ytest, predict)return accuracy#调用
baseLR=BaseLinearClassifier()
T=baseLR.fit(xtrain,ytrain)#返回阈值
accuracy_baseLR=baseLR.score(xtest,ytest,T)

2.最小二乘线性分类器

原理:

当预测值与真实值之间的均方误差最小时,预测值与真实值最接近。此时的\omega与b即求解结果。

(\omega ^{* },b^{*})=arg\underset{(w,b)}{min}\sum_{i=1}^{m}(f(x_{i})-y_{i})^{2}

过程:

(1)把数据集D表示成一个m*(d+1)的矩阵X,每行对应一个样本,前d个元素对应样本的d个属性值,最后一个元素恒为1(把常数项b也合并进w中了)。

(2)此时的求解结果为:\omega ^{* }=arg\underset{w}{min}\(y-X\widehat{w})^{T}(y-X\widehat{w})

(3)当X^{T}X满秩时,可以按照\widehat{w}=(X^TX)^{-1}X^{T}y计算。

python代码:

#2.最小二乘线性分类器
import numpy.linalg as lin
class LsqClassifier(BaseLinearClassifier):
#在继承父类后,如果在子类中重新定义了和父类中名字一样的函数,则先执行子类的,当在子类中找不到时,才去父类中找。def __init__(self):super().__init__()#继承父类中的init属性#训练函数def fit(self,xtrain,ytrain):#按照最终得到的那个公式直接求出权重矩阵。XTX=np.matmul(xtrain.T,xtrain)#np.matmual函数用于矩阵相乘,这里计算出X{T}*XXTX_inv=lin.inv(XTX)#求矩阵的逆XTX_inv_XT=np.matmul(XTX_inv,xtrain.T)self.weight=np.dot(XTX_inv_XT,ytrain)#准确率测试def score(self,xtest,ytest,threshold=0):predict=[]for i in xtest:if np.dot(i,self.weight)>threshold:predict.append(1)else:predict.append(0)accuracy=accuracy_score(ytest, predict)return accuracy@propertydef get_weight(self):return self.weight#调用
lsqLR=LsqClassifier()
lsqLR.fit(xtrain,ytrain)#返回阈值
accuracy_lsqLR=lsqLR.score(xtest,ytest)

3.感知器

原理:

假设有n个输入(每个样本有n个属性),将每个输入值加权求和,然后判断结果是否达到了某一个阈值v,若达到,则输出1;否则为-1。

o(x_{1},x_{2},...x_{n})=\left\{\begin{matrix} 1 &if w_{1}x_{1}+w_{2}x_{2}+...w_{n}x_{n}>v \\ -1 &other \end{matrix}\right.

现在令阈值v=-w_0,新增变量x_0=1,此时公式变为:

o(x_{0},x_{1},x_{2},...x_{n})=\left\{\begin{matrix} 1 &if wx>0 \\ -1 &other \end{matrix}\right.

过程:

(1)随机初始化权重向量w=(w_{0},w_{1},...w_{n})

(2)对每个训练样本x_{i},按照公式o(x_{i})=sign(w\cdot x_{i})计算其预期输出(符号函数的定义是,参数大于0时返回1;小于0时返回-1;等于0时返回0)。

(3)当预测值不等于真实值时,修改权重向量:w+=\eta y_{i}x_{i}\eta为更新步长,也叫学习速率。由于采用随机梯度下降,所以每次仅选取一个误分类样本来计算梯度。

(4)重复(2)(3),直到数据集没有被错分的样例。

python代码:

#3.感知器
class Perception(BaseLinearClassifier):def __init__(self,learning_rate=0.1):super().__init__(np.random.rand(20,1))self.learning_rate=learning_ratedef fit(self,xtrain,ytrain):#找到训练集中所有正例indexes=np.where(ytrain==1)pos=xtrain[indexes[0],:]#对所有误分类样本进行权重学习,直到所有样本都分类正确,退出迭代;或者达到最大迭代次数,推出迭代。count=0for ite in range(500):#设置最大迭代次数为500for i in pos:if np.dot(i,self.weight)<0:#分类错误self.weight+=self.__learning_rate*np.array(i).reshape(-1,1)#reshape(-1,1)的意思是,我们并不知道原来数组的形状,但我们想让列数变为1列,如果在行的位置填入-1,那么系统会自动计算出需要多少行。else:#正确分类个数加1count+=1if count==len(indexes[0]):#全部分类正确breakdef score(self,xtest,ytest,threshold=0):predict=[]for i in xtest:if np.dot(i,self.weight)>=0:predict.append(1)else:predict.append(0)accuracy=accuracy_score(ytest,predict)return accuracy@propertydef get_weight(self):return self.weight#调用
perception=Perception()
perception.fit(xtrain,ytrain)
accuracy_perception=perception.score(xtest,ytest)

4.逻辑回归分类器

原理:

对于分类问题,需要一个函数能够通过所有的输入预测出类别。

考虑最简单的二分类情况,给定数据集D={(x_{i},y_{i})}_{i=1}^{m},x_{i}\subseteq R,y_{i}\subseteq {​{0,1}}

利用线性回归模型z=w^{T}x+b计算得到预测值。

为了分类,需要将z转化为0和1。

考虑选取逻辑函数y=\frac{1}{1+exp(-z)}作为转化函数,将任意值映射到[0,1],实现由值到概率的转换。

先从一条数据拟合的直线开始,沿着最大化可能性(最大化极大似然函数)的方向不断优化,最终求出模型参数。

过程:

(1)令b=w_{0}x_{0},x_{0}=1,w=(w_{0},w_{1},...w_{d}),z=w^Tx,-z=(-w)^Tx,因为w为要求的参数,故去掉前面的负号,转换函数变为:y=\frac{1}{1+exp(w^Tx)}

(2)有ln\frac{y}{1-y}=ln\frac{1}{exp(w^Tx)}=w^Tx

(3)将y视为样本x为0类的概率,1-y视为样本x为1类的概率。二者的比值成为“几率”,一个事件的几率就是指该事件发生的概率与该事件不发生的概率的比值,反映了该事件发生的相对可能性。对几率取对数则得到对数几率(Logit)

(4)若将y视为已知样本为x并且最终被分为0类的概率,即类后验概率p{y=0|x;w}。并且给出记号:p{y=1|x;w}=\pi (x),则p{y=0|x;w}=1-\pi(x),则有:p(y_{i}|x_{i};w)=(\pi(x_{i}))^{y_{i}}(1-\pi(x_{i}))^{1-y_{i}}

(5)在得到已知参数向量和所有训练样本的情况下,求得似然函数:L(w)= \prod_{i=1}^{m}p(y_{i}|x_{i};w)

(6)w=argmaxL(w)

python代码:

sklearn库中有专门的逻辑回归分类器,直接调用即可。

#4.逻辑回归分类器
from sklearn.linear_model import LogisticRegression
lr=LogisticRegression()
lr.fit(xtrain,ytrain)
score=lr.score(xtest,ytest)


http://chatgpt.dhexx.cn/article/uyoU8FIA.shtml

相关文章

加密芯片大对比

市面上加密芯片,让人看的眼花缭乱,本文对各家加密芯片作了分析及对比 https://files.cnblogs.com/files/walta99/%E5%8A%A0%E5%AF%86%E8%8A%AF%E7%89%87%E5%A4%A7%E5%AF%B9%E6%AF%94.pdf 转载于:https://www.cnblogs.com/walta99/p/8484469.html

硬件加密芯片

TF32A09 芯片简介 产品描述 TF32A09系列芯片是同方股份有 限公司计算机系统本部自主研发的一 款高速度、高性能32位信息安全SoC 芯片。该芯片集成了高速的安全算法 和通讯接口&#xff0c;摒弃了传统的数据加解 密处理方式&#xff0c;使数据流加解密速度大 幅提升&#x…

芯片程序保护-常规芯片加密方式

芯片程序为什么要保护 针对于市场上越来越多的芯片解密方案的成熟和扩大&#xff0c;目前很对客户存在一个对于自己的产品会被同行或者其他竞争者抄袭的情况&#xff0c;对于硬件这块通常情况下是无法防止被抄的。但对于电路板的核心芯片和程序部分&#xff0c;是存在一些方式…

ATSHA204A加密芯片攻略——使用篇

ATSHA204A加密芯片是ATMEL公司研发的一款高安全性的&#xff0c;功能丰富的加密IC&#xff0c;使用SHA-256算法进行加密操作&#xff0c;内置16*32字节的slot(EEPROM)可以存储用户数据和秘钥&#xff0c;唯一的9字节序列号用于区分其他芯片&#xff0c;还有512bits的OTP区用于保…

硬件加密芯片介绍

同方股份有限公司计算机系统本部自主研发的一款高速度、高性能32位信息安全S高速加密芯片TF32A09系列。该系列芯片集成了高速的安全算法和通讯接口&#xff0c;摒弃了传统的数据加解密处理方式&#xff0c;使数据流加解密速度大幅提升&#xff0c;适用于高速数据流加密。 TF32A…

STM32芯片加密的方法

stm32加密方法&#xff1a; flash加密 96位ID号加密 96位id号 id校验 反汇编 Id存到数组&#xff0c;程序执行之前与数组之中的ID比较&#xff0c;如果相同继续执行&#xff0c;不同则终止执行 加密步骤&#xff1a; ①设计一套加密算法&#xff0c;利用MCU内部的unique ID作…

加密芯片十大品牌对比

加密芯片十大品牌对比 各大品牌加密芯片厂商都为各自的加密芯片定了型号&#xff0c;用户在进行加密芯片的选型时&#xff0c;如果没有明确的参考依据&#xff0c;很难效率而准确的选取到合适的加密芯片。作者结合自身经验&#xff0c;为大家提供一些简单实用的加密芯片选型建…

芯片加密与解密技术方法

目录&#xff1a; 一、简介 二、硅芯片安全措施的演变 三、总结 ------------------------------------------------------------------------------------------------------------- 一、简介 IC集成电路在早期&#xff0c;除法律和经济外&#xff0c;几乎没有保护措施…

His系统简介、医院信息系统(Hospital Information System

医院信息系统&#xff08;Hospital Information System&#xff09;是利用计算机技术、网络及通讯技术、多媒体技术&#xff0c;快速、准确、有效地整合医院业务信息和管理信息&#xff0c;实现医院信息最大限度的采集、传输、存储&#xff0c;从而使医院内部资源最有效的利用和…

开源项目-his医院信息系统

哈喽,大家好,今天给大家带来的开源系统是-his医院信息系统 系统主要有收费管理,药房管理,医生工作站,基础信息,统计等模块 登录 角色管理 部门管理 药品类别 药品编码 药品库存 需求计划表

医院信息系统(HIS)的“一个都不能少”!

本文由Markdown语法编辑器编辑完成。 1. 《一个都不能少》 《一个都不能少》是1999年上映的一部剧情片&#xff0c;由张艺谋导演拍摄。该片使用一班非专业演员制作一出像纪录片的电影&#xff0c;故事主题是关于农村、贫穷及文盲的问题。本片获得十项国际电影奖项&#xff0c;…

分享 | 医院常见的HIS、CIS、LIS、EMR、PACS、RIS都是指哪些系统?

随着医疗卫生体制改革&#xff0c;卫生系统的信息化建设步伐也进一步加快&#xff0c;医院信息系统已成医院必不可少的基础设施与技术环境。60年代初美国、日本、欧洲各国开始建立医院信息系统。到70年代已建成许多规模较大的医院信息系统。例如&#xff0c;瑞典首都斯德哥尔摩…

大型医院信息系统HIS源码 HIS系统全套源码

源码开发环境&#xff1a;VS2013sql2012 C/S架构 HIS主要模块介绍&#xff1a; 门急诊挂号&#xff1a;提供门诊号表处理&#xff0c;科室排班、退换号处理&#xff0c;门诊病人统计功能&#xff0c;门急诊挂号收费核算功能&#xff0c;支持医保、公费、自费等多种身份的病人…

医院HIS系统哪家好?

HIS系统哪家好&#xff1f;经常会有医院领导这样问&#xff0c;在回答这个问题前&#xff0c;我们需要先明确一个问题&#xff1a;好的标准是什么&#xff1f; 好的标准&#xff1a;好与不好实际上是一种心理感受&#xff0c;这种心理感受会包括很多方面&#xff0c;比如品牌好…

云医院HIS系统—医院挂号模块

基于JavaWEB技术的云医院HIS系统_挂号模块 基于JavaWEB技术的云医院HIS系统 1&#xff0e;首先要进行门诊挂号&#xff0c;在挂号处登记患者的基本信息、挂号级别、挂号科室及医生&#xff0c;患者缴费之后&#xff0c;打印挂号发票。挂号完成患者就可以到医生站接受看诊服务…

云HIS(二级医院,乡镇医院,民营医院,标准化HIS医院信息管理系统源码)

传统 HIS&#xff08;基于医院信息系统&#xff09; 和云 HIS&#xff08;基于云计算的医院信息系统&#xff09;各有优缺点&#xff0c;选择哪种系统需要根据具体情况进行权衡。 传统 HIS 系统通常由医院自行开发和维护&#xff0c;适用于医院内部信息化程度较高、数据安全性…

医院HIS系统

一、医院HIS系统概述 医院信息系统(Hospital Information System,HIS)&#xff0c;利用电子计算机和通讯设备&#xff0c;为医院所属各部门提供病人诊疗信息和行政管理信息的收集、存储、处理、提取和数据交换的能力&#xff0c;并满足所有授权用户的功能需求。HIS中主要覆盖包…

医院HIS系统简介

医院管理和医疗活动中进行信息管理和联机操作的计算机应用系统,英文缩写HIS。HIS是覆盖医院所有业务和业务全过程的信息管理系统。按照学术界公认的MorrisF.Collen所给的定义&#xff0c;应该是&#xff1a;利用电子计算机和通讯设备&#xff0c;为医院所属各部门提供病人诊疗信…

HIS(Hospital Information System,医院信息系统)简介

本文由Markdown语法编辑器编辑完成。 1. HIS系统简介&#xff1a; HIS (Hospital Information System)是医院信息系统的简称&#xff0c;是医院管理和医疗活动中进行信息管理和联机操作的计算机应用系统的简称。HIS是覆盖医院所有业务和业务全过程的信息管理系统。 HIS系统包…

HIS -- 医院信息管理系统业务流程

目录 一、看门诊 二、住院 三、药房药库管理 【导语&#xff1a;】 现如今&#xff0c;医疗行业发展迅速&#xff0c;人们在医院看病&#xff0c;在线上看病已经越来越常见..... 而我们现在所实现的此项目为线上医疗系统&#xff0c;该项目的完成也将为大家带来更多的方便…