机器学习之K-Mean聚类算法
知识点:
# coding = utf-8
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
"""
非监督学习:
聚类算法:
1、随机再数据当中抽取三个样本,当作三个类别的中心点(k1,k2,k3)
2、计算其余的点分别到这三个中心点的距离,每一个样本有三个距离(a,b,c)
从中选出距离最近的一个点作为自己的标记形成三个族群
3、分别计算这三个族群的平均值,把三个平均值与之前的三个旧中心点进行比较
如果相同,结束聚类,如果不相同,把三个平均值当作新的中心点,重复第二步骤
聚类的作用:做在分类之前,利用分类的数据进行预测 API:sklearn.cluster.KMeans(n_clusters=8,init=‘k-means++’)
k-means聚类
n_clusters:开始的聚类中心数量
init:初始化方法,默认为'k-means ++’
labels_:默认标记的类型,可以和真实值比较(不是值比较) 聚类算法评估标准:外部距离最大化,内部距离最小化
轮廓系数:1、计算样本1到自身类别的点距离的平均值a_i ---->内部距离
2、计算样本1分别到其他类别下的所有点的平均距离,b_1,c_1 ---->外部距离
取其中的最小的值当作b_i
3、sc_i = (bi-ai)/max(bi,ai)
若 b_i >> a_i ,sc_i = 1 完美
若 b_i << a_i ,sc_i = -1 最差 API:sklearn.metrics.silhouette_score(X, labels)
计算所有样本的平均轮廓系数
X:特征值
labels:被聚类标记的目标值 类别的多少,可以通过查看轮廓系数判断 sc_i > 0 ,则表明聚类效果不错
"""
代码:
# coding = utf-8
import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt
from sklearn.metrics import silhouette_score
def kmean():
"""
Kmean测试
:return:
"""
#数据处理
x_train, y_train = make_blobs(n_features=28)
print(x_train.shape)
print(type(x_train))
print(x_train[1])
print(y_train)
#聚类
km = KMeans(n_clusters=3)
km.fit(x_train)
y_pre = km.predict(x_train)
print("预测结果",y_pre) ###############轮廓系数#####################
var = silhouette_score(x_train,y_pre)
print("轮廓系数:",var) #轮廓系数越大,说明聚类的效果越好 ############散点图展示######################
plt.figure(figsize=(20,20))
# colored = ['orange', 'green', 'blue', 'purple']
colored = ['orange', 'green', 'blue']
#colored = ['orange', 'green']
colr = [colored[i] for i in y_pre] plt.scatter(x_train[:, 1], x_train[:, 2],color=colr)
plt.show()
return None if __name__ == '__main__':
kmean()
轮廓系数:
机器学习之K-Mean聚类算法的更多相关文章
- 机器学习实战---K均值聚类算法
一:一般K均值聚类算法实现 (一)导入数据 import numpy as np import matplotlib.pyplot as plt def loadDataSet(filename): ...
- k均值聚类算法原理和(TensorFlow)实现
顾名思义,k均值聚类是一种对数据进行聚类的技术,即将数据分割成指定数量的几个类,揭示数据的内在性质及规律. 我们知道,在机器学习中,有三种不同的学习模式:监督学习.无监督学习和强化学习: 监督学习,也 ...
- 机器学习之K均值聚类
聚类的核心概念是相似度或距离,有很多相似度或距离的方法,比如欧式距离.马氏距离.相关系数.余弦定理.层次聚类和K均值聚类等 1. K均值聚类思想 K均值聚类的基本思想是,通过迭代的方法寻找K个 ...
- 100天搞定机器学习|day44 k均值聚类数学推导与python实现
[如何正确使用「K均值聚类」? 1.k均值聚类模型 给定样本,每个样本都是m为特征向量,模型目标是将n个样本分到k个不停的类或簇中,每个样本到其所属类的中心的距离最小,每个样本只能属于一个类.用C表示 ...
- K均值聚类算法
k均值聚类算法(k-means clustering algorithm)是一种迭代求解的聚类分析算法,其步骤是随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个 ...
- 机器学习:Python实现聚类算法(三)之总结
考虑到学习知识的顺序及效率问题,所以后续的几种聚类方法不再详细讲解原理,也不再写python实现的源代码,只介绍下算法的基本思路,使大家对每种算法有个直观的印象,从而可以更好的理解函数中参数的意义及作 ...
- 机器学习——详解经典聚类算法Kmeans
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是机器学习专题的第12篇文章,我们一起来看下Kmeans聚类算法. 在上一篇文章当中我们讨论了KNN算法,KNN算法非常形象,通过距离公 ...
- 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)
其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...
- 机器学习——利用K-均值聚类算法对未标注数据分组
聚类是一种无监督的学习,它将相似的对象归到同一簇中.它有点像全自动分类.聚类方法几乎可以应用到所有对象,簇内的对象越相似,聚类的效果越好. K-均值(K-means)聚类算法,之所以称之为K-均值是因 ...
- K均值聚类算法的MATLAB实现
1.K-均值聚类法的概述 之前在参加数学建模的过程中用到过这种聚类方法,但是当时只是简单知道了在matlab中如何调用工具箱进行聚类,并不是特别清楚它的原理.最近因为在学模式识别,又重新接触了这 ...
随机推荐
- MacOs上的Intellij idea高频快捷键总结(2018.1版本)
高频快捷键 查找类快捷键 command + F12 查看当前类方法变量 command + E 查看最近文件 Alt+F1 ...
- 【C】文件操作
文件操作 文件的打开 FILE * fopen(const char filename,const char * mode); 文件的打开操作 fopen 打开一个文件 (几种操作文件的组合) 文件的 ...
- python3之POST请求URL
方法一:使用requests模块 import requests as rq import json def funcpost(): url = 'http://www.***.com/' # 需要请 ...
- 3.NIO_Buffer缓冲区
1.缓冲区(Buffer) 一个用于特定基本数据类型的容器.由 java.nio 包定义的,所有缓冲区都是 Buffer 抽象类的子类,任何时候访问 NIO 中 的数据,都是通过缓冲区进行操作 在 J ...
- Yii2 DatePicker时间选择器的使用
bootstrap-Date Time Picker 详细配置请参考http://www.bootcss.com/p/bootstrap-datetimepicker/ use kartik\widg ...
- BZOJ 1015 并查集&连通块
很久以前,在一个遥远的星系,一个黑暗的帝国靠着它的超级武器统治者整个星系.某一天,凭着一个偶然的机遇,一支反抗军摧毁了帝国的超级武器,并攻下了星系中几乎所有的星球.这些星球通过特殊的以太隧道互相直接或 ...
- Codeforces 1082 毛毛虫图构造&最大权闭合子图
A #include<bits/stdc++.h> using namespace std; typedef long long ll; , MAXM = ; //int to[MAXM ...
- D - A or...or B Problem
题意:给定A,B,问[A,B]里取任意个数按位或,结果有多少种. 思路:这题需要找出一个分界点,即找到最高位的B是1,A是0的位置x(最低位从0开始),那么对于所有OR的结果,x处要么是1要么是0,x ...
- 集合(七) Set—HashSet,TreeSet和LinkedHashSet
四.Set Set和List一样,也是继承Collection的接口,但Set是不包含重复元素的集合.由于先啃下Map,Set的难度将会大幅减小.因为Set基本上都是以Map为基础实现的,例如两个主要 ...
- jar包上传本地maven仓库
执行mvn install:install-file -Dfile=D:\software\jave-1.0.2\jave-1.0.2\jave-1.0.2.jar -DgroupId=it.saur ...