天天看點

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        這篇文章直接給出上次關于kmeans聚類的籃球遠動員資料分析案例,同時介紹這次作業同學們完成的圖例,最後介紹matplotlib包繪圖的優化知識。

        前文推薦:

        希望這篇文章對你有所幫助,尤其是剛剛接觸資料挖掘以及大資料的同學,同時準備嘗試以案例為主的方式進行講解。如果文章中存在不足或錯誤的地方,還請海涵~

        這裡不再贅述,詳見第二篇文章,直接上代碼,這是我的學生完成的作業。

        資料集:

        籃球運動員資料,每分鐘助攻和每分鐘得分數。通過該資料集判斷一個籃球運動員屬于什麼位置(控位、分位、中鋒等)。完整資料集包括5個特征,每分鐘助攻數、運動員身高、運動員出場時間、運動員年齡和每分鐘得分數。

        完整代碼:

        運作結果:

        從圖中可以看到聚內建三類,紅色比較厲害,得分很高;中間藍色是一類,普通球員;右小角綠色是一類,助攻高得分低,是控位。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        代碼分析:

        表示在sklearn中處理kmeans聚類問題,用到 sklearn.cluster.kmeans 這個類。

        x是資料集,包括2列20行,即20個球員的助攻數和得分數。

        表示輸出完整kmeans函數,包括很多省略參數,将資料集分成類簇數為3的聚類。

        輸出聚類預測結果,對x聚類,20行資料,每個y_pred對應x的一行或一個孩子,聚成3類,類标為0、1、2。

        輸出結果:[0 2 0 0 0 0 0 0 1 0 1 0 0 0 1 0 0 0 0 0 1]

        matplotlib.pyplot是用來畫圖的方法,matplotlib是可視化包。

        擷取第1列的值, 使用for循環擷取 ,n[0]表示x第一列。

        擷取第2列的值,使用for循環擷取 ,n[1]表示x第2列。

        繪制散點圖(scatter),橫軸為x,擷取的第1列資料;縱軸為y,擷取的第2列資料;c=y_pred對聚類的預測結果畫出散點圖,marker='o'說明用點表示圖形。

        表示圖形的标題為kmeans-heightweight data。

        表示圖形x軸的标題。

        表示圖形y軸的标題。

        設定右上角圖例。

        表示顯示圖形。

        下面簡單展示學生做的作業及分析,感覺還是不錯,畢竟才上幾節課而且第一次作業,希望後面的作業更加精彩吧。因為學生的專業分布不同,是以盡量讓學生設計他們專業的内容。

        eg 遺傳學身高體重資料

        第一清單示孩子的身高,機關cm;第二清單示孩子的體重,機關kg。從上圖可以看出,資料集被分為了三類。綠色為一類、藍色為一類,紅色為一類。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化
【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        eg 微網誌資料集

        第一列代表微網誌中某條資訊的轉發量,第二列代表微網誌中某條資訊的評論數。從上圖可以看出,總共分為3類,共三種顔色,綠色一層說明該資訊轉發量與評論數都很高。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        eg 上市公司财務報表

        第一清單示公司利潤率;第二清單示公司資産規模。從上圖可以看出,總共分為4類,共四種顔色。暗紅色為資産規模最大,依次至藍色資産規模減小。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        eg 世界各國家人均面積與土地面積

        第一清單示各國家的人均面積(人/ 平方公裡);第二清單示各國家的土地面積(萬平方公裡)。從上圖可以看出,總共分為3類,共三種顔色。紅色表示的國家相對來說最擁擠,可能是孟加拉這樣土地面積少且人口衆多的國家;藍色就是地廣人稀的代表,比如俄羅斯、美國、、墨西哥、巴西;綠色表示人口密度分布比較平均的國家。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        eg employee  salaries資料集

        第一清單示員工工資;第二清單示員工年齡數。從上圖可以看出,總共分為5類,共5種顔色。總體呈現正相關性,年齡越大,工資越高;除個别外,總體正線性關系。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        eg 學生英語成績資料集

        第一清單示學生英語平時成績;第二清單示學生英語期末成績。從上圖可以看出,總共分為4類,共四種顔色。黃色一層,平時成績和末考成績都很高,屬于“學霸”級别的人物;其次,藍色一層和紅色一層;最後,天藍色一層,暫且稱之為“學渣”。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        matplotlib代碼的優化:

        1.第一部分代碼是定義x數組,實際中是讀取檔案進行的,如何實作讀取檔案中資料再轉換為矩陣進行聚類呢?

        2.第二部分是繪制圖形,希望繪制不同的顔色及類型,使用legend()繪制圖示。

        假設存在資料集如下圖所示:data.txt

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        現需要擷取第一列每分鐘助攻數、第五列每分鐘得分數存于矩陣中。

        代碼如下:

        輸出結果如下圖所示:三個層次很明顯,而且右上角也标注。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        可視化部分強烈推薦資料:

        下面是常見遇到的幾個問題:

        1.spyder軟體如果editor編輯框不在,如何調出來。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        2.會缺少一些第三方包,如lda,如何導入。使用cd ..去到c盤根目錄,cd去到anaconda的scripts目錄下,輸入"pip install selenium"安裝selenium相應的包,"pip install lda"安裝lda包。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        學生告訴我另一個更友善的方法:

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化
【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        3.運作時報錯,缺少console,點選如下。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        4.如果spyder安裝點選沒有反應,重新安裝也沒有反應,建議在運作下試試。

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        實在不行解除安裝再重裝:pip uninstall spyder  

                                          pip install spyder

【Python資料挖掘課程】三.Kmeans聚類代碼實作、作業及優化

        5.spyder如何顯示繪制matplotlib中文。

        (by:eastmount 2016-10-12 深夜3點半 )