Kmeans算法簡介與python實踐_第1頁
Kmeans算法簡介與python實踐_第2頁
Kmeans算法簡介與python實踐_第3頁
Kmeans算法簡介與python實踐_第4頁
Kmeans算法簡介與python實踐_第5頁
已閱讀5頁,還剩6頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

Kmeans算法簡介與python實踐提綱Kmeans算法實驗Kmeans算法簡介聚類與Kmeans算法簡介聚類算法是一種典型的無監督學習算法,在聚類算法中根據樣本之間的相似性,將樣本劃分到不同的類別中,對于不同的相似度計算方法,會得到不同的聚類結果,常用的相似度計算方法有歐式距離法。聚類的算法一般包括:劃分聚類算法,層次聚類算法,基于密度聚類,基于網格聚類算法。基本K-Means算法的思想,事先確定常數K,常數K意味著最終的聚類類別數,首先隨機選定初始點為質心,并通過計算每一個樣本與質心之間的相似度(這里為歐式距離),將樣本點歸到最相似的類中,接著,重新計算每個類的質心(即為類中心),重復這樣的過程,直到質心不再改變,最終就確定了每個樣本所屬的類別以及每個類的質心。由于每次都要計算所有的樣本與每一個質心之間的相似度,故在大規模的數據集上,K-Means算法的收斂速度比較慢。Kmeans

算法流程數據清洗,標準化利用類中樣本到質心的平均距離評價模型保留訓練數據標準化參數,應用模型進行歸類確定K值,創建模型隨機化質心,模型訓練Kmeans是基于距離的運算,數據必須標準化,對于無法量化的標稱變量,例如地域(東南西北)等需要進行獨熱編碼。對于K值的確定,是Kmean的一個最大缺點,往往需要經驗判斷,統計學上,遍歷k[1,樣本量,step],刻畫不同k的類樣本與質心平均距離曲線確定k的取值。質心初始隨機化:

K-Means算法的另一個缺點,對初始選取的聚類中心點是敏感的,不同的隨機種子點得到的聚類結果完全不同。可選用多次隨機化(例如同一個模型訓練10次,取最優結果),也可選用K-Means++算法來解決這個問題,其思想是初始的聚類中心之間的相互距離要盡可能遠。提綱Kmeans算法實驗Kmeans算法簡介Python進行Kmeans實踐系統準備:centos6.8、Spark2.3.1、Pyrhon3.X數據準備:采用UCI機器學習庫中的wine數據集作為算法數據,包括了三種酒中13種不同成分的數量。成分分別為:Alcohol,Malicacid,Ash,lcalinityofash,Magnesium,Totalphenols,Flavanoids,Nonflavanoidphenols,Proanthocyanins,Colorintensity,Hue,OD280/OD315ofdilutedwines,Proline。在“wine.data”文件中,每行代表一種酒的樣本,共有178個樣本;一共有14列,其中,第一列為類標志屬性,共有三類,分別記為“1”,“2”,“3”;后面的13列為每個樣本的對應屬性的樣本值。第1類有59個樣本,第2類有71個樣本,第3類有48個樣本。本例實驗是聚類,所以我們不用第一列的數據建模目的:訓練kmeans聚類器,使得知道13個特征后,對樣本進行聚類。實例:初始化Spark,讀取數據#-*-coding:utf-8-*-#pyspark--masterlocal[5]from

pysparkimportSparkContext,SQLContext,SparkConffrommathimportsqrt

#初始化sparkContextconf=SparkConf().setMaster("local").setAppName("MyKmeansDemo")sc=SparkContext(conf=conf)sqlContext=SQLContext(sc)

#讀取數據df_wine=sc.textFile(u"file:/root/Documents/liangdong/work/laboratory/wine數據集.txt").map(

lambdax:str(x).split(",")).map(lambdax:[float(z)forzinx])實例:展示數據#本地數據轉換為RDD

df_wine_rdd=sqlContext.createDataFrame(df_wine)

#展示數據

df_wine_rdd.show()實例:數據整理,標準化#去掉第一列,第一列為類別,我們不關注,我們假設不知道類別,用聚類的方式讓數據聚類df_wine_rdd=df_wine_rdd.drop("_1")

#合并所有列,構建spark向量importpyspark.ml.featureasml_featurecols=df_wine_rdd.columnsvectorAssembler=ml_feature.VectorAssembler().setInputCols(cols).setOutputCol("cols")wine_Vc=vectorAssembler.transform(df_wine_rdd)

#對數據進行標準化standardScaler=ml_feature.StandardScaler().setInputCol("cols").setOutputCol("cols_st").setWithMean(True).setWithStd(

True).fit(wine_Vc)wine_Vc_St=standardScaler.transform(wine_Vc)實例:使用模型進行訓練#使用Kmeans模型,設置輸入列,迭代次數,輸出列,聚類數importpyspark.ml.clusteringasml_clustering

clusters=ml_clustering.KMeans(featuresCol="cols_st",

#指定輸入列

predictionCol="pred",

#指定輸出列

k=3,

#指定k值

initMode="k-means||",

#設置初始K選取方式為k-means++,可以選擇為random

initSteps=5,

#k-means||方法的迭代步數

tol=1e-4,

#訓練結束誤差閾值

maxIter=20,

#最大迭代次數

seed=None

#隨機種子

).fit(wine_Vc_St)

wine_Vc_St_clusters=clusters.transform(wine_Vc_St)#展示數據

wine_Vc_St_clusters.show()實例:評估模型#輸出聚類中心并合并到數據表

importpyspark.mllib.linalgaslinalg

center=zip([0,1,2],[linalg.Vectors.dense(z)forzinclusters.clusterCenters()])

centers=sqlContext.createDataFrame(center).toDF("Pred","center")

wine_Vc_St_clusters_centers=wine_Vc_St_clusters.join(centers,on=["Pred"])

#計算出誤差平方和

WSSSE=wine_Vc_St_clusters_centers.select("center","cols_st").rdd.map(

lambdax:sqrt(linalg.Vectors.squ

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論