最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python實(shí)現(xiàn)鳶尾花三種聚類(lèi)算法(K-means,AGNES,DBScan)

 更新時(shí)間:2019年06月27日 14:44:44   作者:weixin_42134141  
這篇文章主要介紹了python實(shí)現(xiàn)鳶尾花三種聚類(lèi)算法(K-means,AGNES,DBScan),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

一.分散性聚類(lèi)(kmeans)

算法流程:

1.選擇聚類(lèi)的個(gè)數(shù)k.

2.任意產(chǎn)生k個(gè)聚類(lèi),然后確定聚類(lèi)中心,或者直接生成k個(gè)中心。

3.對(duì)每個(gè)點(diǎn)確定其聚類(lèi)中心點(diǎn)。

4.再計(jì)算其聚類(lèi)新中心。

5.重復(fù)以上步驟直到滿(mǎn)足收斂要求。(通常就是確定的中心點(diǎn)不再改變。

優(yōu)點(diǎn):

1.是解決聚類(lèi)問(wèn)題的一種經(jīng)典算法,簡(jiǎn)單、快速

2.對(duì)處理大數(shù)據(jù)集,該算法保持可伸縮性和高效率

3.當(dāng)結(jié)果簇是密集的,它的效果較好

缺點(diǎn)

1.在簇的平均值可被定義的情況下才能使用,可能不適用于某些應(yīng)用

2.必須事先給出k(要生成的簇的數(shù)目),而且對(duì)初值敏感,對(duì)于不同的初始值,可能會(huì)導(dǎo)致不同結(jié)果。

3.不適合于發(fā)現(xiàn)非凸形狀的簇或者大小差別很大的簇

4.對(duì)躁聲和孤立點(diǎn)數(shù)據(jù)敏感

這里為了看鳶尾花的三種聚類(lèi)算法的直觀(guān)區(qū)別,所以不用具體算法實(shí)現(xiàn),只需要調(diào)用相應(yīng)函數(shù)即可。

程序如下: 

import matplotlib.pyplot as plt 
import numpy as np 
from sklearn.cluster import KMeans
from sklearn import datasets 
 
iris = datasets.load_iris() 
X = iris.data[:, :4] # #表示我們?nèi)√卣骺臻g中的4個(gè)維度
print(X.shape)
 
# 繪制數(shù)據(jù)分布圖
plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see') 
plt.xlabel('sepal length') 
plt.ylabel('sepal width') 
plt.legend(loc=2) 
plt.show() 
 
estimator = KMeans(n_clusters=3) # 構(gòu)造聚類(lèi)器
estimator.fit(X) # 聚類(lèi)
label_pred = estimator.labels_ # 獲取聚類(lèi)標(biāo)簽
# 繪制k-means結(jié)果
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='o', label='label0') 
plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1') 
plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='+', label='label2') 
plt.xlabel('sepal length') 
plt.ylabel('sepal width') 
plt.legend(loc=2) 
plt.show() 

運(yùn)行結(jié)果:

 二.結(jié)構(gòu)性聚類(lèi)(層次聚類(lèi))

1.凝聚層次聚類(lèi):AGNES算法(自底向上)

首先將每個(gè)對(duì)象作為一個(gè)簇,然后合并這些原子簇為越來(lái)越大的簇,直到某個(gè)終結(jié)條件被滿(mǎn)足

2.分裂層次聚類(lèi):DIANA算法(自頂向下)

首先將所有對(duì)象置于一個(gè)簇中,然后逐漸細(xì)分為越來(lái)越小的簇,直到達(dá)到了某個(gè)終結(jié)條件。

這里我選擇的AGNES算法。

程序如下:

from sklearn import datasets
from sklearn.cluster import AgglomerativeClustering
import matplotlib.pyplot as plt
from sklearn.metrics import confusion_matrix
import pandas as pd
 
iris = datasets.load_iris()
irisdata = iris.data
 
clustering = AgglomerativeClustering(linkage='ward', n_clusters=3)
 
res = clustering.fit(irisdata)
 
print ("各個(gè)簇的樣本數(shù)目:")
print (pd.Series(clustering.labels_).value_counts())
print ("聚類(lèi)結(jié)果:")
print (confusion_matrix(iris.target, clustering.labels_))
 
plt.figure()
d0 = irisdata[clustering.labels_ == 0]
plt.plot(d0[:, 0], d0[:, 1], 'r.')
d1 = irisdata[clustering.labels_ == 1]
plt.plot(d1[:, 0], d1[:, 1], 'go')
d2 = irisdata[clustering.labels_ == 2]
plt.plot(d2[:, 0], d2[:, 1], 'b*')
plt.xlabel("Sepal.Length")
plt.ylabel("Sepal.Width")
plt.title("AGNES Clustering")
plt.show()

運(yùn)行結(jié)果:

三.密度聚類(lèi)之DBSCAN算法:

算法:

需要兩個(gè)參數(shù):ε (eps) 和形成高密度區(qū)域所需要的最少點(diǎn)數(shù) (minPts)

它由一個(gè)任意未被訪(fǎng)問(wèn)的點(diǎn)開(kāi)始,然后探索這個(gè)點(diǎn)的 ε-鄰域,如果 ε-鄰域里有足夠的點(diǎn),則建立一個(gè)新的聚類(lèi),否則這個(gè)點(diǎn)被標(biāo)簽為雜音。注意這個(gè)點(diǎn)之后可能被發(fā)現(xiàn)在其它點(diǎn)的 ε-鄰域里,而該 ε-鄰域可能有足夠的點(diǎn),屆時(shí)這個(gè)點(diǎn)會(huì)被加入該聚類(lèi)中。

程序如下:

import matplotlib.pyplot as plt 
import numpy as np 
from sklearn.cluster import KMeans
from sklearn import datasets 
from sklearn.cluster import DBSCAN
 
iris = datasets.load_iris() 
X = iris.data[:, :4] # #表示我們只取特征空間中的4個(gè)維度
print(X.shape)
# 繪制數(shù)據(jù)分布圖
plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see') 
plt.xlabel('sepal length') 
plt.ylabel('sepal width') 
plt.legend(loc=2) 
plt.show() 
 
dbscan = DBSCAN(eps=0.4, min_samples=9)
dbscan.fit(X) 
label_pred = dbscan.labels_
 
# 繪制k-means結(jié)果
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='o', label='label0') 
plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1') 
plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='+', label='label2') 
plt.xlabel('sepal length') 
plt.ylabel('sepal width') 
plt.legend(loc=2) 
plt.show() 

運(yùn)行結(jié)果:

改變參數(shù)后:

四、結(jié)果分析

從上面三種實(shí)驗(yàn)截圖可以看出,k-means聚類(lèi)和AGNES層次聚類(lèi)分析結(jié)果差不多的三類(lèi),與DBSCAN的結(jié)果不一樣。為啥不一樣,這就取決于算法本身的優(yōu)缺點(diǎn)了。

k-means對(duì)于大型數(shù)據(jù)集也是簡(jiǎn)單高效、時(shí)間復(fù)雜度、空間復(fù)雜度低。 最重要是數(shù)據(jù)集大時(shí)結(jié)果容易局部最優(yōu);需要預(yù)先設(shè)定K值,對(duì)最先的K個(gè)點(diǎn)選取很敏感;對(duì)噪聲和離群值非常敏感;只用于numerical類(lèi)型數(shù)據(jù);不能解決非凸數(shù)據(jù)。

 DBSCAN對(duì)噪聲不敏感;能發(fā)現(xiàn)任意形狀的聚類(lèi)。 但是聚類(lèi)的結(jié)果與參數(shù)有很大的關(guān)系;DBSCAN用固定參數(shù)識(shí)別聚類(lèi),但當(dāng)聚類(lèi)的稀疏程度不同時(shí),相同的判定標(biāo)準(zhǔn)可能會(huì)破壞聚類(lèi)的自然結(jié)構(gòu),即較稀的聚類(lèi)會(huì)被劃分為多個(gè)類(lèi)或密度較大且離得較近的類(lèi)會(huì)被合并成一個(gè)聚類(lèi)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 解決python中顯示圖片的plt.imshow plt.show()內(nèi)存泄漏問(wèn)題

    解決python中顯示圖片的plt.imshow plt.show()內(nèi)存泄漏問(wèn)題

    這篇文章主要介紹了解決python中顯示圖片的plt.imshow plt.show()內(nèi)存泄漏問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python正則分組的應(yīng)用

    python正則分組的應(yīng)用

    組是通過(guò) "(" 和 ")" 元字符來(lái)標(biāo)識(shí)的。 "(" 和 ")" 有很多在數(shù)學(xué)表達(dá)式中相同的意思;它們一起把在它們里面的表達(dá)式組成一組
    2013-11-11
  • python同義詞替換的實(shí)現(xiàn)(jieba分詞)

    python同義詞替換的實(shí)現(xiàn)(jieba分詞)

    這篇文章主要介紹了python同義詞替換的實(shí)現(xiàn)(jieba分詞),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • python實(shí)現(xiàn)讀取excel寫(xiě)入mysql的小工具詳解

    python實(shí)現(xiàn)讀取excel寫(xiě)入mysql的小工具詳解

    EXCEL 和 MySQL 大體上來(lái)說(shuō)都可以算是"數(shù)據(jù)庫(kù)",MySQL貌似有EXCEL的接口,但是最近在自學(xué)Python,用Python實(shí)現(xiàn)了一下,下面這篇文章主要給大家介紹了關(guān)于利用python實(shí)現(xiàn)讀取excel寫(xiě)入mysql的一個(gè)小工具,需要的朋友可以參考下。
    2017-11-11
  • python 3.7.4 安裝 opencv的教程

    python 3.7.4 安裝 opencv的教程

    這篇文章主要介紹了python 3.7.4 安裝 opencv的教程,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-10-10
  • Python3開(kāi)發(fā)環(huán)境搭建詳細(xì)教程

    Python3開(kāi)發(fā)環(huán)境搭建詳細(xì)教程

    這篇文章主要介紹了Python3開(kāi)發(fā)環(huán)境搭建詳細(xì)教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python神經(jīng)網(wǎng)絡(luò)MobileNetV2模型的復(fù)現(xiàn)詳解

    python神經(jīng)網(wǎng)絡(luò)MobileNetV2模型的復(fù)現(xiàn)詳解

    這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)MobileNetV2模型的復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python實(shí)現(xiàn)識(shí)別相似圖片小結(jié)

    python實(shí)現(xiàn)識(shí)別相似圖片小結(jié)

    本文給大家分享的是使用Python實(shí)現(xiàn)圖片相似度識(shí)別的總結(jié),代碼實(shí)用pil模塊比較兩個(gè)圖片的相似度,根據(jù)實(shí)際實(shí)用,代碼雖短但效果不錯(cuò),還是非??孔V的。
    2016-02-02
  • Python3中小括號(hào)()、中括號(hào)[]、花括號(hào){}的區(qū)別詳解

    Python3中小括號(hào)()、中括號(hào)[]、花括號(hào){}的區(qū)別詳解

    這篇文章主要介紹了Python3中小括號(hào)()、中括號(hào)[]、花括號(hào){}的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • .img/.hdr格式轉(zhuǎn).nii格式的操作

    .img/.hdr格式轉(zhuǎn).nii格式的操作

    這篇文章主要介紹了.img/.hdr格式轉(zhuǎn).nii格式的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07

最新評(píng)論

廉江市| 卢氏县| 甘肃省| 龙山县| 睢宁县| 集贤县| 阜康市| 治县。| 平凉市| 景泰县| 长沙市| 微山县| 新河县| 水城县| 安仁县| 那曲县| 云和县| 洪泽县| 黄平县| 台州市| 平远县| 涟水县| 西乌珠穆沁旗| 喀喇| 自贡市| 云南省| 高清| 富阳市| 乌兰浩特市| 平乡县| 长寿区| 巴马| 建宁县| 霍山县| 河池市| 讷河市| 绥江县| 多伦县| 德阳市| 西乌| 青铜峡市|