日韩欧乱色一区二区三区在线_久久―日本道色综合久久_欧美日本一区二区_网曝91综合精品门事件在线

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

當(dāng)前位置:首頁(yè)  >  技術(shù)干貨  > Python中使用K-means算法

Python中使用K-means算法

來(lái)源:千鋒教育
發(fā)布人:xqq
時(shí)間: 2023-11-13 10:16:27 1699841787

python中使用K-means算法

k-means是機(jī)器學(xué)習(xí)中最常用的聚類(lèi)算法,關(guān)于k-means算法的數(shù)學(xué)原理、算法、偽碼等已有相當(dāng)豐富的文獻(xiàn),在此不再贅述。

1、調(diào)用以下庫(kù)

importnumpyasnp#用于抽樣和生成隨機(jī)數(shù)

fromsklearn.clusterimportKMeans#sklearn自帶的Kmeans算法,用于嚴(yán)重本文算法結(jié)果是否正確

importmatplotlib.pyplotasplt#結(jié)果可視化

importsys#需要用到sys.exit()函數(shù)

若不需要驗(yàn)證聚類(lèi)結(jié)果是否可以不使用Sklearn庫(kù)。

2、生成用于訓(xùn)練的隨機(jī)數(shù)據(jù)

np.set_printoptions(suppress=True)#令numpy的結(jié)果不以科學(xué)計(jì)數(shù)法的方式輸出

Data=np.array([[1.0,2.0],[1.5,1.8],[3,4],[6,8],[8,8],[1,0.6],

[9,11],[7,10]])#你也可以通過(guò)抽樣的方式來(lái)更快的獲得測(cè)試數(shù)據(jù)

3、定義用于選擇隨機(jī)初始點(diǎn)和簇?cái)?shù)(k)的函數(shù)

defK_means(data,k):

globalMean

mean=[]

a=np.max(data[:,0])

b=np.min(data[:,0])

c=np.max(data[:,1])

d=np.min(data[:,1])

foriinrange(k):

x=np.random.uniform(a,b,1)

#此處返回array

y=np.random.uniform(c,d,1)#此處返回array

mean.append([float(x),float(y)])

Mean=np.array(mean)

returnMean

在上面的代碼中,為了限定初始點(diǎn)(x,y)的位置不會(huì)超出樣本點(diǎn)的范圍,因此均勻抽樣的上下限是指訓(xùn)練數(shù)據(jù)(a,b)和(c,d)的最小橫距。

4、定義可視化函數(shù),繪制測(cè)試數(shù)據(jù)散點(diǎn)圖

defvision(data,cell):

plt.figure(figsize=(12,6))

ax1=plt.subplot(121)

ax1.scatter(Data[:,0],Data[:,1])#原始數(shù)據(jù)散點(diǎn)圖

ax1.scatter(point[:,0],point[:,0])#同時(shí)將隨機(jī)選取的初始點(diǎn)表示出來(lái)

plt.xlabel("x")

plt.ylabel("y")

plt.title("scatterof"+"rural"+"data")

ax2=plt.subplot(122)

ax2.scatter(Data[:,0],Data[:,1])#原始數(shù)據(jù)散點(diǎn)圖

ax2.scatter(data[:,0],data[:,1])#經(jīng)過(guò)迭代后最終確定的聚類(lèi)點(diǎn)

plt.xlabel("x")

plt.ylabel("y")

plt.title("scatterof"+cell+"data")

plt.show()

聚類(lèi)結(jié)果的可視化對(duì)于判斷聚類(lèi)結(jié)果的準(zhǔn)確性至關(guān)重要。

5、定義迭代過(guò)程,通過(guò)不斷計(jì)算各個(gè)樣本對(duì)聚類(lèi)點(diǎn)的歐式聚類(lèi),來(lái)不斷更新聚類(lèi)點(diǎn)

defiteration(Data,point):

A=[]

B=[]

foriinrange(len(Data)):

d1=np.sqrt(sum(pow(Data[i]-point[0],2)))

d2=np.sqrt(sum(pow(Data[i]-point[1],2)))

ifd1>d2:

A.append(list(Data[i]))

else:

B.append(list(Data[i]))

iflen(A)==len(Data)orlen(B)==len(Data):

print("初始化錯(cuò)誤")

sys.exit(0)

new_x1=np.mean(np.array(A)[:,0])

new_y1=np.mean(np.array(A)[:,1])

new_x2=np.mean(np.array(B)[:,0])

new_y2=np.mean(np.array(B)[:,1])

new_point=np.array([[new_x1,new_y1],[new_x2,new_y2]])

returnnew_point

注意,上段代碼中加入了一個(gè)if語(yǔ)句

iflen(A)==len(Data)orlen(B)==len(Data):

print("初始化錯(cuò)誤")

sys.exit(0)

由于初始點(diǎn)是隨機(jī)產(chǎn)生的,所以這個(gè)條件語(yǔ)句是非常必要的,因此有可能所有的樣本點(diǎn)都只接近一個(gè)聚類(lèi)中心而遠(yuǎn)離另一個(gè)聚類(lèi)中心,這樣就不能形成兩個(gè)聚類(lèi)中心,程序?qū)?huì)報(bào)錯(cuò),因此我們需要排除出現(xiàn)這種情況的可能性。一旦所有樣本點(diǎn)都接近一個(gè)聚類(lèi)中心時(shí)令程序停止。

以上就是Python中使用K-means算法,希望能對(duì)大家有所幫助!更多Python學(xué)習(xí)教程請(qǐng)關(guān)注IT培訓(xùn)機(jī)構(gòu):千鋒教育。

聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強(qiáng)師集結(jié),手把手帶你蛻變精英
請(qǐng)您保持通訊暢通,專(zhuān)屬學(xué)習(xí)老師24小時(shí)內(nèi)將與您1V1溝通
免費(fèi)領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學(xué) 138****2860 剛剛成功領(lǐng)取
王同學(xué) 131****2015 剛剛成功領(lǐng)取
張同學(xué) 133****4652 剛剛成功領(lǐng)取
李同學(xué) 135****8607 剛剛成功領(lǐng)取
楊同學(xué) 132****5667 剛剛成功領(lǐng)取
岳同學(xué) 134****6652 剛剛成功領(lǐng)取
梁同學(xué) 157****2950 剛剛成功領(lǐng)取
劉同學(xué) 189****1015 剛剛成功領(lǐng)取
張同學(xué) 155****4678 剛剛成功領(lǐng)取
鄒同學(xué) 139****2907 剛剛成功領(lǐng)取
董同學(xué) 138****2867 剛剛成功領(lǐng)取
周同學(xué) 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT
pythongeth如何使用?

python中g(shù)eth如何使用?1、安裝命令pipinstallpy-geth2、快速啟動(dòng)運(yùn)行連接到mainnet的geth>>>fromgethimportLiveGethProcess>>>get...詳情>>

2023-11-13 23:57:18
python用OpenCV在圖像添加文本

python中用OpenCV在圖像添加文本1、要將文本放入圖像中,需要指定以下內(nèi)容寫(xiě)入的文字?jǐn)?shù)據(jù)放置它的位置坐標(biāo)(即數(shù)據(jù)開(kāi)始的左下角)。字體類(lèi)型(檢查...詳情>>

2023-11-13 23:53:42
python函數(shù)裝飾器的應(yīng)用過(guò)程

python函數(shù)裝飾器的應(yīng)用過(guò)程1、應(yīng)用過(guò)程一般是定義在一個(gè)獨(dú)立模塊中,使用時(shí)會(huì)被導(dǎo)入到其它模塊;函數(shù)裝飾器會(huì)在內(nèi)部定義一個(gè)新函數(shù),然后返回。...詳情>>

2023-11-13 23:35:41
python異步中selectors的使用

python異步中selectors的使用selectors這個(gè)庫(kù)的功能非常理解,類(lèi)似地發(fā)送信件,如果想等待別人的回信的話,如果沒(méi)有發(fā)送自己的信件的話,一直在...詳情>>

2023-11-13 23:14:05
pythontemp是什么意思

python中temp是什么意思一、temp:臨時(shí)文件夾。根據(jù)操作的過(guò)程進(jìn)行臨時(shí)保存的文件技術(shù)。python中臨時(shí)文件及文件夾使用。使用的是tempfile包安裝...詳情>>

2023-11-13 22:30:53
主站蜘蛛池模板: 桦川县| 茶陵县| 松滋市| 景德镇市| 松溪县| 福鼎市| 高密市| 永年县| 德阳市| 白水县| 宜兰市| 宾阳县| 尚义县| 静安区| 崇州市| 肇东市| 化隆| 兰溪市| 鄂托克前旗| 通州市| 海宁市| 邵阳市| 曲麻莱县| 达拉特旗| 商河县| 湖南省| 安徽省| 邻水| 贡嘎县| 喀什市| 那曲县| 阳春市| 胶州市| 安岳县| 黄大仙区| 灵石县| 涪陵区| 上杭县| 镇远县| 八宿县| 民乐县|