一些概念

相关系数:衡量两组数据相关性

决定系数:(R2值)大概意思就是这个回归方程能解释百分之多少的真实值。

Kmeans聚类大致就是选择K个中心点。不断遍历更新中心点的位置。离哪个中心点近就属于哪一类。中心点的更新取此类的平均点。

优点:速度快,原理简单

缺点:最终结果与初始点选择有段,容易陷入局部最优。并且还要提前知道K值

代码

 import numpy as np

 def kmeans(X,k,maxIt):
numPoints,numDim= X.shape
dataSet=np.zeros((numPoints,numDim+1))
dataSet[:,:-1]=X #给训练集加一列存放分类信息
centroids = dataSet[np.random.randint(numPoints,size=k)]
#centroids = dataSet[0:2,:] centroids[:,-1]=range(1,k+1)#中心点最后一列储存K个值,也就是K类
iterations=0
oldCentroids=None while not SholdStop(oldCentroids,centroids,iterations,maxIt): #当不满足条件是就继续循环
print("iterations:",iterations)
print("centroids:", centroids)
oldCentroids = np.copy(centroids) #注意与赋值等号的区别
iterations += 1
updateLabels(dataSet,centroids) #更新数据集最后一列分类信息
centroids=getCentroids(dataSet,k)#根据分类信息更新中心点
return dataSet def SholdStop(oldCentroids,centroids,iterations,maxIt):
if iterations>maxIt:
return True
return np.array_equal(oldCentroids,centroids) def updateLabels(dataSet,centroids):
numPoints, numDim = dataSet.shape
for i in range(0,numPoints):
dataSet[i,-1]=getLabelFromClosestCentroid(dataSet[i,:-1],centroids) def getLabelFromClosestCentroid(dataSetRow,centroids):
label = centroids[0,-1]
minDist = np.linalg.norm(dataSetRow-centroids[0,:-1])
for i in range(1,centroids.shape[0]):
dist = np.linalg.norm(dataSetRow-centroids[i,:-1])
if dist<minDist:
minDist=dist
label=centroids[i,-1]
print("minDist",minDist)
return label def getCentroids(dataSet,k):
result=np.zeros((k,dataSet.shape[1]))
for i in range(1,k+1):
oneClister = dataSet[dataSet[:,-1]==i,:-1]
result[i-1,:-1]=np.mean(oneClister,axis=0) #每列取平均值
result[i - 1, -1]=i
return result x1=np.array([1,1])
x2=np.array([2,1])
x3=np.array([4,3])
x4=np.array([5,4])
testX=np.vstack((x1,x3,x3,x4)) #纵向堆起来组成一个矩阵 result=kmeans(testX,2,10)
print("result",result)

这个原理很简单,在实现过程中也没遇到什么问题。

菜鸟之路——机器学习之Kmeans聚类个人理解及Python实现的更多相关文章

  1. 菜鸟之路——机器学习之BP神经网络个人理解及Python实现

    关键词: 输入层(Input layer).隐藏层(Hidden layer).输出层(Output layer) 理论上如果有足够多的隐藏层和足够大的训练集,神经网络可以模拟出任何方程.隐藏层多的时 ...

  2. 菜鸟之路——机器学习之KNN算法个人理解及Python实现

    KNN(K Nearest Neighbor) 还是先记几个关键公式 距离:一般用Euclidean distance   E(x,y)√∑(xi-yi)2 .名字这么高大上,就是初中学的两点间的距离 ...

  3. 菜鸟之路——机器学习之SVM分类器学习理解以及Python实现

    SVM分类器里面的东西好多呀,碾压前两个.怪不得称之为深度学习出现之前表现最好的算法. 今天学到的也应该只是冰山一角,懂了SVM的一些原理.还得继续深入学习理解呢. 一些关键词: 超平面(hyper ...

  4. 机器学习六--K-means聚类算法

    机器学习六--K-means聚类算法 想想常见的分类算法有决策树.Logistic回归.SVM.贝叶斯等.分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别 ...

  5. 机器学习算法-K-means聚类

    引文: k均值算法是一种聚类算法.所谓聚类.他是一种无监督学习,将类似的对象归到同一个蔟中.蔟内的对象越类似,聚类的效果越好. 聚类和分类最大的不同在于.分类的目标事先已知.而聚类则不一样. 由于其产 ...

  6. 机器学习: K-means 聚类

    今天介绍机器学习里常见的一种无监督聚类算法,K-means.我们先来考虑在一个高维空间的一组数据集,S={x1,x2,...,xN}" role="presentation&quo ...

  7. 机器学习:K-Means聚类算法

    本文来自同步博客. 前面几篇文章介绍了回归或分类的几个算法,它们的共同点是训练数据包含了输出结果,要求算法能够通过训练数据掌握规律,用于预测新输入数据的输出值.因此,回归算法或分类算法被称之为监督学习 ...

  8. 机器学习中K-means聚类算法原理及C语言实现

    本人以前主要focus在传统音频的软件开发,接触到的算法主要是音频信号处理相关的,如各种编解码算法和回声消除算法等.最近切到语音识别上,接触到的算法就变成了各种机器学习算法,如GMM等.K-means ...

  9. 【机器学习】K-means聚类算法与EM算法

    初始目的 将样本分成K个类,其实说白了就是求一个样本例的隐含类别y,然后利用隐含类别将x归类.由于我们事先不知道类别y,那么我们首先可以对每个样例假定一个y吧,但是怎么知道假定的对不对呢?怎样评价假定 ...

随机推荐

  1. hihoCoder hiho一下 第二周 #1014 : Trie树(Trie树基本应用)

    思路: 完全看题目中的介绍就行了.还有里面的input写道:不保证是英文单词,也有可能是火星文单词哦.比赛结束后的提交是不用考虑26个字母之外的,都会AC,如果考虑128种可能的话,爆了内存.步骤就是 ...

  2. 怎样在github里面写个人主页

    1 登录你的账号 打开

  3. 黑箱中的 retain 和 release

    https://github.com/Draveness/Analyze/blob/master/contents/objc/黑箱中的%20retain%20和%20release.md 写在前面 在 ...

  4. flash + php对称密钥加密的交互

    这几天研究了下php和flash中的对称密钥加密的交互问题,经过研究以后决定,在项目中使用aes加密.问题也就来了,在flash中的加密数据如何与php的amf进行数据交互,最终决定使用base64编 ...

  5. CUDA常见问题与解答

    源 1.在SDK自带的例子程序中,发现SRC文件珜下有.cpp文件和.cu文件.这两种文件的关系和各自的作用是什么呀? 答:SDK自带例子中的.cpp文件主要是一些CPU端处理,或者是使用CPU计算对 ...

  6. C#的接口基础教程之三 定义接口成员

    接口可以包含一个和多个成员,这些成员可以是方法.属性.索引指示器和事件,但不能是常量.域.操作符.构造函数或析构函数,而且不能包含任何静态成员.接口定义创建新的定义空间,并且接口定义直 接包含的接口成 ...

  7. 国产中标麒麟Linux部署dotnet core 环境并运行项目 (一) 安装dotnet core

    背景 根据我之前写的文章 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目,我们将公司内部最核心的ORM框架迁移到net core 上面,并在win ...

  8. SQLyog点击“测试连接”后,报2058错误

    问题:安装MySQL和SQLyog之后,在SQLyog中点击“测试连接”时,报2058错误. 解决:这里要确定两个问题:1 MySQL是否配置了环境变量:2 如果配置了MySQL环境变量,那么需要在c ...

  9. 【原创】数据处理中判断空值的方法(np.isnan、is np.nan和pd.isna)比较

      转载请注明出处:https://www.cnblogs.com/oceanicstar/p/10869725.html  1.np.isnan(只有数组数值运算时可使用) 注意:numpy模块的i ...

  10. nginx安装php环境

    1.php下载地址 https://secure.php.net/downloads.php(此次安装版本为7.0.33) 2.安装依赖的包 yum -y install libxml2 yum -y ...