999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Python的K-means算法實現方式對比研究

2020-10-09 11:01:23王習濤
軟件 2020年8期

摘 ?要: 大數據時代的到來使Python語言受到越來越多的關注。在國際上,IEEE頒布的頂級編程語言交互排行榜中,Python已連續多年名列榜首,在國內,Python已經進入義務教育階段小學課程。Python以其可讀性強、使用范圍廣受到越來越多計算機使用人員的歡迎。Python在數據處理方面光彩奪目的表現得益于和其他過程控制語言的巨大不同,本文以經典K-means算法的實現為切入點,通過不同的編程方式實現同樣的聚類過程,在UCI和生成數據集上分別運行不同程序,發現采用Numpy數據處理庫可以顯著提升程序運行效率,減少運行時間,展現出Python向量式數據計算的巨大優勢。

關鍵詞: Python;K-means;Numpy;聚類

中圖分類號: TP301.6 ? ?文獻標識碼: A ? ?DOI:10.3969/j.issn.1003-6970.2020.08.025

本文著錄格式:王習濤. 基于Python的K-means算法實現方式對比研究[J]. 軟件,2020,41(08):87-88+128

【Abstract】: With the advent of the big data era, python language has attracted more and more attention. Internationally,in the top programming language interaction ranking released by IEEE, python has been ranked first for many years. In China, python has entered primary school. Python is widely used by more and more computer users because of its readability. However, Python's advantages in data processing are also shown out of the huge differences of other process control languages. This paper takes the implementation of the classic k-means algorithm as an examples, program the same clustering process by different programming methods, run the program ?on the UCI and generating data set respectively, we found that using numpy data processing library can significantly improve the running efficiency of the program and reduce the running time, so then show the huge advantages of Python vector data computing.

【Key words】: Python; K-means; Numpy; Cluster

0 ?引言

近年來,伴隨著電子信息技術的進步,數據采集終端越來越普及,采集效率越來越高,大數據時代已經到來。數據量爆炸式的增長對數據分析處理工作提出了更高要求,傳統的基于過程控制的編程語言使用循環、嵌套較多,對數據精細化操作較多,在大規模數據分析、開發上顯得捉襟見肘。

Python是一種簡單易學的解釋性語言,以簡潔為編程基本要求,擁有豐富的第三方庫,在web開發、網絡爬取、自動化運維、人工智能、數據分析等各個方面得到廣泛應用。然而,作為一種解釋性程序語言,Python本身運行速度較慢,如果只采用傳統編程方式編寫代碼,運行速度將不可忍受。

為了展現Python與傳統過程控制語言在編程思想的巨大差別,本文以經典K-means聚類算法為范例,分別采用傳統循環控制方式與Numpy庫編程方式實現K-means算法,在設置隨機種子保證初始簇中心一致的情況下,通過在不同規模數據集上運行對比分析,證實使用Numpy庫編寫的數據處理程序不僅實現簡單、不易犯錯且運算效率極高,較傳統編程方式具有巨大優勢。

1 ?K-means算法簡介

聚類是一種經典、流行的數據挖掘技術,是一種無監督學習方法,以“物以類聚”為指導思想,廣泛應用于模式識別、機器學習、圖像處理等各個方面,尤其是伴隨著大數據時代的到來,大量未經標識的數據為聚類研究提供了新的舞臺。常見的聚類算法有基于劃分方法、基于層次方法、基于密度方法、基于網格方法和基于模型方法。其中K-means算法是一種經典的基于劃分的聚類算法。

K-means算法是一種基于迭代求解的聚類分析算法,具有原理簡單,收斂速度快的優點,在人為設定K值的基礎上隨機生成簇中心,通過優化函數反復迭代生成新的簇中心,直到優化函數收斂到可接受范圍。具體過程:(1)預設分類數K,隨機選取K個對象作為初始簇中心。(2)計算每個對象與各個簇中心的歐式距離,把每個對象分配給距離它最近的簇中心。(3)根據分類情況計算各類簇的均值中心,形成各簇新的簇中心。(4)重復第(2)、(3)步過程,直到簇中心不再發生變動或各對象到所屬簇中心的歐式距離和不再縮小為止。

2 ?傳統編程方式編寫的K-means算法

傳統編程方式嚴格按照K-means算法定義循環計算每個對象與所有簇中心的距離,并為各數據對象打標識,再根據新標識進行分類并生成新的簇中心。

Python常規編程方法實現K-means算法偽代碼

輸入:預設簇中心數目K;待分類的數據集。

輸出:K個分類數據集。

(1)選擇隨機簇中心

(2) ?For對每個數據點循環

(3) ? ?For對每個簇中心循環

(4) ? ? ?For對每個屬性值循環

(5) ? ? ? ?求解每個屬性值與簇中心對應屬性值的差的平方

(6) ? ? ?對每個對象與簇中心的屬性值差平方求和并開平方,得到歐式距離

(7) ? ?將數據點歸屬到距離最近的簇中心

(8)根據對象歸屬生成新的簇中心

(9)重復2-8,直到各數據對象與簇中心的歐式距離不再變動

3 ?Python+Numpy方式編寫的K-means算法

Python+Numpy編程首先使用Numpy包的tile函數實現數據擴維,將分類數據和選定的初始簇中心分別擴展到維度如(數據集樣本數目,簇中心點數目,屬性數目)的三維矩陣,通過矩陣間的向量運算生成距離矩陣,再根據距離矩陣采用Numpy的argmin函數對距離矩陣求行向量的最小值索引(距離最近中心點的索引),按照索引對數據點進行分類標識,重復執行生成新的均值中心、距離矩陣和分類結果,直到完成聚類運算。

Python+Numpy方式實現K-means算法偽代碼

輸入:預設聚類中心數目K;待分類的數據集。

輸出:K個分類數據集。

(1)選擇隨機簇中心

(2)使用Numpy的tile函數將數據對象矩陣擴展到簇中心個數維度

(3)使用Numpy的tile函數將簇中心矩陣擴展到數據對象個數維度

(4)通過Numpy的transpose函數調整擴展后的數據對象和簇中心三維矩陣

(5)將擴展后的數據對象和簇中心矩陣執行減法,求平方,并按屬性維度求和后再開平方

(6)得到對象與簇中心的歐式距離矩陣

(7)根據對象到簇中心的距離判斷對象歸屬

(8)根據對象歸屬生成新的簇中心

(9)重復2-8,直到各對象與簇中心的歐式距離不再變動

4 ?仿真實驗及分析

4.1 ?實驗描述

為了對比不同編程方式對算法運算效率的影響,在同樣的軟硬件設備環境下,通過設置隨機種子的方式,確保不同程序初始中心及運行過程、結果完全一致,從而保證程序運行時間具備可比性。并且為了進一步降低偶然因素對程序運行時間的影響,使程序循環運行100次,對比總體運行時間。采用的UCI數據集和合成數據集如表1所示。

實驗環境為Windows7 64位操作系統,AMD A8 PRO-7600B 3.10 GHz CPU,4 GB內存,軟件環境為Pycharm professional 2019.3 Python 3.6.5。

在UCI數據集和合成數據集上分別運行程序100次,得到運行時間如表2所示。

4.2 ?對比分析

從表2可以看出,在Python環境下,使用Numpy庫實現K-means算法較傳統編程方式時間優勢明顯,并且伴隨著數據實例數和屬性數的增加時間差距會進一步擴大,究其原因是Python語言是解釋性語言,程序邊編譯邊運行,運行效率較低,而Numpy庫采用C語言編寫,并且已經進行了編譯,所以執行效率有數量級的提高。進一步研究可以發現,Numpy、Pandas等基于向量的運算方式也為大數據計算揭開了帷幕,使以深度神經網絡為代表的深度學習異軍突起,加速了圖像識別、語音識別、自動翻譯、自動駕駛等技術在各個方面的普及。

5 ?總結

Python編程語言異軍突起是時代發展的需求,同時也是因為Python順應了大數據計算的新態勢,伴隨著電子信息產業的飛速發展,計算機運算空間大幅拓展,Python基于向量式的多維矩陣運算適當其時,在人工智能領域依靠TensorFlow+高端顯卡的運算模式為深度神經網絡的應用打開了帷幕,同時也預示著數據計算方式由傳統的循環、過程式跨越到批量、向量化的新時代,可以預見,在不遠的未來,伴隨著5G時代的到來,分布與集中相配合的深度向量式運算將深入生活的各個角落,同時也將改變人們思考問題的方式。

參考文獻

[1] 章永來, 周耀鑒. 聚類算法綜述[J]. 計算機應用, 2019, 39(7): 1869-1882.

[2] 張敏, 于劍. 基于劃分的模糊聚類算法[J]. 軟件學報, 2004, 15(6): 858-868.

[3] 楊俊闖, 趙超. K-Means聚類算法研究綜述[J]. 計算機工程與應用, 2019, 55(23).

[4] 黃韜, 劉勝輝, 譚艷娜. 基于K-means聚類算法的研究[J]. 計算機技術與發展, 2011, 1(7): 54-57, 62.

[5] 鄧濱玥. K均值優化算法綜述[J]. 軟件, 2020, 41(2): 188: 192.

[6] Pang-Ning Tan, Michael Steinbach, Vipin Kunmar著, 范明, 范宏建等譯. 數據挖掘導論(完整版)[M]. 人民郵電出版社, 2011.

[7] 劉鵬, 張燕著. 數據挖掘[M]. 電子工業出版社, 2018.

[8] 熊赟, 朱揚勇, 陳志淵著. 大數據挖掘[M]. 上??茖W技術出版社, 2016.

[9] Magnus Lie Hetland著, 袁國忠譯. Python基礎教程(第3版)[M]. 人民郵電出版社, 2018.

[10] Peter Harrington著, 李銳, 李鵬, 曲亞東, 王斌譯. 機器學習實戰[M]. 人民郵電出版社, 2013.

主站蜘蛛池模板: 国产成人亚洲无码淙合青草| 免费 国产 无码久久久| 中字无码av在线电影| 国产va在线观看免费| 婷婷五月在线视频| 国产69精品久久久久妇女| 欧美国产精品不卡在线观看| 久久福利网| 911亚洲精品| 好紧太爽了视频免费无码| 无码免费视频| 国产美女91视频| 国产成人亚洲无吗淙合青草| 国产一区自拍视频| 国产成人调教在线视频| 久草热视频在线| 亚洲免费毛片| 亚洲a级毛片| 五月婷婷精品| 国产99免费视频| 激情综合五月网| 毛片久久网站小视频| 99中文字幕亚洲一区二区| 国产噜噜噜| 亚洲AⅤ无码国产精品| 成人福利免费在线观看| 99在线免费播放| 69视频国产| 国产毛片网站| 欧美激情视频二区| 18禁黄无遮挡网站| 无码国产偷倩在线播放老年人| 欧美www在线观看| 欧美日韩一区二区三区在线视频| 成年人免费国产视频| 国内精品视频区在线2021| 波多野结衣一二三| 无码免费的亚洲视频| 亚洲色无码专线精品观看| 欧美日韩国产在线播放| av在线手机播放| 噜噜噜综合亚洲| 99er精品视频| 91网址在线播放| 无码精品福利一区二区三区 | 黄色国产在线| 亚洲首页在线观看| 日韩中文无码av超清| 日韩二区三区| 久久香蕉国产线看观看亚洲片| 亚洲欧美日本国产专区一区| 国产成本人片免费a∨短片| 久久精品无码国产一区二区三区| 欧美日本中文| 国产精品福利导航| 久久香蕉国产线| 天天摸天天操免费播放小视频| 欧美区一区| 在线免费亚洲无码视频| 青草视频免费在线观看| 中日韩欧亚无码视频| 国产麻豆精品在线观看| 亚洲人精品亚洲人成在线| 国产高清无码麻豆精品| 中文字幕亚洲另类天堂| 国产成人精品综合| 国产精品欧美亚洲韩国日本不卡| 2021无码专区人妻系列日韩| 日韩福利在线观看| 亚洲中文字幕97久久精品少妇| 中文字幕佐山爱一区二区免费| 亚洲天堂伊人| 9丨情侣偷在线精品国产| 97视频在线观看免费视频| 久久国产拍爱| 免费一级全黄少妇性色生活片| 国产不卡一级毛片视频| 91精品人妻一区二区| 国产成人亚洲毛片| 欧美爱爱网| 精品欧美日韩国产日漫一区不卡| 欧美精品1区2区|