最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spark實現(xiàn)K-Means算法代碼示例

 更新時間:2017年10月17日 14:38:44   作者:MSTK  
這篇文章主要介紹了Spark實現(xiàn)K-Means算法代碼示例,簡單介紹了K-Means算法及其原理,然后通過具體實例向大家展示了用spark實現(xiàn)K-Means算法,需要的朋友可以參考下。

K-Means算法是一種基于距離的聚類算法,采用迭代的方法,計算出K個聚類中心,把若干個點聚成K類。

MLlib實現(xiàn)K-Means算法的原理是,運(yùn)行多個K-Means算法,每個稱為run,返回最好的那個聚類的類簇中心。初始的類簇中心,可以是隨機(jī)的,也可以是KMean||得來的,迭代達(dá)到一定的次數(shù),或者所有run都收斂時,算法就結(jié)束。

用Spark實現(xiàn)K-Means算法,首先修改pom文件,引入機(jī)器學(xué)習(xí)MLlib包:

  <dependency>
   <groupId>org.apache.spark</groupId>
   <artifactId>spark-mllib_2.10</artifactId>
   <version>1.6.0</version>
  </dependency>

代碼:

import org.apache.log4j.{Level,Logger}
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.mllib.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors
object Kmeans {
 def main(args:Array[String]) = {
 // 屏蔽日志
 Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
 Logger.getLogger("org.apache.jetty.server").setLevel(Level.OFF)
 // 設(shè)置運(yùn)行環(huán)境
 val conf = new SparkConf().setAppName("K-Means").setMaster("spark://master:7077")
  .setJars(Seq("E:\\Intellij\\Projects\\SimpleGraphX\\SimpleGraphX.jar"))
 val sc = new SparkContext(conf)
 // 裝載數(shù)據(jù)集
 val data = sc.textFile("hdfs://master:9000/kmeans_data.txt", 1)
 val parsedData = data.map(s => Vectors.dense(s.split(" ").map(_.toDouble)))
 // 將數(shù)據(jù)集聚類,2個類,20次迭代,形成數(shù)據(jù)模型
 val numClusters = 2
 val numIterations = 20
 val model = KMeans.train(parsedData, numClusters, numIterations)
 // 數(shù)據(jù)模型的中心點
 println("Cluster centres:")
 for(c <- model.clusterCenters) {
  println(" " + c.toString)
 }
 // 使用誤差平方之和來評估數(shù)據(jù)模型
 val cost = model.computeCost(parsedData)
 println("Within Set Sum of Squared Errors = " + cost)
 // 使用模型測試單點數(shù)據(jù)
 println("Vectors 7.3 1.5 10.9 is belong to cluster:" + model.predict(Vectors.dense("7.3 1.5 10.9".split(" ")
  .map(_.toDouble))))
 println("Vectors 4.2 11.2 2.7 is belong to cluster:" + model.predict(Vectors.dense("4.2 11.2 2.7".split(" ")
  .map(_.toDouble))))
 println("Vectors 18.0 4.5 3.8 is belong to cluster:" + model.predict(Vectors.dense("1.0 14.5 73.8".split(" ")
  .map(_.toDouble))))
 // 返回數(shù)據(jù)集和結(jié)果
 val result = data.map {
  line =>
  val linevectore = Vectors.dense(line.split(" ").map(_.toDouble))
  val prediction = model.predict(linevectore)
  line + " " + prediction
 }.collect.foreach(println)
 sc.stop
 }
}

使用textFile()方法裝載數(shù)據(jù)集,獲得RDD,再使用KMeans.train()方法根據(jù)RDD、K值和迭代次數(shù)得到一個KMeans模型。得到KMeans模型以后,可以判斷一組數(shù)據(jù)屬于哪一個類。具體方法是用Vectors.dense()方法生成一個Vector,然后用KMeans.predict()方法就可以返回屬于哪一個類。

運(yùn)行結(jié)果:

Cluster centres:
 [6.062499999999999,6.7124999999999995,11.5]
 [3.5,12.2,60.0]
Within Set Sum of Squared Errors = 943.2074999999998
Vectors 7.3 1.5 10.9 is belong to cluster:0
Vectors 4.2 11.2 2.7 is belong to cluster:0
Vectors 18.0 4.5 3.8 is belong to cluster:1
0.0 0.0 5.0 0
0.1 10.1 0.1 0
1.2 5.2 13.5 0
9.5 9.0 9.0 0
9.1 9.1 9.1 0
19.2 9.4 29.2 0
5.8 3.0 18.0 0
3.5 12.2 60.0 1
3.6 7.9 8.1 0

總結(jié)

本文關(guān)于Spark實現(xiàn)K-Means算法代碼示例的全部內(nèi)容就到這里,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:淺談七種常見的Hadoop和Spark項目案例、Spark的廣播變量和累加器使用方法代碼示例、Spark入門簡介等,如有不足之處,歡迎留言指出,小編會及時回復(fù)大家并更正,希望朋友們對本站多多支持!

您可能感興趣的文章:

相關(guān)文章

  • 解決k8s namespace 一直處于 Terminating 狀態(tài)的問題

    解決k8s namespace 一直處于 Terminating 狀態(tài)的問題

    這篇文章主要介紹了k8s namespace 一直處于 Terminating 狀態(tài)的解決方法,以下的 tool 為 Terminating 狀態(tài)的 namespace,下面相關(guān)的一些操作記得將 tool 修改成自己的 namespace 名稱,需要的朋友可以參考下
    2022-10-10
  • kubernetes?k8s入門定義一個Pod

    kubernetes?k8s入門定義一個Pod

    這篇文章主要為大家介紹了k8s入門定義一個Pod以及破底的定義內(nèi)容詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多計步,早日升職加薪
    2022-03-03
  • K8s實戰(zhàn)教程之容器和?Pods資源分配問題

    K8s實戰(zhàn)教程之容器和?Pods資源分配問題

    這篇文章主要介紹了K8s實戰(zhàn)教程之容器和?Pods資源分配,本篇文章通過配置集群中運(yùn)行的容器的?CPU?請求和限制,你可以有效利用集群上可用的?CPU?資源,通過將?Pod?CPU?請求保持在較低水平,可以使?Pod?更有機(jī)會被調(diào)度,需要的朋友可以參考下
    2022-07-07
  • k8s入門實戰(zhàn)deployment使用詳解

    k8s入門實戰(zhàn)deployment使用詳解

    這篇文章主要為大家介紹了k8s入門實戰(zhàn)deployment使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • K8S?實用工具之合并多個kubeconfig實現(xiàn)詳解

    K8S?實用工具之合并多個kubeconfig實現(xiàn)詳解

    這篇文章主要為大家介紹了K8S?實用工具之合并多個kubeconfig實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • CentOS 7下YUM 本地倉庫的搭建詳細(xì)步驟

    CentOS 7下YUM 本地倉庫的搭建詳細(xì)步驟

    這篇文章主要介紹了CentOS 7下YUM 本地倉庫的搭建詳細(xì)步驟的相關(guān)資料,希望通過本文能幫助到大家實現(xiàn)這樣的功能,需要的朋友可以參考下
    2017-09-09
  • 二進(jìn)制方式安裝?Kubernetes1.18.3版本實現(xiàn)腳本

    二進(jìn)制方式安裝?Kubernetes1.18.3版本實現(xiàn)腳本

    這篇文章主要為大家介紹了二進(jìn)制方式安裝Kubernetes1.18.3版本實現(xiàn)腳本,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-03-03
  • 一篇文章讀懂K8S的PV和PVC以及實踐攻略

    一篇文章讀懂K8S的PV和PVC以及實踐攻略

    本文詳細(xì)介紹了Kubernetes中的存儲卷(Volume)機(jī)制,包括PersistentVolume(PV)、PersistentVolumeClaim(PVC)及其與后端存儲的關(guān)系,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • kubernetes需要默認(rèn)的serviceaccount的原因解析

    kubernetes需要默認(rèn)的serviceaccount的原因解析

    這篇文章主要介紹了kubernetes為何需要默認(rèn)的serviceaccount,ServiceAccount 是 Kubernetes 中的一種重要概念,它的實際使用場景包括很多,本文給大家講解的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • 淺析k8s中各組件和kube?apiserver通信時的認(rèn)證和鑒權(quán)問題

    淺析k8s中各組件和kube?apiserver通信時的認(rèn)證和鑒權(quán)問題

    這篇文章主要介紹了k8s中各組件和kube?apiserver通信時的認(rèn)證和鑒權(quán),本文使用的k8s集群是用kubekey搭建,命令是./kk create cluster --with-kubernetes v1.21.5 --with-kubesphere v3.2.1,需要的朋友可以參考下
    2022-06-06

最新評論

永福县| 三门峡市| 黄浦区| 新田县| 徐汇区| 驻马店市| 政和县| 腾冲县| 霍林郭勒市| 安徽省| 元谋县| 湘西| 乌拉特后旗| 双桥区| 天等县| 巩义市| 巫山县| 武陟县| 饶阳县| 三都| 黄浦区| 漾濞| 湖北省| 黔东| 鹰潭市| 宣汉县| 当阳市| 浑源县| 韶山市| 博爱县| 清水县| 赣州市| 苍溪县| 仙游县| 望奎县| 定边县| 温州市| 大同市| 乐清市| 上高县| 云梦县|