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.

主站蜘蛛池模板: 99久久国产综合精品2020| 国产精品流白浆在线观看| 婷婷色在线视频| 91精品人妻一区二区| 亚洲天堂视频在线免费观看| 亚洲精品国产自在现线最新| 亚洲av色吊丝无码| 高清视频一区| 欧美激情视频一区| 亚洲a级毛片| 9啪在线视频| 97视频免费看| 九九精品在线观看| 漂亮人妻被中出中文字幕久久| 午夜影院a级片| WWW丫丫国产成人精品| 亚洲日韩图片专区第1页| 欧美天堂在线| 国产在线精品99一区不卡| 国产又黄又硬又粗| 精品伊人久久久香线蕉| 久久精品这里只有国产中文精品 | 亚洲av无码片一区二区三区| 日韩AV无码免费一二三区| 亚洲熟妇AV日韩熟妇在线| 午夜毛片免费观看视频 | 伊在人亚洲香蕉精品播放 | 久久精品丝袜| 国产亚洲视频在线观看| 色婷婷在线影院| 免费全部高H视频无码无遮掩| 国产精品嫩草影院视频| 精品一區二區久久久久久久網站| 国产精品亚洲va在线观看| 日韩乱码免费一区二区三区| 黄色不卡视频| 青青草原国产精品啪啪视频| 免费又爽又刺激高潮网址| 免费毛片在线| 日本手机在线视频| 无码人妻免费| 激情乱人伦| 人妻出轨无码中文一区二区| 欧美精品亚洲日韩a| 人妻丰满熟妇AV无码区| 成人a免费α片在线视频网站| 孕妇高潮太爽了在线观看免费| 亚洲精品男人天堂| 又大又硬又爽免费视频| 五月天久久综合| 国产精品极品美女自在线| 精品无码人妻一区二区| 91欧美在线| 国产精品永久不卡免费视频| 久久这里只精品国产99热8| 亚洲第一成人在线| 欧美在线一二区| 中文无码日韩精品| 国产情精品嫩草影院88av| 欧美午夜理伦三级在线观看| 亚洲无码37.| 草草影院国产第一页| 色悠久久综合| 日韩中文精品亚洲第三区| 国产h视频免费观看| 亚洲综合二区| 1024你懂的国产精品| 91视频区| 欧美久久网| 国产日韩欧美在线视频免费观看 | 色窝窝免费一区二区三区| 精品视频一区在线观看| 国产区在线看| 久久久久久尹人网香蕉| 久久成人国产精品免费软件| 日韩人妻精品一区| 亚洲制服中文字幕一区二区| 国产在线精彩视频二区| 天天婬欲婬香婬色婬视频播放| 午夜电影在线观看国产1区| 天天色天天综合| 国产丝袜91|