机器学习非监督学习—k-means及案例分析

一、非监督学习

无监督学习,顾名思义,就是不受监督的学习,一种自由的学习方式。该学习方式不需要先验知识进行指导,而是不断地自我认知,自我巩固,最后进行自我归纳,在机器学习中,无监督学习可以被简单理解为不为训练集提供对应的类别标识(label),其与有监督学习的对比如下:有监督学习(Supervised Learning)下的训练集:

(x(1),y(1)),(x(2),y2)(x(1),y(1)),(x(2),y2)

无监督学习(Unsupervised Learning)下的训练集:

(x(1)),(x(2)),(x(3))(x(1)),(x(2)),(x(3))

在有监督学习中,我们把对样本进行分类的过程称之为分类(Classification),而在无监督学习中,我们将物体被划分到不同集合的过程称之为聚类(Clustering)

二、非监督学习之k-means

K-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型。算法执行的过程分为4个阶段。

  • 1.首先,随机设K个特征空间内的点作为初始的聚类中心。
  • 2.然后,对于根据每个数据的特征向量,从K个聚类中心中寻找距离最近的一个,并且把该数据标记为这个聚类中心。
  • 3.接着,在所有的数据都被标记过聚类中心之后,根据这些数据新分配的类簇,通过取分配给每个先前质心的所有样本的平均值来创建新的质心重,新对K个聚类中心做计算。
  • 4.最后,计算旧和新质心之间的差异,如果所有的数据点从属的聚类中心与上一次的分配的类簇没有变化,那么迭代就可以停止,否则回到步骤2继续循环。

K均值等于具有小的全对称协方差矩阵的期望最大化算法

sklearn.cluster.KMeans

class sklearn.cluster.KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')""":param n_clusters:要形成的聚类数以及生成的质心数:param init:初始化方法,默认为'k-means ++',以智能方式选择k-均值聚类的初始聚类中心,以加速收敛;random,从初始质心数据中随机选择k个观察值(行:param n_init:int,默认值:10使用不同质心种子运行k-means算法的时间。最终结果将是n_init连续运行在惯性方面的最佳输出。:param n_jobs:int用于计算的作业数量。这可以通过并行计算每个运行的n_init。如果-1使用所有CPU。如果给出1,则不使用任何并行计算代码,这对调试很有用。对于-1以下的n_jobs,使用(n_cpus + 1 + n_jobs)。因此,对于n_jobs = -2,所有CPU都使用一个。:param random_state:随机数种子,默认为全局numpy随机数生成器"""
from sklearn.cluster import KMeans
import numpy as np
X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
kmeans = KMeans(n_clusters=2, random_state=0)

方法

fit(X,y=None)

使用X作为训练数据拟合模型

kmeans.fit(X)

predict(X)

预测新的数据所在的类别

kmeans.predict([[0, 0], [4, 4]])
array([0, 1], dtype=int32)

属性

clustercenters

集群中心的点坐标

kmeans.cluster_centers_
array([[ 1.,  2.],[ 4.,  2.]])

labels_

每个点的类别

kmeans.labels_

三、k-means案例分析

手写数字数据上K-Means聚类的演示

from sklearn.metrics import silhouette_score
from sklearn.cluster import KMeansdef kmeans():"""手写数字聚类过程:return: None"""# 加载数据ld = load_digits()print(ld.target[:20])# 聚类km = KMeans(n_clusters=810)km.fit_transform(ld.data)print(km.labels_[:20])print(silhouette_score(ld.data,km.labels_))return Noneif __name__=="__main__":kmeans()

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

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

相关文章

机器学习Tensorflow基础知识、张量与变量

TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库。节点(Nodes)在图中表示数学操作,图中的线(edges)则表示在节点间相互联系的多维数据数组,即…

Entityframework批量删除

UI层 1 <a href"#" οnclick"DelData(0);return false;" id"a_del" class"easyui-linkbutton" iconcls"icon-cancel">删除</a> UI中js&#xff1a; 1 //删除按钮事件2 function DelData(id) {3 …

LeetCode 1672. 最富有客户的资产总量

文章目录1. 题目2. 解题1. 题目 给你一个 m x n 的整数网格 accounts &#xff0c;其中 accounts[i][j] 是第 i​​​​​​​​​​​​ 位客户在第 j 家银行托管的资产数量。 返回最富有客户所拥有的 资产总量 。 客户的 资产总量 就是他们在各家银行托管的资产数量之和。最…

机器学习Tensorflow基本操作:线程队列图像

一、线程和队列在使用TensorFlow进行异步计算时&#xff0c;队列是一种强大的机制。为了感受一下队列&#xff0c;让我们来看一个简单的例子。我们先创建一个“先入先出”的队列&#xff08;FIFOQueue&#xff09;&#xff0c;并将其内部所有元素初始化为零。然后&#xff0c;我…

关于使用ModelSim中编写testbench模板问题

对于初学者来说写Testbench测试文件还是比较困难的&#xff0c;但Modelsim和quartus ii都提供了模板&#xff0c;下面就如何使用Modelsim提供的模板进行操作。 Modelsim提供了很多Testbench模板&#xff0c;我们直接拿过来用可以减少工作量。对源文件编译完后&#xff0c;鼠标光…

LeetCode 1673. 找出最具竞争力的子序列(单调栈)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个正整数 k &#xff0c;返回长度为 k 且最具 竞争力 的 nums 子序列。 数组的子序列是从数组中删除一些元素&#xff08;可能不删除元素&#xff09;得到的序列。 在子序列 a 和子序列 b 第一个不相同的位置上&am…

Flask基础知识总结

有一些东西是大多数网络应用都会用到的。比如许多应用都会使用关系型数据库和用户 验证&#xff0c;在请求之前连接数据库并得到当前登录用户的信息&#xff0c;在请求之后关闭数据库连接。 更多用户贡献的代码片断和方案参见 current_app 主要内容&#xff1a; 大型应用应用工…

android获取string.xml的值

为什么需要把应用中出现的文字单独存放在string.xml文件中呢&#xff1f; 一&#xff1a;是为了国际化&#xff0c;当需要国际化时&#xff0c;只需要再提供一个string.xml文件,把里面的汉子信息都修改为对应的语言&#xff08;如&#xff0c;English&#xff09;&#xff0c;再…

牛客 怕npy的牛牛(双指针)

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9556/B 来源&#xff1a;牛客网 题目描述 牛牛非常怕他的女朋友&#xff0c;怕到了走火入魔的程度&#xff0c;以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行。 现在…

Flask入门之上传文件到本地服务器

Flask入门之上传文件到服务器今天要做一个简单的页面&#xff0c;可以实现将文件 上传到服务器&#xff08;保存在指定文件夹&#xff09;#Sample.py1 # coding:utf-82 3 from flask import Flask,render_template,request,redirect,url_for4 from werkzeug.utils import secur…

对象的三种状态

来自为知笔记(Wiz)转载于:https://www.cnblogs.com/zmpandzmp/p/3649196.html

Cygwin中如何像在Ubuntu中一样安装软件

cygwin作为windows下模拟Linux环境的的工具&#xff0c;使得我们能在windows下非常方便的使用Linux的命令和工具&#xff0c;下面讲讲怎样在cygwin添加不支持的命令。 1.首先安装cygwin&#xff1a;我们可以到Cygwin的官方网站下载Cygwin的安装程序&#xff0c;地址是&#xff…

大数据量

1.数据层放弃SQL Server数据库和存储过程&#xff0c;全部迁移到Linux平台上的MySQL数据库上&#xff1b;2.缓存不再依赖.net自身提供的缓存机制&#xff0c;迁移到部署在Linux平台上的分布式的Redis上&#xff1b;3.服务之间的调用&#xff0c;避免使用.net自身专有协议&#…

LeetCode 321. 拼接最大数(单调栈)*

文章目录1. 题目2. 解题1. 题目 给定长度分别为 m 和 n 的两个数组&#xff0c;其元素由 0-9 构成&#xff0c;表示两个自然数各位上的数字。 现在从这两个数组中选出 k (k < m n) 个数字拼接成一个新的数&#xff0c;要求从同一个数组中取出的数字保持其在原数组中的相对…

pandas数据分析选则接近数值的最接优方案

import numpy as np import pandas as pd# pandas数据分析选则接近数值的最接优方案# 1.准备数据 CHILD_TABLE (720, 750) CHIDL_STOOL (300, 350) CHILD_PLAY_LEN (300, 400) CHILD_TENT (1100, 1300) # 2.遍历循环&#xff0c;添加到列表中 sum_length_lst [] play_lst …

iOS开发者有价值的工具集

转载于&#xff1a;http://www.cocoachina.com/applenews/devnews/2014/0307/7936.html我一直比较推崇聪明地工作要远胜于刻苦地工作。使用正确的工具可以帮你更好地解决问题&#xff0c;直达目标。我们都遇见过一些功能非常强大但又价值不菲的工具&#xff0c;虽然价格贵点&am…

Python数据分析之pandas学习

Python中的pandas模块进行数据分析。 接下来pandas介绍中将学习到如下8块内容&#xff1a;1、数据结构简介&#xff1a;DataFrame和Series2、数据索引index3、利用pandas查询数据4、利用pandas的DataFrames进行统计分析5、利用pandas实现SQL操作6、利用pandas进行缺失值的处理7…

牛客 String II

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9715/B 来源&#xff1a;牛客网 给出一个仅包含小写字母的字符串s&#xff0c;你最多可以操作k次&#xff0c;使得任意一个小写字母变为与其相邻的小写字母&#xff08;ASCII码差值的绝对…

STM32的RTC万年历显示问题

博客整理后写出来的,有点乱,大家见谅! 想让串口输出万年历效果.每次秒刷新一次 结果是串口软件一直输出,看起来很难受 先讲一讲C代码的\r和\n的区别 \r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉 \n 是回车&#xff0b;换行 把光标 先移到 行首 然后换到下一…

牛客 牛牛做除法II

文章目录1. 题目2. 解题1. 题目 链接&#xff1a;https://ac.nowcoder.com/acm/contest/9715/A 来源&#xff1a;牛客网 牛牛想知道在[0,n]范围中&#xff0c;选取一个最大的数x&#xff0c;满足x % a b&#xff0c;不过这个范围可能会很大&#xff0c;牛牛不知道该如何解决…