数据挖掘算法学习(一)K-Means算法
博主近期实习開始接触数据挖掘,将学习笔记分享给大家。眼下用的软件是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值时的效果。
3.分析公司的客户分类,使用不同的商业策略
原创文章,转载请附上链接http://blog.csdn.net/iemyxie/article/details/38173495
数据挖掘算法学习(一)K-Means算法的更多相关文章
- R语言学习笔记—K近邻算法
K近邻算法(KNN)是指一个样本如果在特征空间中的K个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性.即每个样本都可以用它最接近的k个邻居来代表.KNN算法适 ...
- Kmeans算法学习与SparkMlLib Kmeans算法尝试
K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一.K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类.通过迭代的方法,逐次更新各聚类中心的 ...
- 机器学习:k-NN算法(也叫k近邻算法)
一.kNN算法基础 # kNN:k-Nearest Neighboors # 多用于解决分裂问题 1)特点: 是机器学习中唯一一个不需要训练过程的算法,可以别认为是没有模型的算法,也可以认为训练数据集 ...
- 转载: scikit-learn学习之K最近邻算法(KNN)
版权声明:<—— 本文为作者呕心沥血打造,若要转载,请注明出处@http://blog.csdn.net/gamer_gyt <—— 目录(?)[+] ================== ...
- KNN 与 K - Means 算法比较
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
- 【算法学习笔记】Meissel-Lehmer 算法 (亚线性时间找出素数个数)
「Meissel-Lehmer 算法」是一种能在亚线性时间复杂度内求出 \(1\sim n\) 内质数个数的一种算法. 在看素数相关论文时发现了这个算法,论文链接:Here. 算法的细节来自 OI w ...
- 四旋翼基础算法学习2-IMU输入滤波算法
前言: 处理器读取陀螺仪加速度计数据后首先需要对数据进行滤波处理,此文分析比较几种常用的滤波算法. 参考学习:四轴加速度计滤波 IMU: IMU使用MPU9250(即MPU6500),设置加速度量程± ...
- 机器学习算法( 二、K - 近邻算法)
一.概述 k-近邻算法采用测量不同特征值之间的距离方法进行分类. 工作原理:首先有一个样本数据集合(训练样本集),并且样本数据集合中每条数据都存在标签(分类),即我们知道样本数据中每一条数据与所属分类 ...
- 算法学习之选择排序算法的python实现
——参考自<算法图解> def findSmallest(arr): # 假设第一个元素最小 smallest = arr[0] smallest_index = 0 for i in r ...
- 算法学习之二分查找算法的python实现
——参考自<算法图解> 我们假设需要查找的数组是有序的(从大到小或者从小到大),如果无序,可以在第四行后插入一句 my_list.sort() 完整代码如下 def binary_sear ...
随机推荐
- JQuery常用的api[最好是系统地学习一下《锋利的JQuery》]
text http://api.jquery.com/text/ Get the combined text contents of each element in the set of matche ...
- Android+Jquery Mobile学习系列-目录
最近在研究学习基于Android的移动应用开发,准备给家里人做一个应用程序用用.向公司手机移动团队咨询了下,觉得使用Android的WebView上手最快,因为WebView等于是一个内置浏览器,可以 ...
- [POJ 1934] Trip
[题目链接] http://poj.org/problem?id=1934 [算法] 先用dp求出LCS,然后搜索即可,注意加上一些剪枝 [代码] #include <algorithm> ...
- JDBC基础01
今日知识 1. JDBC基本概念2. 快速入门3. 对JDBC中各个接口和类详解 JDBC: 1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作 ...
- android 学习记录-----------android 活动 意图 碎片
将此篇博客作为记录android项目开发过程中的学习记录
- .NET微服务架构及API网关
一.MSA简介 1.1.MSA是什么 微服务架构MSA是Microservice Architecture的简称,它是一种架构模式,它提倡将单一应用程序划分成一组小的服务,服务之间互相通讯.互相配合, ...
- BZOJ 4033 树形DP
http://blog.csdn.net/mirrorgray/article/details/51123741 安利队长blog- 树形dp吧,状态挺显然的,dp[x][j]表示以x为根的子树中,选 ...
- 修改织梦data目录名
1.修改include目录下的common.inc.php这个文件.打开文件,找到第24行: define('DEDEDATA', DEDEROOT.'/data'); 把data修改成为您要改的目录 ...
- [Intermediate Algorithm] - Sum All Odd Fibonacci Numbers
题目 给一个正整数num,返回小于或等于num的斐波纳契奇数之和. 斐波纳契数列中的前几个数字是 1.1.2.3.5 和 8,随后的每一个数字都是前两个数字之和. 例如,sumFibs(4)应该返回 ...
- MVC ViewData和ViewBag 参数名一样表示同一个值
@ViewData["MenuName"] 和 @ViewBag.MenuName 表示同一个值