• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > 机器学习算法-K-means聚类,算法-k-means聚类

机器学习算法-K-means聚类,算法-k-means聚类

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含机器学习算法-K-means聚类,算法-k-means聚类等服务器相关知识,网友希望可以进行参考

机器学习算法-K-means聚类,算法-k-means聚类


引文: k均值算法是一种聚类算法,所谓聚类,他是一种无监督学习,将相似的对象归到同一个蔟中。蔟内的对象越相似,聚类的效果越好。聚类和分类最大的不同在于,分类的目标事先已知,而聚类则不一样。因为其产生的结果和分类相同,而只是类别没有预先定义。

算法的目的: 使各个样本与所在类均值的误差平方和达到最小(这也是评价K-means算法最后聚类效果的评价标准)

K-均值聚类

  • 优点:容易实现
  • 缺点:可能收敛到局部最小值,在大规模数据上收敛较慢
  • 适合数据类型:数值型数据

伪代码

#创建k个点作为起始质心(经常随机选择)
#当任意一个点的蔟分配结果发生变化时
    #对数据集中的每个数据点
        #对每个质心
            #计算质心到数据点之间的距离
        #将数据点分配到距其最近的蔟
    #对每个蔟,计算蔟中所有点的均值并将均值作为质心

代码实现

因为我们用到的是数值类型的数据,这里编写一个加载数据集的函数,返回值是一个矩阵形式。
下面代码应写在一个py文件里,我这里写在kMeans.py文件中。

文件的头部引入numpy

from numpy import *

数据集加载代码

# 加载数据集文件,没有返回类标号的函数
def loadDataSet(fileName):
    dataMat = []
    openfile = open(fileName)    
    for line in openfile.readlines():
        curLine = line.strip().split('\t')
        floatLine = map(float,curLine)
        dataMat.append(floatLine)
    return dataMat

因为在k均值算法中要计算点到质心的距离,所以这里将距离计算写成一个函数,计算欧几里得距离公式:
d=(x2?x1)2+...+(z2?z1)2?????????????????????√

函数代码如下:

# 计算两个向量的欧氏距离
def distEclud(vecA,vecB):
    return sqrt(sum(power(vecA-vecB,2)))

接下来初始化k个蔟的质心函数centroid

# 传入的数据时numpy的矩阵格式
def randCent(dataMat, k):
    n = shape(dataMat)[1]
    centroids = mat(zeros((k,n)))  
    for j in range(n):
        minJ = min(dataMat[:,j]) # 找出矩阵dataMat第j列最小值
        rangeJ = float(max(dataMat[:,j]) - minJ) #计算第j列最大值和最小值的差
        #赋予一个随机质心,它的值在整个数据集的边界之内
        centroids[:,j] = minJ + rangeJ * random.rand(k,1) 
    return centroids #返回一个随机的质心矩阵

K-means算法

#k-均值算法
def kMeans(dataMat,k,distE = distEclud , createCent=randCent):
    m = shape(dataMat)[0]    # 获得行数m
    clusterAssment = mat(zeros((m,2))) # 初试化一个矩阵,用来记录簇索引和存储误差                               
    centroids = createCent(dataMat,k) # 随机的得到一个质心矩阵蔟
    clusterChanged = True
    while clusterChanged:
        clusterChanged = False
        for i in range(m):    #对每个数据点寻找最近的质心
            minDist = inf; minIndex = -1
            


 
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 机器学习算法-K-means聚类,算法-k-means聚类

相关文章

  • Hadoop 源代码分析(三)对象序列化,hadoop序列化
  • Hbase详解—–管理 Splitting,hbase详解splitting
  • Apache Spark的设计思路,apachespark
  • Linux IRQ Affinity,linuxirqaffinity
  • hadoop2.7完全分布式安装,hadoop2.7
  • Power8伴随云计算横空出世,power8伴随横空出世
  • spark资料下载,spark下载
  • Twitter发布新的大数据实时分析系统Heron,
  • Cloud Foundry buildpack开发部署实例解析,foundrybuildpack
  • Sqoop工具,sqoop安装

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • 数学定理证明机械化的中国学派(I),机械化学派
    • getRequestDispatcher()与sendRedirect()的区别,request.sendredirect
    • Zookeeper实践之:通过Zookeeper实现一个消费者进程分配程序,zookeeper消费者
    • Linux如何上线和下线CPU,Linux上线下线CPU
    • @PathVariable和@RequestParam的区别,@pathvariable
    • 超人学院Hadoop大数据资源分享,超人学院hadoop分享
    • [Sqoop]利用sqoop对mysql执行DML操作,sqoopdml
    • 商用公有云安全调研,云安全调研
    • 用户大会/会销怎么搞-Zoho CRM用户大会有感,-zohocrm
    • Flume 配置文件概述

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有