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

2023-11-09

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

解决分类问题基本的方法有:线性分类器、决策树、朴素贝叶斯、人工神经网络、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
        
    #查看权重系数
    @property
    def 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:
            #若大于阈值,则返回类别1
            if np.dot(i,self.weight)>=threshold:
                predict.append(1)
            #若小于阈值,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习-分类-线性分类器 的相关文章

  • 使用 psycopg2 在 python 中执行查询时出现“编程错误:语法错误位于或附近”

    我正在运行 Python v 2 7 和 psycopg2 v 2 5 我有一个 postgresql 数据库函数 它将 SQL 查询作为文本字段返回 我使用以下代码来调用该函数并从文本字段中提取查询 cur2 execute SELECT
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 在 python 程序中合并第三方库的最佳实践是什么?

    下午好 我正在为我的工作编写一个中小型Python程序 该任务需要我使用 Excel 库xlwt and xlrd 以及一个用于查询 Oracle 数据库的库 称为CX Oracle 我正在通过版本控制系统 即CVS 开发该项目 我想知道围
  • 将 saxon 与 python 结合使用

    我需要使用 python 处理 XSLT 目前我正在使用仅支持 XSLT 1 的 lxml 现在我需要处理 XSLT 2 有没有办法将 saxon XSLT 处理器与 python 一起使用 有两种可能的方法 设置一个 HTTP 服务 接受
  • 将 Matplotlib 误差线放置在不位于条形中心的位置

    我正在 Matplotlib 中生成带有错误栏的堆积条形图 不幸的是 某些层相对较小且数据多样 因此多个层的错误条可能重叠 从而使它们难以或无法读取 Example 有没有办法设置每个误差条的位置 即沿 x 轴移动它 以便重叠的线显示在彼此
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • 以编程方式停止Python脚本的执行? [复制]

    这个问题在这里已经有答案了 是否可以使用命令在任意行停止执行 python 脚本 Like some code quit quit at this point some more code that s not executed sys e
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 如何使用Python创建历史时间线

    So I ve seen a few answers on here that helped a bit but my dataset is larger than the ones that have been answered prev
  • 无法在 Python 3 中导入 cProfile

    我试图将 cProfile 模块导入 Python 3 3 0 但出现以下错误 Traceback most recent call last File
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • Rocket UniData/UniVerse:ODBC 无法分配足够的内存

    每当我尝试使用pyodbc连接到 Rocket UniData UniVerse 数据时我不断遇到错误 pyodbc Error 00000 00000 Rocket U2 U2ODBC 0302810 Unable to allocate
  • 如何使用 Pycharm 安装 tkinter? [复制]

    这个问题在这里已经有答案了 I used sudo apt get install python3 6 tk而且效果很好 如果我在终端中打开 python Tkinter 就可以工作 但我无法将其安装在我的 Pycharm 项目上 pip

随机推荐

  • Win10下AutoCAD2014 +VS2010 + Object2014 安装与配置环境

    Win10下AutoCAD2014 VS2010 Object2014 安装与配置环境 安装前的准备 1 AutoCAD2014安装包 https pan baidu com s 1nK zeBv7tIcipOKcVroo3g 提取码 p7
  • IDEA自动设置作者信息

    一 背景和痛点 以前用Eclipse 忘记设置类的作者信息 是可以使用 之后回车自动出现作者信息的 现在用IDEA不能通过这种方式补全 非常不方便 注意 网上很多教程 说的是新建java类的时候出现作者信息 跟提到的问题痛点是不同的 作者信
  • 实验1:顺序表的基本操作(包括基本代码)

    实验1 顺序表的基本操作 实验目的 1 掌握顺序表的存储结构 2 实现顺序表的基本操作 实验内容 建立一个顺序表L1 11 2 35 41 65 2 1 查找元素5是否存在 2 删除位序为3的元素 3 输出所有元素 4 输出顺序表的长度 5
  • [专利与论文-10]:跟小朋友聊专利

  • C语言经典100例(5)——输入三个整数x,y,z,请把这三个数由小到大输出。

    题目分析 很简单 依次比较三个数的大小进行排序 最后输出即可 代码实现 include
  • VL6180X传感器驱动

    vl6180x i2c c I2C通信 获取VL6180x地址 可以知道7位地址为0x29 写 0x52 读 0x53 写入数据 通过I2C总线向某一寄存器写入一个字节数据 成功 0 失败 1 uint8 VL6180X WriteByte
  • 配置静态路由小实验

    实验拓扑 实验要求 1 使用 eNSP 搭建如下拓扑图 2 基本配置 接口 IP 地址 设备主机名等 3 配置静态路由 使 PC1 PC2 和 PC3 可以互通 4 配置浮动静态路由 使 PC3 通过 AR3 的 G0 0 1 接口访问其他
  • surfaceDestroyed什么时候被调用

    今天看别人的代码 突然有个疑问 surfaceDestroyed这个函数什么时候被调用呢 上网搜了一番 基本都说是surface被销毁的时候 才会调用surfaceDestroyed 问题又来了surface什么时候被销毁呢 大家都知道su
  • python基础案例练习一

    员工管理系统练习 1 显示系统菜单 2 获得用户输入的菜单 3 根据用户的输入判断执行操作 存储员工信息 employee def show menu print 20 员工管理系统菜单 20 print 1 添加员工信息 print 2
  • 考试座位号 C语言

    每个 PAT 考生在参加考试时都会被分配两个座位号 一个是试机座位 一个是考试座位 正常情况下 考生在入场时先得到试机座位号码 入座进入试机状态后 系统会显示该考生的考试座位号码 考试时考生需要换到考试座位就座 但有些考生迟到了 试机已经结
  • 恶意数据包(pcap)下载网站合集

    收集一些恶意数据包下载网站 方便研究学习 https wiki wireshark org SampleCaptures https www netresec com page PcapFiles https www malware tra
  • xml中使用include引入布局

    为了复用布局 使用include方式引用 activity top bar xml 代码如下 需要注意的是 父容器LinearLayout中layout height为wrap content 而不是match parent 以免引入到其他
  • 如何动态创建二维数组[cpp]

    我们常见的用new来 动态创建一维数组 int m std cin gt gt m int 数组名 new int m 动态创建二维数组 方法一 int n 地图的长宽 cin gt gt n int map new int n 创建一个指
  • js 实现颜色值格式转换 rgb和十六进制的转换

    本文章是以prototype原型的方式 给string字符串类型添加方法 用于实现颜色值格式的转换 如果你不用原型方法 那么你只要借鉴实现方法就好了 RGB转换为16进制 String prototype colorHex function
  • Lightgbm多余信息显示

    LightGBM Warning No further splits with positive gain best gain inf 设置参数 verbosity 1 或 verbose 1
  • Python安装教程(2023年,3月)

    一 Python下载 1 进入Python官网 官网地址 https www python org 2 点击 Downloads 展开后点击 Windows 跳转到下载python版本页面 选择 Stable Releases 稳定版本 我
  • [gfirefly深入解析]--总体架构及demo讲解

    gfirefly是开源的分布式游戏服务器端框架 是firefly的gevent版本 想了解更多关于firefly可参考http www oschina net question 947559 147468 这是firefly的官网http
  • 【读书笔记】《Web全栈工程师的自我修养》

    读书笔记 Web全栈工程师的自我修养 推荐书单 1 什么是全栈工程师 黑客与画家 专业主义 2 如何成为全栈工程师 重来 更为简单有效的商业思维 精益创业 3 从学生到工程师 编程之美 微软技术面试心得 4 野生程序员的故事 打造Faceb
  • TOP命令及参数解析

    Top命令是linux 下常用的系统性能分析工具 能够实时显示系统中各个进程的资源占用状况 类似于windows的任务管理器 下面详细介绍它的使用方法 top 可以显示当前系统正在执行的进程的相关信息 包括进程ID 内存占用率 CPU占用率
  • 机器学习-分类-线性分类器

    在一个机器学习任务中 如果每一条数据的目标值是离散的 则该任务是一个分类任务 解决分类问题基本的方法有 线性分类器 决策树 朴素贝叶斯 人工神经网络 K近邻 KNN 支持向量机 SVM 组合基本分类器的集成学习算法 随机森林 Adaboos