博主近期实习開始接触数据挖掘,将学习笔记分享给大家。眼下用的软件是weka。下篇文章会着重解说。

转载请附上链接http://blog.csdn.net/iemyxie/article/details/38173495

算法简单介绍:

K-Means算法是输入聚类个数k,以及包括n个数据对象的数据库,输出满足方差最小标准的k个聚类。并使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类对象相似度较小。

算法如果:

均方误差是计算群组分散度的最佳參数。

算法输入:

聚类个数k;包括n个数据对象的数据集。

算法输出:

k个聚类

算法思想:

(a)绿点表示数据集在二级的欧几里德空间。初始化的中心点u1和u2用红的和蓝的叉来分别表示

(b)在最初的E步骤中。每一个点依据离哪个簇中心点近,被指定为属于红簇还是蓝簇。这等于将这些点依据垂直于两个中心点的分隔线的的哪边分类,它用紫色的线表示。

(c)在接下来的M步骤。又一次计算每一个簇的中心点的平均值作为每一个簇的中心点。

直至中心点位置不变或者变化非常小。

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWVteXhpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

weka执行:

以weather.nominal.arff为例执行结果部分截图例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWVteXhpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

从结果中能够看出。这组数据用K-Means算法迭代四次,初始产生了两个中心点。终于有10个instances聚合为一类,4个instances聚合为一类。

函数调用代码:

//读入样本

Filefile=new File("F:\\Program Files (x86)\\Weka-3-7\\data\\weather.nominal.arff");

ArffLoaderloader= newArffLoader();

loader.setFile(file);

ins=loader.getDataSet();

//初始化聚类器并设置k值

KM= new SimpleKMeans();

KM.setNumClusters(2);

//进行聚类

KM.buildClusterer(ins);

//打印结果

tempIns=KM.getClusterCentroids();

System.out.println(“CentroIds:”+tempIns);

执行结果例如以下:

@attributeoutlook {sunny,overcast,rainy}

@attribute temperature {hot,mild,cool}

@attribute humidity {high,normal}

@attribute windy {TRUE,FALSE}

@attribute play {yes,no}

@data

sunny,mild,high,FALSE,yes

overcast,cool,normal,TRUE,yes

算法应用:

1.图片切割

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvaWVteXhpZQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

图为取不同k值时的效果。

2.电子商务中分析商品相似度。归类商品



3.分析公司的客户分类,使用不同的商业策略





原创文章,转载请附上链接http://blog.csdn.net/iemyxie/article/details/38173495

数据挖掘算法学习(一)K-Means算法的更多相关文章

  1. R语言学习笔记—K近邻算法

    K近邻算法(KNN)是指一个样本如果在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.即每个样本都可以用它最接近的k个邻居来代表.KNN算法适 ...

  2. Kmeans算法学习与SparkMlLib Kmeans算法尝试

    K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的 ...

  3. 机器学习:k-NN算法(也叫k近邻算法)

    一.kNN算法基础 # kNN:k-Nearest Neighboors # 多用于解决分裂问题 1)特点: 是机器学习中唯一一个不需要训练过程的算法,可以别认为是没有模型的算法,也可以认为训练数据集 ...

  4. 转载: scikit-learn学习之K最近邻算法(KNN)

    版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...

  5. KNN 与 K - Means 算法比较

    KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...

  6. 【算法学习笔记】Meissel-Lehmer 算法 (亚线性时间找出素数个数)

    「Meissel-Lehmer 算法」是一种能在亚线性时间复杂度内求出 \(1\sim n\) 内质数个数的一种算法. 在看素数相关论文时发现了这个算法,论文链接:Here. 算法的细节来自 OI w ...

  7. 四旋翼基础算法学习2-IMU输入滤波算法

    前言: 处理器读取陀螺仪加速度计数据后首先需要对数据进行滤波处理,此文分析比较几种常用的滤波算法. 参考学习:四轴加速度计滤波 IMU: IMU使用MPU9250(即MPU6500),设置加速度量程± ...

  8. 机器学习算法( 二、K - 近邻算法)

    一.概述 k-近邻算法采用测量不同特征值之间的距离方法进行分类. 工作原理:首先有一个样本数据集合(训练样本集),并且样本数据集合中每条数据都存在标签(分类),即我们知道样本数据中每一条数据与所属分类 ...

  9. 算法学习之选择排序算法的python实现

    ——参考自<算法图解> def findSmallest(arr): # 假设第一个元素最小 smallest = arr[0] smallest_index = 0 for i in r ...

  10. 算法学习之二分查找算法的python实现

    ——参考自<算法图解> 我们假设需要查找的数组是有序的(从大到小或者从小到大),如果无序,可以在第四行后插入一句 my_list.sort() 完整代码如下 def binary_sear ...

随机推荐

  1. vim下很好的右键复制方法

    1)先按shift ,然后鼠标选中即可复制:(shift按下时为非vim环境) 2)好方法: "Enable and disable mouse use noremap <f1> ...

  2. postgresql 备份(pg_dump,pg_restore)

    PG提供物理备份和逻辑备份(本篇主要讲逻辑备份)物理备份:WAL热备份逻辑备份:pg_dump,pg_dumpall,恢复时pg_restore 查看帮助命令: pg_dump --help 跟MyS ...

  3. 获取远程请求的IP地址、本机Mac地址和客户端Mac地址

    我在近期项目里面去记录异常日志时,用到了这两个地址,也是从网上和前辈那里学习到的,本人项目是MVC框架的,自己整理了一个公共方法类,包括获取远程客户端IP和Mac地址,以及获取本机Mac地址的方法,代 ...

  4. ansible usually

    链接地址:https://my.oschina.net/kangvcar/blog/1830155

  5. okhttp3 ExceptionInInitializerError 异常处理

    okhttp3 在Android4.4上出现下面异常 java.lang.ExceptionInInitializerError at okhttp3.OkHttpClient.newSslSocke ...

  6. 【Oracle】审计

    1.审计的功能:监控用户在database 的 action (操作) 2.审计分类: 1) session :在同一个session,相同的语句只产生一个审计结果(默认) 2) access : 在 ...

  7. 用户 'NT Service\MSSQLServerOLAPService' 登录失败

    初学SSAS,部署微软官方示例项目AdventureWorksDW2012Multidimensional时出现错误:用户 'NT Service\MSSQLServerOLAPService' 登录 ...

  8. 应用四:Vue之VUEX状态管理

    (注:本文适用于有一定Vue基础或开发经验的读者,文章就知识点的讲解不一定全面,但却是开发过程中很实用的) 概念:Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应 ...

  9. JS去空格、截取页面url

    1.  去掉字符串前后所有空格: 代码如下: function Trim(str) { return str.replace(/(^\s*)|(\s*$)/g, ""); } 说明 ...

  10. JS 作业

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...