python利用K-Means算法實(shí)現(xiàn)對(duì)數(shù)據(jù)的聚類(lèi)案例詳解
目的是為了檢測(cè)出采集數(shù)據(jù)中的異常值。所以很明確,這種情況下的簇為2:正常數(shù)據(jù)和異常數(shù)據(jù)兩大類(lèi)
1、安裝相應(yīng)的庫(kù)
import matplotlib.pyplot as plt # 用于可視化 from sklearn.cluster import KMeans # 用于聚類(lèi) import pandas as pd # 用于讀取文件
2、實(shí)現(xiàn)聚類(lèi)
2.1 讀取數(shù)據(jù)并可視化
# 讀取本地?cái)?shù)據(jù)文件 df = pd.read_excel("../data/output3.xls", header=0)
本次實(shí)驗(yàn)選擇溫度和CO2作為二維數(shù)據(jù),其中溫度含有異常數(shù)據(jù)。
plt.scatter(df["光照"], df["CO2"], linewidths=1, alpha=0.8) plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來(lái)正常顯示中文標(biāo)簽v plt.xlabel("光照") plt.ylabel("CO2") plt.grid(color="#95a5a6", linestyle="--", linewidth=1, alpha=0.4) plt.show()
2.2 K-means聚類(lèi)
設(shè)置規(guī)定要聚的類(lèi)別個(gè)數(shù)為2
data = df[["光照","CO2"]] # 從原始數(shù)據(jù)中選擇該兩項(xiàng) estimator = KMeans(n_clusters=2) # 構(gòu)造聚類(lèi)器 estimator.fit(data) # 將數(shù)據(jù)帶入聚類(lèi)模型
獲取聚類(lèi)中心的值和聚類(lèi)標(biāo)簽
label_pred = estimator.labels_ # 獲取聚類(lèi)標(biāo)簽 centers_ = estimator.cluster_centers_ # 獲取聚類(lèi)中心
將聚類(lèi)后的 label0 和 label1 的數(shù)據(jù)進(jìn)行輸出
x0 = data[label_pred == 0] x1 = data[label_pred == 1] plt.scatter(x0["光照"], x0["CO2"],c="red", linewidths=1, alpha=0.8,marker='o', label='label0') plt.scatter(x1["光照"], x1["CO2"],c="green", linewidths=1, alpha=0.8,marker='+', label='label1') plt.grid(c="#95a5a6", linestyle="--", linewidth=1, alpha=0.4) plt.legend() plt.show()
附上全部代碼
import matplotlib.pyplot as plt from sklearn.cluster import KMeans import pandas as pd df = pd.read_excel("../data/output3.xls", header=0) plt.scatter(df["光照"], df["CO2"], linewidths=1, alpha=0.8) plt.rcParams['font.sans-serif'] = ['SimHei'] # 用來(lái)正常顯示中文標(biāo)簽v plt.xlabel("光照") plt.ylabel("CO2") plt.grid(color="#95a5a6", linestyle="--", linewidth=1, alpha=0.4) plt.show() data = df[["光照","CO2"]] estimator = KMeans(n_clusters=2) # 構(gòu)造聚類(lèi)器 estimator.fit(data) # 聚類(lèi) label_pred = estimator.labels_ # 獲取聚類(lèi)標(biāo)簽 centers_ = estimator.cluster_centers_ # 獲取聚類(lèi)結(jié)果 # print("聚類(lèi)標(biāo)簽",label_pred) # print("聚類(lèi)結(jié)果",centers_) # predict = estimator.predict([[787.75862069, 1505]]) # 測(cè)試新數(shù)據(jù)聚類(lèi)結(jié)果 # print(predict) x0 = data[label_pred == 0] x1 = data[label_pred == 1] plt.scatter(x0["光照"], x0["CO2"],c="red", linewidths=1, alpha=0.8,marker='o', label='label0') plt.scatter(x1["光照"], x1["CO2"],c="green", linewidths=1, alpha=0.8,marker='+', label='label1') plt.grid(c="#95a5a6", linestyle="--", linewidth=1, alpha=0.4) plt.legend() plt.show()
到此這篇關(guān)于python利用K-Means算法實(shí)現(xiàn)對(duì)數(shù)據(jù)的聚類(lèi)的文章就介紹到這了,更多相關(guān)python K-Means算法數(shù)據(jù)的聚類(lèi)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python中實(shí)現(xiàn)k-means聚類(lèi)算法詳解
- python實(shí)現(xiàn)鳶尾花三種聚類(lèi)算法(K-means,AGNES,DBScan)
- Python用K-means聚類(lèi)算法進(jìn)行客戶(hù)分群的實(shí)現(xiàn)
- Python實(shí)現(xiàn)K-means聚類(lèi)算法并可視化生成動(dòng)圖步驟詳解
- 利用Python如何實(shí)現(xiàn)K-means聚類(lèi)算法
- 利用python實(shí)現(xiàn)聚類(lèi)分析K-means算法的詳細(xì)過(guò)程
- 人工智能——K-Means聚類(lèi)算法及Python實(shí)現(xiàn)
- Python實(shí)現(xiàn)聚類(lèi)K-means算法詳解
相關(guān)文章
Python爬取哆啦A夢(mèng)-伴我同行2豆瓣影評(píng)并生成詞云圖
哆啦A夢(mèng)系列是陪伴我,乃至陪伴了幾代人成長(zhǎng)的故事.50年來(lái),藤子·F·不二雄先生創(chuàng)造了竹蜻蜓,任意門(mén),時(shí)光機(jī)器等等無(wú)數(shù)的新奇道具,讓大雄和他的小伙伴們經(jīng)歷了各種冒險(xiǎn),也經(jīng)歷了許多充滿(mǎn)戲劇性的啼笑皆非的日常.特意寫(xiě)了這篇文章,教大家怎么繪制詞云圖,需要的朋友可以參考下2021-06-06python報(bào)錯(cuò)unexpected?indent的解決辦法
這篇文章主要給大家介紹了關(guān)于python報(bào)錯(cuò)unexpected?indent的解決辦法,在python中出現(xiàn)"Unexpected indent"可能是代碼的縮進(jìn)出現(xiàn)問(wèn)題,需要的朋友可以參考下2023-06-06python逆向微信指數(shù)爬取實(shí)現(xiàn)步驟
這篇文章主要為大家介紹了python逆向微信指數(shù)爬取的實(shí)現(xiàn)步驟,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪2022-02-02Python爬蟲(chóng)自動(dòng)化爬取b站實(shí)時(shí)彈幕實(shí)例方法
在本篇文章里小編給大家整理的是一篇關(guān)于Python爬蟲(chóng)自動(dòng)化爬取b站實(shí)時(shí)彈幕實(shí)例方法,有興趣的朋友們可以學(xué)習(xí)下。2021-01-01Django?Rest?Framework實(shí)現(xiàn)身份認(rèn)證源碼詳解
這篇文章主要為大家介紹了Django?Rest?Framework實(shí)現(xiàn)身份認(rèn)證源碼詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05最新python 字符串?dāng)?shù)組互轉(zhuǎn)問(wèn)題
這篇文章主要介紹了最新python 字符串?dāng)?shù)組互轉(zhuǎn)問(wèn)題,主要介紹了字符串轉(zhuǎn)list數(shù)組問(wèn)題和list數(shù)組轉(zhuǎn)字符串問(wèn)題,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-02-02matplotlib如何設(shè)置坐標(biāo)軸刻度的個(gè)數(shù)及標(biāo)簽的方法總結(jié)
這里介紹兩種設(shè)置坐標(biāo)軸刻度的方法,一種是利用pyplot提交的api去進(jìn)行設(shè)置,另一種是通過(guò)調(diào)用面向?qū)ο蟮腶pi, 即通過(guò)matplotlib.axes.Axes去設(shè)置,需要的朋友可以參考下2021-06-06Keras中的兩種模型:Sequential和Model用法
這篇文章主要介紹了Keras中的兩種模型:Sequential和Model用法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-06-06python中的opencv和PIL(pillow)轉(zhuǎn)化操作
這篇文章主要介紹了python中的opencv和PIL(pillow)轉(zhuǎn)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-03-03