欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

首頁綜合 正文
目錄

柚子快報邀請碼778899分享:聚類 機器學習 深度學習 K

柚子快報邀請碼778899分享:聚類 機器學習 深度學習 K

http://yzkb.51969.com/

主要用于保存記錄,來源B站視頻跟著大佬做的。

實現效果:

1.原始數據分類? 2.原始數據未分類

1.原始數據分類? ?2.數據聚類后(‘x’是每個聚類的中心)

demo:

### demo

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from k_means import KMeans

# 導入數據

data = pd.read_csv("./iris.csv")

iris_types = ['setosa','versicolor','virginica'] # 數據類別

x_axis = 'Petal_Length' #x軸

y_axis = 'Petal_Width' #Y軸

# 圖的大小

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

plt.subplot(1,2,1)

for iris_type in iris_types: # 遍歷每種花

plt.scatter(data[x_axis][data['Species']==iris_type],data[y_axis][data['Species']==iris_type],label=iris_type)

plt.title('label know')

plt.legend()

plt.subplot(122)

plt.scatter(data[x_axis][:],data[y_axis][:])

plt.title('label unknow')

plt.show()

num_examples = data.shape[0] #樣本個數

x_train = data[[x_axis,y_axis]].values.reshape(num_examples, 2)#將data的x,y軸數據轉換成ndarry格式,并reshape,賦給x_train

#指定好訓練所需的參數

num_clusters = 3

max_iterition = 50

KMeans = KMeans(x_train,num_clusters)

centroids, closest_centroids_ids = KMeans.train(max_iterition)

#畫圖對比

plt.figure(figsize=(12,5)) # 圖的大小

plt.subplot(1,2,1)

for iris_type in iris_types: # 遍歷每種花

plt.scatter(data[x_axis][data ['Species']==iris_type],data[y_axis][data['Species']==iris_type],label=iris_type)

plt.title('label know')

plt.legend()

plt.subplot(1,2,2)

for centroids_id, centroid in enumerate(centroids):

current_examples_index = (closest_centroids_ids == centroids_id).flatten()

plt.scatter(data[x_axis][current_examples_index], data[y_axis][current_examples_index], label=centroids_id)

for centroids_id, centroid in enumerate(centroids):

plt.scatter(centroid[0],centroid[1],c='black',marker='x')

plt.title('label KMeans')

plt.legend()

plt.show()

K_means.py:

### K_means

import numpy as np

# closest_centroids_ids里面存的是什么? ——>存的是每個數據距離中心點最小距離的簇的索引(1,2,3,...,K)

class KMeans:

def __init__(self, data, num_clustres): # 數據、K值

self.data = data

self.num_clustres = num_clustres

def train(self, max_iterations): # 最大迭代次數

# 1在當前數據中,初始化隨機選擇K個中心點

centroids = KMeans.centroids_init(self.data, self.num_clustres)

# 2開始訓練

# 計算每個點到K個中心點的距離

num_examples = self.data.shape[0] # 數據個數

closest_centroids_ids = np.empty((num_examples, 1)) # 創(chuàng)建空數組,存放尋找的最近的中心點

for _ in range(max_iterations): # 迭代max_iterations次

# 3得到當前每個樣本點到K個中心點的距離,找到最近的距離id

closest_centroids_ids = KMeans.centroids_find_closest(self.data, centroids) # 數據、中心點

# 4進行中心點位置更新:closest_centroids_ids距離誰最近就屬于哪個堆

centroids = KMeans.centroids_computer(self.data, closest_centroids_ids, self.num_clustres) #數據、當前數據距離哪個點最近

return centroids, closest_centroids_ids

@staticmethod

# num_clustres()方法:初始化隨機的尋找當前data的num_clustres個中心點

def centroids_init(data, num_clustres):

num_examples = data.shape[0] # 數據個數

random_ids = np.random.permutation(num_examples) # permutation:將數據隨機排序

# random_ids[:num_clustres]:選擇從0到num_clustres個數據,前num_clustres個;后面的:表示所有的數據特征

data = np.array(data)

centroids = data[random_ids[:num_clustres], :] # 選取后作為中心點

return centroids

@staticmethod

# 計算距離中心的的最近的距離,存儲在closest_centroids_ids中,返回

def centroids_find_closest(data, centroids):

# 計算方法:eg.歐氏距離

num_examples = data.shape[0] # 數據個數

num_centroids = centroids.shape[0] # 簇的個數:K

closest_centroids_ids = np.zeros((num_examples, 1)) # 用于存儲每個樣本點距離簇最近的那一個

for examples_index in range(num_examples):

distance = np.zeros((num_centroids, 1)) # 存儲每個樣本點對K個簇的distance值

for centroids_index in range(num_centroids):

# 計算距離:數據點的坐標值-中心點的坐標值

data = np.array(data)

distance_diff = data[examples_index, :4] - centroids[centroids_index, :4]

distance[centroids_index] = np.sum(distance_diff ** 2)

# 對當前的樣本找到距離最近的那個簇

closest_centroids_ids[examples_index] = np.argmin(distance) # np.argmin()返回最小值索引

return closest_centroids_ids

@staticmethod

# 更新closest_centroids_ids里面距離誰最近,就放在哪個堆(簇)

def centroids_computer(data, closest_centroids_ids, num_clustres):

num_features = data.shape[1] # 輸入的數據的特征個數

# num_features: 用于各個特征分別算均值

centroids = np.zeros((num_clustres,num_features)) # 簇的個數、特征個數

for centroids_id in range(num_clustres):

###如何運行的?

closest_ids = closest_centroids_ids == centroids_id

centroids[centroids_id] = np.mean(data[closest_ids.flatten(),:], axis=0)

return centroids

柚子快報邀請碼778899分享:聚類 機器學習 深度學習 K

http://yzkb.51969.com/

參考閱讀

評論可見,查看隱藏內容

本文內容根據網絡資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。

轉載請注明,如有侵權,聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/18936940.html

發(fā)布評論

您暫未設置收款碼

請在主題配置——文章設置里上傳

掃描二維碼手機訪問

文章目錄