非监督学习

 

                                               非监督学习

1 什么是非监(unsupervised learning)督学习

无监督学习,就是不受监督的学习,一种自由的学习方式。该学习方式不需要先验知识进行指导,而是不断地自我认知,自我巩固,最后进行自我归纳,在机器学习中,无监督学习可以被简单理解为不为训练集提供对应的类别标识(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)。

2 非监督学习步骤

假设现在又1千个数据,有x1,x2两个特征,现在对这1000个数据进行聚类,首先聚类的话有多少个类别就聚成多少类,假设K是把数据划分成多少个类别,这个个数是根据业务来定的,这个K值有两种情况,一种是知道个数,一种是不知道,不知道个数的话就相当于超参数。

假设知道K为3,那么怎么做呢?①随机在数据中抽取3个样本,当做3个类别的中心点(k1,k2,k3);

②计算其余的点分别到这3个中心点的距离,每一个样本有3个距离(a,b,c),从中选出一个距离最近的点作为自己的标记,形成3个族群;

③分别计算这3个族群的平均值,把3个平均值与之前的3个旧中心点进行比较,如果相同,结束聚类,如果不同把这3个平均值当做新的中心点,重复第二步。

3 非监督学习之k-means

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

K-means算法执行的过程分为如下4个阶段:

①随机设置K个特征空间内的点作为初始的聚类中心 ;

②对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类 中心点作为标记类别 ;

③接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平 均值) ;

④如果计算得出的新中心点与原中心点一样,那么结束,否则重新进行 第二步过程

4 k-means API

sklearn.cluster.KMeans

sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’)

k-means聚类                    n_clusters:开始的聚类中心数量 (就是把这些样本分成多少个类别)

init:初始化方法,默认为'k-means ++’                    labels_:默认标记的类型,可以和真实值比较(不是值比较)

方法:

           fit(X,y=None)使用X作为训练数据拟合模型

           predict(X)预测新的数据所在的类别

属性:

           clustercenters集群中心的点坐标

           labels_每个点的类别

聚类是做在分类之前的,有的数据没有目标值的时候,应该先做聚类,然后再预测类别。

 

5 Kmeans性能评估指标

假设分为3个类别如下图,当聚类的时候最好的结果非常相似的样本变成一个类别,那也就是说外部距离是最大的,内部这些样本是非常相似的。所以外部距离(族群与族群之间的距离),越大是越好的,内部各样本之间距离越小越好,这就是聚类的目的。

评估标准就是轮廓系数。那么是怎么评估的呢?对于每一个样本都是有轮廓系数的,假设有一点蓝1,①计算蓝1到自身类别的点的距离的平均值记做ai;②分别计算蓝1到红色类别和绿色类别所有点的距离取出平均值b1,b2,取出最小值当做bi;③蓝1的轮廓系数就为(bi-ai)/(max(bi ai));④在极端情况下,假设聚类非常好,外部距离非常大,内部距离非常小,那么bi>>ai(bi远大于ai)那么轮廓系数就为1,如果情况最差ai>>bi,那么轮廓系数就为-1,所以每一个样本的轮廓系数在[-1,1]区间,越靠近1是越好的

Kmeans性能评估指标API sklearn.metrics.silhouette_score

sklearn.metrics.silhouette_score(X, labels) 计算所有样本的平均轮廓系数

X:特征值

labels:被聚类标记的目标值

 

6 案例

from sklearn.datasets import load_digits
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
# 加载数据
ld = load_digits()# 聚类
k = KMeans(n_clusters=4)
k.fit_transform(ld.data)
print("每个点的类别",k.labels_[:20])
print("评论聚类效果的轮廓系数",silhouette_score(ld.data,k.labels_))

7 总结

特点分析:采用迭代式算法(一步一步修改中心点),直观易懂并且非常实用

缺点:容易收敛到局部最优解(多次聚类)              

需要预先设定簇的数量(k-means++解决)

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

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

相关文章

LeetCode 1250. 检查「好数组」(set / 最大公约数)

文章目录1. 题目2. 解题1. 题目 给你一个正整数数组 nums,你需要从中任选一些子集,然后将子集中每一个数乘以一个 任意整数,并求出他们的和。 假如该和结果为 1,那么原数组就是一个「好数组」,则返回 True&#xff1…

js中this和回调方法循环-我们到底能走多远系列(35)

我们到底能走多远系列(35) 扯淡: 13年最后一个月了,你们在13年初的计划实现了吗?还来得及吗? 请加油~ 主题: 最近一直在写js,遇到了几个问题,可能初入门的时候都会遇到吧…

用户画像系统

用户画像系统 1 用户画像概述 1.1 什么是用户画像 用户画像就是对现实世界中用户的数学建模。现实世界的用户通过自己各种各样的行为,浏览购买,或者收藏,等等这些行为会把自己的兴趣爱好等体现在这些行为中,比如喜欢看书就会有…

编程思想:面向对象和面向过程

何谓面向对象?何谓面向过程?对于这编程界的两大思想,一直贯穿在我们学习和工作当中。我们知道面向过程和面向对象,但要让我们讲出来个所以然,又感觉是不知从何说起,最后可能也只会说出一句就是那样啦&#…

LeetCode 1210. 穿过迷宫的最少移动次数(状态压缩BFS)

文章目录1. 题目2. 解题1. 题目 你还记得那条风靡全球的贪吃蛇吗? 我们在一个 n*n 的网格上构建了新的迷宫地图,蛇的长度为 2,也就是说它会占去两个单元格。 蛇会从左上角((0, 0) 和 (0, 1))开始移动。 我们用 0 表示…

读书笔记2013第18本:《像外行一样思考,像专家一样实践》

这本书是在看《暗时间》时收集到的,书的副标题是科研成功之道,自己是个信息工作者,也号称科研工作者,虽然经常忙着一些杂活,没有时间认真思考和做实验。但从中找点立项、研究、演讲、总结的经验也是有益的。这本书的目…

Django模板(编写html代码

1.模板 用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器 模版致力于表达外观,一个视图可以使用任意一个模板,一个模板可以供多个视图…

用户画像之Spark ML实现

用户画像之Spark ML实现 1 Spark ML简单介绍 Spark ML是面向DataFrame编程的。Spark的核心开发是基于RDD(弹性分布式数据集),但是RDD,但是RDD的处理并不是非常灵活,如果要做一些结构化的处理,将RDD转换成…

EBS业务学习之应收管理

Oracle Receivable 是功能完备地应收款管理系统,它能够有效地管理客户、发票和收帐过程,因此是财务模块的重要组成部分,是财务系统中较为核心的模块之一。对于一个公司来说,是否能够与客户保持良好的跟踪,及时收取应收…

[Kaggle] Digit Recognizer 手写数字识别(神经网络)

文章目录1. baseline2. 改进2.1 增加训练时间2.2 更改网络结构Digit Recognizer 练习地址 相关博文: [Hands On ML] 3. 分类(MNIST手写数字预测) [Kaggle] Digit Recognizer 手写数字识别 1. baseline 导入包 import tensorflow as tf fr…

逻辑回归原理

逻辑回归原理 1 逻辑回归简介 logistic回归(LR),是一种广义的线性回归分析模型,常用于数据挖掘,疾病预测,经济预测等方面。 优点:计算代价低,思路清晰易于理解和实现;…

Django中示例验证码的实现总结

验证码 在用户注册、登录页面,为了防止暴力请求,可以加入验证码功能,如果验证码错误,则不需要继续处理,可以减轻业务服务器、数据库服务器的压力。 1)安装包Pillow3.4.1。 1pip install Pillow3.4.1点击查看…

java.lang.IllegalStateException: Not connected to server

在开发人际银行的时候 客户端smack老是出现如下错误: 12-09 13:00:37.115: E/AndroidRuntime(5221): FATAL EXCEPTION: Thread-1812-09 13:00:37.115: E/AndroidRuntime(5221): java.lang.IllegalStateException: Not connected to server.12-09 13:00:37.115: E/AndroidRuntim…

LeetCode 956. 最高的广告牌(DP)

文章目录1. 题目2. 解题1. 题目 你正在安装一个广告牌,并希望它高度最大。 这块广告牌将有两个钢制支架,两边各一个。每个钢支架的高度必须相等。 你有一堆可以焊接在一起的钢筋 rods。 举个例子,如果钢筋的长度为 1、2 和 3,则…

python面试题总结(一)字符串反转,写取指定数函数

1.请至少用一种方法下面字符串的反转? # 1.请至少用一种方法下面字符串的反转? s hello print() print(-a1-切片,简单的步长为-1, 即字符串的翻转(常用)-) #方法一:切片,简单的步长为-1, 即字符串的翻转(常用); a1s[::-1] print(a1)print() …

新闻发布系统登陆页

主要为前台设计&#xff0c;这真是一个细致活。另外用到圆角矩形制作&#xff0c;其实学会了也蛮简单的。 要学好后台对前台一定要有一定的了解并掌握一些相关知识。 以下为登录页代码&#xff1a; <% Page Language"C#" AutoEventWireup"true" CodeFil…

Tensorflow线程队列与IO操作

目录 Tensorflow线程队列与IO操作 1 线程和队列 1.1 前言 1.2 队列 1.3 队列管理器 1.4 线程协调器 2 文件读取 2.1 流程 2.2 文件读取API&#xff1a; 3 图像读取 3.1 图像读取基本知识 3.2 图像基本操作 3.3 图像读取API 3.4 图片批处理流程 3.5 读取图片案例 …

Django其他(站点、列表、上传

1.静态文件&#xff1a; 项目中的CSS、图片、js都是静态文件 一般会将静态文件放到一个单独的目录中&#xff0c;以方便管理 在html页面中调用时&#xff0c;也需要指定静态文件的路径&#xff0c;Django中提供了一种解析的方式配置静态文件路径 静态文件可以放在项目根目录下…

LeetCode 1298. 你能从盒子里获得的最大糖果数(BFS)

文章目录1. 题目2. 解题1. 题目 给你 n 个盒子&#xff0c;每个盒子的格式为 [status, candies, keys, containedBoxes] &#xff0c;其中&#xff1a; - 状态字 status[i]&#xff1a;整数&#xff0c;如果 box[i] 是开的&#xff0c;那么是 1 &#xff0c;否则是 0 。 - 糖…

给javascript初学者的24条最佳实践

1.使用 代替 JavaScript 使用2种不同的等值运算符&#xff1a;|! 和 |!&#xff0c;在比较操作中使用前者是最佳实践。 “如果两边的操作数具有相同的类型和值&#xff0c;返回true&#xff0c;!返回false。”——JavaScript&#xff1a;语言精粹 然而&#xff0c;当使用和&a…