在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

如何分析K

137次阅读
没有评论

共计 2129 个字符,预计需要花费 6 分钟才能阅读完成。

如何分析 K -means Clustering,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

一:算法

    K-means 算法是机器学习 聚类算法中很常用,也是最基本的一种算法。聚类算法属于无监督学习算法。算法的步骤分为以下两步:1,根据分组大小 K 的值,找出 K 个中心点,而这时候其他点也根据距离中心点的距离划分给这个中心点。2,找出每个 cluster 最优的中心点,重新分配点,并迭代。

二:Spark MLlib

    Spark MLlib 提供了 K-means 算法的实现。

数据来源

数据来源于 KDD CUP 网站,这些数据是网络连接的数据,下载    

找到 data –  kddcup.data.zip  并下载。

数据每行格式如下:

0,tcp,http,SF,215,45076,
 0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,
 0.00,0.00,0.00,0.00,1.00,0.00,0.00,0,0,0.00,
 0.00,0.00,0.00,0.00,0.00,0.00,0.00,normal.

除了最后一个为 label 外,其余的都是 features。label 可能并不准确,这些 label 仅仅标示能发现的异常,但是 k -means 却能找到未知的异常。

 2. 读取数据

 val rawDataPath =  Your kddcup.data.txt Path 
 val rawData = sc.textFile(rawDataPath)
 val labelsAndData = rawData.flatMap { line = 
 val buffer = line.split(,).toBuffer
 if (buffer.length == 42) { buffer.remove(1, 3)
 val label = buffer.remove(buffer.length - 1)
 val vector = Vectors.dense(buffer.map(_.toDouble).toArray)
 Some(label, vector)
 } else {
 None
 }
 }

数据除掉了第 2,3,4 列,最后一列数据。

 3. K-Means 算法

 val kmeans = new KMeans()
 kmeans.setK(k) // 默认的 K 为 2
 kmeans.setRuns(10) // 找寻中心点运行次数
 kmeans.setEpsilon(1.0e-6) // 找寻中心点每次变化距离,越小越远
 val model = kmeans.run(data)

使用生成的 model 并聚类

val clusterLabelCount = labelsAndData.map { case (label,datum) = 
 val cluster = model.predict(datum)
 (cluster,label) 
}.countByValue
clusterLabelCount.toSeq.sorted.foreach {case ((cluster,label),count) = 
println(f $cluster%1s$label%18s$count%8s)
}

4. 如何选择 K

K 的选择是个问题,正常说来,K 值越大,聚类的效果越好。想象下,如果每个点都是单独的一个类。。

另外,我们可以使用其他点距离中心点的距离来查看聚类的效果:

 def distance(a: Vector, b: Vector) = { math.sqrt(a.toArray.zip(b.toArray).map(p =  p._1 - p._2).map(p =  p*p).sum)
 }
 def distToCentroid(datum: Vector, model: KMeansModel) = { val cluster = model.predict(datum)
 val centroid = model.clusterCenters(cluster)
 distance(centroid, datum)
 }
 def clusteringScore(data: RDD[Vector], k: Int) = { val kmeans = new KMeans()
 kmeans.setK(k)
 kmeans.setRuns(10)
 kmeans.setEpsilon(1.0e-6)
 val model = kmeans.run(data)
 data.map(datum =  distToCentroid(datum, model)).mean()
 }
 (30 to 150 by 10 ).map(k =  clusteringScore(data,k)).foreach(println)

  有了评估,我们可以依次查看 K 的大小对聚类的影响。

关于如何分析 K -means Clustering 问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注丸趣 TV 行业资讯频道了解更多相关知识。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计2129字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 久久精品www人人爽人人 | 亚洲国产精品热久久2022 | 无码高潮喷吹在线观看 | 成人精品一区久久久久 | 亚洲精品一区制服丝袜 | 日韩一区二区三区高清电影 | 亚洲av人无码激艳猛片服务器 | 成人免费无码大片a毛片 | 国产精品免费无遮挡无码永久视频 | 亚洲国产精品无码久久98 | 又色又爽又高潮免费视频国产 | 久久精品国产亚洲av无码麻豆 | 日日摸日日碰夜夜爽av | 啪啪网免费 | 人妻无码中文字幕免费视频蜜桃 | 天天澡天天添天天摸97影院 | 欧美猛操 | 亚洲精品久久久中文字幕 | 亚洲成人精品久久 | 亚洲综合区 | 成人a免费α片在线视频网站 | 乱人伦视频中文字幕 | 色视频免费在线 | 99pao成人国产永久免费视频 | 中文字幕+乱码+中文字幕无忧 | 国产精品视频一区二区三区无码 | 国产熟女高潮视频 | 亚洲精品伊人久久久久 | 国产精品视频福利视频网 | 黑人大荫道bbwbbb高潮潮喷 | 欧美精品日日鲁夜夜添 | 国产精品中文 | 91热爆在线 | 蜜臀亚洲av无码精品国产午夜. | 成人免费无码大片a毛片软件 | 欧美丰满熟妇乱xxxxx网站 | 久久综合九色综合欧美9v777 | 愉拍自拍视频在线播放 | 午夜福利理论片在线观看 | 免费观看日本a毛片 | 91伊人久久 |