机器学习-K均值算法与欧氏距离进行图片分类

 一、欧氏距离

二维的公式

  ρ = sqrt( (x1-x2)^2+(y1-y2)^2 )

三维的公式

  ρ = sqrt( (x1-x2)^2+(y1-y2)^2+(z1-z2)^2 )

n维空间的公式

  n维欧氏空间是一个点集,它的每个点 X 可以表示为 (x[1],x[2],…,x[n]) ,其中 x[i](i = 1,2,…,n) 是实数,称为 X 的第i个坐标,两个点 A = (a[1],a[2],…,a[n]) 和 B = (b[1],b[2],…,b[n]) 之间的距离 ρ(A,B) 定义为下面的公式。

  ρ(A,B) =sqrt [ ∑( a[i] - b[i] )^2 ] (i = 1,2,…,n)

二、K均值算法

k均值(k-means)是聚类算法的一种,聚类分析是根据在数据中发现的描述对象及其关系的信息,将数据对象分组。其目标是,组内的对象相互之间是相似的,而不同组中的对象是不同的。组内的相似性越大,组间差别越大,聚类就越好。

举个例子,在二维平面上有几百个点,在笛卡儿坐标系中有(x,y)坐标,把它们点到纸上,问题是如何把它们分成不同组,每个组里点彼此之前都比较相近,而离其它组的成员又比较远。下面介绍的k均值就能干这种事。

 

基本k均值

基本k均值思想很简单,首先,选择k个初始质心,其中k是用户指定的参数,即所期望的簇的个数。每个点被指派到最近的质心,而指派到一个质心的点集为一个簇。然后根据指派到簇的点,更新每个簇的质心。重复指派和更新步骤,直到簇不发生变化,或等价的,直到质心不发生变化。

 

三、部分核心代码

 

 

        '计算相似度,欧氏距离
        xsd_label.Text = ""
        sumpic3 = 0
        For myjj As Integer = 0 To 2000
            If IsNothing(pic3tz(myjj)) Then
                Exit For
            End If
            sumpic3 += Pow(pic3tz(myjj) - sumpic1(myjj), 2)
        Next
        xsd1 = Sqrt(sumpic3)
        sumpic3 = 0
        For myjj As Integer = 0 To 2000
            If IsNothing(pic3tz(myjj)) Then
                Exit For
            End If
            sumpic3 += Pow(pic3tz(myjj) - sumpic2(myjj), 2)
        Next
        xsd2 = Sqrt(sumpic3)
        Dim mydis As Integer = kdistance.Text
        If mydis < 0 Then
            kdistance.Text = 50
            mydis = 50
        End If
        xsd_label.Text &= "与A类的距离:" & vbCrLf & xsd1 & vbCrLf
        xsd_label.Text &= "与B类的距离:" & vbCrLf & xsd2 & vbCrLf
        If xsd1 > mydis And xsd2 > mydis Then
            xsd_label.Text &= "不属A和B类"
        ElseIf xsd1 > xsd2 Then
            xsd_label.Text &= "属于B类"
        Else
            xsd_label.Text &= "属于A类"
        End If

 




 



 



 



 


 



 



 

 程序见附件

 

 

下面是这个小程序对山水和瀑布图片的分类

A类是山水,B类是图片





 

 

 

Unix操作系统设计-读书笔记 文章目录引言说明结构各章节目录 引言 为什么要读这本书,这本书可以说是非常有年代了,具体是哪年发布的我没有考证,不过Linus当年写Linux的时候就是参考的本书。 我是在读Linux0.11版源码的时候,发现buffer.c里的很多算法并不是很好理解,而且算法细节均没有注释,以及算法的原因也没有解释,所以就去读这本书了; 不读不知道,一读吓一跳,发现Linux0.11版的buffer.c就是将本... 阅读详情

相关推荐

第十五课.K均值算法

目录K均值算法原理K均值算法的改进:K-means++numpy实现K-means K均值算法原理 K均值(K-means)算法属于无监督学习中的聚类算法;聚类是根据样本特征向量之间的相似度或距离,将样本数据划分为若干个样本子集,每个子集定义为一个类;相似的样本聚集在相同的类,不相似的样本分散在不同的类。由上面的定义可知,聚类算法只使用了样本的特征向量xxx,并没有使用样本的标签yyy,故聚类算法属于无监督学习 样本距离 样本距离越小,样本的相似性越大。K均值聚类使用欧式距离的平方作为样本距离,计算公式如下

白景屹的博客 4621

k 均值算法(k-means)

k-means 聚类算法,属于无监督学习算法。也就是说样本中却没有给定y,只有特征x。聚类的目的是找到每个样本x潜在的类别y,并将同类别y的样本x放在一起。k-means 算法实际上是一种最大期望算法(EM 算法)。 1. k-means算法步骤 在k-means算法中,用质心(样本均值)来表示簇类(cluster);且容易证明k-means算法收敛等同于所有质心不再发生变化。基本的k-means...

Wisimer 7203

K-means算法

目录算法概述算法原理算法推导算法流程K值的确定 算法概述 K-means算法也称为K_均值算法,用于聚类算法。聚类是一种无监督学习,他将相似的对象归于一个簇中,簇中心通过簇中所有点的均值来计算。聚类算法分类算法的主要区别就是分类的目标类别已知,而聚类的目标类别未知。 簇:所有数据点的点集合,簇中的对象是相似的 质心:簇中所有点的中心(由簇中所有点的均值求得) SSE:Sum of Sqared Error 平方误差和,SSE越小表示越接近质心 算法原理 误差平方和SSE用来衡量K-means算法的好坏SS

chp的博客 1万+

机器学习(九):k-均值(k-means)

引言:     k均值(k-means)是一种聚类算法,其工作流程如下:随机选择k个点作为初始质心(质心即簇中所有点的中心),然后将数据集中的每个点分配到一个簇中,具体来讲,为每个点找距其最近的质心,并将其分配给该质心所对应的簇。这一步完成之后,每个簇的质心更新为该簇所有点的平均值。重复以上步骤,直到质心不发生变化。     k均值的操作解释参见图1。 图1     然而随机地选取初始...

tb店铺搜:FUN STORE玩物社,专业买手挑选送礼好物 4万+

机器学习——k-均值算法(聚类)

前言:有三维聚类图,我只是一个代码的搬运工。。。 机器学习专栏:机器学习专栏 文章目录k-均值(k-means)聚类1、k-均值算法2、k-均值算法的代价函数3、k-均值算法步骤4、初始化聚类中心点和聚类个数5、sklearn实现k-means算法 k-均值(k-means)聚类 1、k-均值算法 k-均值算法是一种无监督学习,是一种“基于原型的聚类”(prototype-based clust...

Tao_RY的博客 3573

操作系统概念(第六版) 读书笔记5

    本章着重从定义和应用的角度分析了线程。  线程是有时也被称为轻量级进程(LWP),是一个基本的CPU 执行单元,它包含了一个线程ID、一个程序计数器、一个寄存器组和一个堆栈。它属于同一个进程的其它的线程共享代码段、数据段,以及其它的操作系统资源(比如:打开的文件和信号)。一个传统的(或者说重量级)进程有一个单独的控制执行序列。一个多线程程序在同样的地址空间内包含了多个不同的控制流。多线程

riccy的专栏 1054

《现代操作系统》读书笔记 - 操作系统概念

操作系统概念 1.进程 相关概念:进程、地址空间、进程表、资源集 进程:进程的本质是正在执行的一个程序。 进程表:一个进程有关的所有信息,除了该进程自身地址空间的内容以外,均存放在操作系统的一张表中,称为进程表(数组或链表结构)。 资源集:通常包括寄存器(含有程序计数器和堆栈指针)、打开文件的清单、突出的报警、有关进程清单,以及运行该程序所需要的所有其他信息。(因此,进程也可以理解为 容纳运行...

Arno_Pei的博客 1327

【读书笔记-《30天自制操作系统》-4】Day5

本篇的内容继续以显示为主,将实现文字的显示并描绘鼠标箭头,以及为了之后实现鼠标的移动,初步引入GDTIDT。

Ocean1994的博客 1390

读书笔记之《操作系统概念》

非常小型的操作系统,如篇首的小恐龙所使用的驱动手持设备的操作系统,是Silberschatz、Galvin和Gagne第七版《操作系统概念》中的一种前沿应用。通过保留最新的,保持有意义的,并改编为课程最需要的内容,这本引导市场潮流的教材继续指导着操作系统课程。 第二部分 进程管理 第四章 进程 进程状态 创建、运行、等待、就绪、终止 进程:一个具有单个控制线程的执行程序。 第五章 线程 ...

dianxiang4703的博客 262

操作系统概念(第六版) 读书笔记6

    本章主要介绍了CPU调度的概念、方法、种类、实现和应用。    CPU 调度就是从就绪队列中选择一个等待进程并为之分配CPU。调度程序把CPU 分配给选择的进程。调度的算法主要有6种:先来先服务(FCFS)调度算法、短作业优先(SJF)调度算法、轮转(RR)调度算法、优先调度算法、多级队列调度算法、多级反馈队列调度算法。    先来先服务(FCFS)调度算法是最简单的调度算法,但是

riccy的专栏 1467

操作系统概念(第六版) 读书笔记3

    本章主要从五大块来剖析了操作系统的结构,操作系统组件、操作系统服务、系统调用、系统程序和系统层次。    操作系统组件主要包括进程管理、主存储器管理、文件管理、I/O系统管理、辅助存储器管理、网络管理、系统保护、命令解释程序。    操作系统服务包括I/O 操作、文件系统处理、通信、错误检测、资源分配、账户管理、保护。    系统程序包括文件管理、文件修改、程序设计语言支持、程

riccy的专栏 1010

操作系统概念(第六版) 读书笔记1

    第一章先从整体的角度形象的描述了操作系统在整个电脑系统中的位置和角色,然后从两个角度来描述操作系统的概念,用户视角和系统视角。对于用户视角作了简单的描述,随后从系统视角展开了详尽的分析,即大型计算机系统(又分为批处理、多道程序系统、分时系统)、桌面系统、多处理系统、分布式系统(又分为客户端/服务器系统、对等网络系统)、集群系统、实施系统(又分为硬实时系统、软实时系统)、手持系统。对各种系统

riccy的专栏 1096

读书笔记 | 操作系统概念

大三下学期课程,记录一下学习的重点和笔记 ???? 这一部分只是简单地介绍一些基础的概念,形成一个大概的框架。那些比较深入和复杂的操作下一部分再详述啦。???? 读书笔记 | 操作系统概念 这本书主要介绍关于操作系统的八个部分:操作系统的主要部件, 基本的计算机组成结构, 进程管理, 内存管理, 储存管理, 保护安全, 分布式及系统, 专用系统。 第一部分 概论 第 1 章 导论 操作系统是管理计算机硬...

橘嘉禾 268

操作系统读书笔记(二)——操作系统结构

注: 这是对 [Abraham Silberschatz. 操作系统概念 第七版. 高等教育出版社, 2010.1] 一书的概述性阅读笔记       同时也是对学校操作系统课程部份作业的整理   CH2 操作系统结构   1.操作系统服务 操作系统提供执行程序的环境,向程序和程序的用户提供一定的服务。 操作系统服务向用户提供以下的函数以方便操作:提供用户界面以方便用户进行控制;提供...

ljing的博客 386

读书笔记《操作系统》

第一章 操作系统概述 1.1 操作系统的基本概念 1.1.1 操作系统的概念 操作系统是指控制和管理整个计算机系统的硬件和软件资源,并合理组织和调度计算机的工作和资源分配,以提供给用户和其它软件方便的接口和环境的程序集合 1.1.2 操作系统的特征 P2 并发,共享,虚拟,异步。前两者为基本特征。 1.1.3 操作系统的目标和功能 P4 处理机管理,存储器

HYCANYE 929

《操作系统导论》第16章读书笔记:分段

到目前为止,我们一直假设将所有进程的地址空间完整地加载到内存中。利用基址和界限寄存器,操作系统很容易将不同进程重定位到不同的物理内存区域。但是,对于这些内存区域,你可能已经注意到一件有趣的事:栈和堆之间,有一大块“空闲”空间。从图 16.1 中可知,如果我们将整个地址空间放入物理内存,那么栈和堆之间的空间并没有被进程使用,却依然占用了实际的物理内存。因此,简单的通过基址寄存器和界限寄存器实现的虚拟内存很浪费。另外,如果剩余物理内存无法提供连续区域来放置完整的地址空间,进程便无法运行。

小勇博客 1265

DP读书:《openEuler操作系统》(一)操作系统基本概念

操作系统(Operating System,OS )是现代计算机系统中最核心的软件。下面是一些简单的内容,关于openEuler在内的操作系统底层知识。fill:#333;color:#333;color:#333;fill:none;操作系统核心软件openEuler底层知识。

DarrenPig的博客 1862

嵌入式操作系统的基本概念_读书笔记_1

1.1计算机操作系统 1.1.1什么是计算机操作系统 1.裸机:只有硬件构成的计算机          2.计算机操作系统、硬件应用程序的关系: 应用软件 ↓ 系统软件 ↓ 操作系统 ↓ 计算机硬件系统          下层是上层的基础,上层是下层功能的扩充。          3.操作系统

学习ing......... 2632
上一篇: k均值
下一篇: 偏导数及其几何意义
deepfuture
博客等级 码龄17年 209粉丝 1288原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值