使用Orange中的聚类算法KMeans
2013-01-16 21:35
731 查看
KMeans是orange中提供的一个用来聚类的类,它是标准k-means的实现。
初始化:
__init__(data=None, centroids=3, maxiters=None, minscorechange=None, stopchanges=0, nstart=1,initialization=kmeans_init_random, distance=orange.ExamplesDistanceConstructor_Euclidean, scoring=score_distance_to_centroids, inner_callback
= None, outer_callback = None, initialize_only = False)
参数说明:
Data:输入的数据
centroids:即k的值
maxiters:最大迭代次数,停止聚类的条件之一。如果不想让迭代次数过多,可指定此参数
minscorechange: 停止聚类的条件之一,如果不指定,则不会计算2次迭代之间的评分
stopchanges:停止聚类的条件之一nstart:指定计算次数,不是迭代次数
distance:使用的距离,默认为欧氏距离
inner_callback:如果制定,则每次迭代后调用此函数,可以通过此函数了解迭代过程中的计算细节
outer_callback:如果nstart>1,每次计算后调用此函数,可以通过此函数了解计算过程中的计算细节
代码:
说明:
定义了inner_callback和outer_callback=outcallback两个函数,用于显示每次迭代和每轮计算时的样本信息k设置为4,总共计算3轮。最终的聚类结果以最优的一次结果(评分最低的)输出最后是显示统计信息,统计聚类结果
在测试过程中发现,Orange能够处理较小规模的数据,当数据量较大时(样本数量大于25k时),会引发异常,导致无法计算出结果。故orange不适合较大规模数据处理。orange可视化功能据说+貌似很强大,但是在互联网上几乎没有找到相关资料,附带的帮助文档也没有相关说明。
初始化:
__init__(data=None, centroids=3, maxiters=None, minscorechange=None, stopchanges=0, nstart=1,initialization=kmeans_init_random, distance=orange.ExamplesDistanceConstructor_Euclidean, scoring=score_distance_to_centroids, inner_callback
= None, outer_callback = None, initialize_only = False)
参数说明:
Data:输入的数据
centroids:即k的值
maxiters:最大迭代次数,停止聚类的条件之一。如果不想让迭代次数过多,可指定此参数
minscorechange: 停止聚类的条件之一,如果不指定,则不会计算2次迭代之间的评分
stopchanges:停止聚类的条件之一nstart:指定计算次数,不是迭代次数
distance:使用的距离,默认为欧氏距离
inner_callback:如果制定,则每次迭代后调用此函数,可以通过此函数了解迭代过程中的计算细节
outer_callback:如果nstart>1,每次计算后调用此函数,可以通过此函数了解计算过程中的计算细节
代码:
import orange import orngClustering def incallback(km): print "Iteration: %d, changes: %d, score: %.4f" % (km.iteration,km.nchanges,km.score) start = 1 def outcallback(km): kmc = km.clusters[:] res = {} for c in kmc: if res.get(c)!=None: res[c] += 1 else: res[c]=1 global start print "Times = ",start print "clusters: ",res,"\n" start += 1 data = orange.ExampleTable("iris") km = orngClustering.KMeans(data,4,minscorechange=0, nstart=3,\ inner_callback=incallback,outer_callback=outcallback ) print "data num: ",len(km.clusters) kmc = km.clusters[:] res = {} for c in kmc: if res.get(c)!=None: res[c] += 1 else: res[c]=1 print "final clusters: ",res,"\n"
说明:
定义了inner_callback和outer_callback=outcallback两个函数,用于显示每次迭代和每轮计算时的样本信息k设置为4,总共计算3轮。最终的聚类结果以最优的一次结果(评分最低的)输出最后是显示统计信息,统计聚类结果
在测试过程中发现,Orange能够处理较小规模的数据,当数据量较大时(样本数量大于25k时),会引发异常,导致无法计算出结果。故orange不适合较大规模数据处理。orange可视化功能据说+貌似很强大,但是在互联网上几乎没有找到相关资料,附带的帮助文档也没有相关说明。
相关文章推荐
- 一个基于jQuery的树型插件(OrangeTree)使用介绍
- 【orange】【转】orange使用
- 使用Orange进行数据挖掘之分类(2)------KNN分类
- 使用Orange进行数据挖掘之分类(3)------决策树
- 使用Orange进行数据挖掘之聚类分析(2)------K-means
- 一个基于jQuery的树型插件(OrangeTree)使用介绍
- 使用Orange进行数据挖掘之关联------Apriori
- 使用Orange进行数据挖掘之聚类分析(1)------层次聚类
- 使用Orange进行数据挖掘之分类(1)------朴素贝叶斯分类
- 使用Orange进行数据挖掘之分类(4)------SVM
- HOW TO:在 Visual C# .NET 中使用 System.Xml 合并两个 XML 文档中的数据
- asp中使用简单的存储过程
- [导入]VS 2005中使用C#的新特性:可空类型
- Web服务的创建和使用
- 执行Insert语句时使用string的Format用法
- 在Linux下安装和使用MySQL
- 掌握WEB控件的使用(二)
- 加深C# 中字符串前加@符号理解以及使用~~
- asp.net Ajax--ValidatorCallout控件使用