成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

Python實(shí)現(xiàn)K-means算法及其應(yīng)用

K-means算法簡介K-means算法是一種聚類算法,接受參數(shù)k,然后將事先輸入的n個(gè)數(shù)據(jù)對象劃分為k個(gè)聚類,使得每個(gè)聚類內(nèi)的對象相似度較高,而不同聚類之間的對象相似度較小。通過計(jì)算各聚類中對象的

K-means算法簡介

K-means算法是一種聚類算法,接受參數(shù)k,然后將事先輸入的n個(gè)數(shù)據(jù)對象劃分為k個(gè)聚類,使得每個(gè)聚類內(nèi)的對象相似度較高,而不同聚類之間的對象相似度較小。通過計(jì)算各聚類中對象的均值獲得一個(gè)“中心對象”,通過隨機(jī)選取幾個(gè)聚類中心,計(jì)算所有點(diǎn)到中心的距離,并選取最近的類別,再以該簇為中心,求簇中點(diǎn)的均值形成新的類別。

實(shí)現(xiàn)K-means算法

第一步是計(jì)算歐氏距離并初始化聚類中心,代碼示例如下:

```python

import numpy as np

計(jì)算歐式距離

def calculate_distance(vector1, vector2):

return np.sqrt((np.square(vector1 - vector2)))

初始化聚類中心

def initialize_centroids(data, k):

import random

return (data, k)

```

生成新的簇類并求出最短距離

接下來是找到每個(gè)點(diǎn)到中心點(diǎn)的最小距離,代碼如下:

```python

def minimum_distance(data, centroid_list):

cluster_dictionary {}

for i in data:

vector1 i

marker 0

min_dist float('inf')

for j in range(len(centroid_list)):

vector2 centroid_list[j]

distance calculate_distance(vector1, vector2)

if distance < min_dist:

min_dist distance

marker j

if marker not in cluster_():

cluster_dictionary[marker] []

cluster_dictionary[marker].append(i)

return cluster_dictionary

```

導(dǎo)入數(shù)據(jù)并運(yùn)行算法

導(dǎo)入數(shù)據(jù)并計(jì)算,當(dāng)簇中心變化小于一定閾值時(shí)跳出循環(huán),代碼如下:

```python

path 'C:/Users/jyjh/Desktop/data.txt'

data open(path, 'r').readlines()

temp []

import numpy as np

for i in data:

num_list []

for j in ().split(' '):

num float(j)

num_(num)

(num_list)

data (temp)

centroid_list initialize_centroids(data, 4)

cluster_dictionary minimum_distance(data, centroid_list)

new_msd getmsd(cluster_dictionary, centroid_list)

old_msd -0.000001

k 2

while abs(new_msd - old_msd) > 0.00001:

centroid_list getcentroids(cluster_dictionary)

cluster_dictionary minimum_distance(data, centroid_list)

old_msd new_msd

new_msd getmsd(cluster_dictionary, centroid_list)

k 1

print(new_msd - old_msd)

showresult(cluster_dictionary, centroid_list)

```

以上是關(guān)于Python實(shí)現(xiàn)K-means算法的簡要介紹和代碼示例。通過K-means算法,我們可以對數(shù)據(jù)進(jìn)行聚類分析,發(fā)現(xiàn)數(shù)據(jù)之間的相似性,為數(shù)據(jù)挖掘和模式識別提供了一種有效的方法。如果你正在進(jìn)行數(shù)據(jù)分析或機(jī)器學(xué)習(xí)相關(guān)工作,不妨嘗試使用K-means算法來處理數(shù)據(jù),發(fā)現(xiàn)其中隱藏的規(guī)律和信息。

標(biāo)簽: