欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

Kmeans分類python實現(xiàn)

系統(tǒng) 1746 0

Kmean分類

項目鏈接:https://github.com/Wchenguang/gglearn/blob/master/KmeansClassifier/講解/KmeansClassifier.ipynb

  1. 首先, 隨機確定 K 個初始點作為質心(不必是數(shù)據(jù)中的點)。
  2. 然后將數(shù)據(jù)集中的每個點分配到一個簇中, 具體來講, 就是為每個點找到距其最近的質心, 并將其分配該質心所對應的簇. 這一步完成之后, 每個簇的質心更新為該簇所有點的平均值.
  3. 重復上述過程直到數(shù)據(jù)集中的所有點都距離它所對應的質心最近時結束。
            
              import numpy as np
import matplotlib.pyplot as plt

class KmeansClassifier:
    def __init__(self, k, distance_method = "o", random_select = True, 
                    plot = False):
        self.k = k
        self.distance_method = distance_method
        self.random_select = random_select
        self.plot = plot
        if(distance_method == "o"):
            self._dist = self._euler_dist
        else:
            self._dist = self._manhattan_distance
            
    def _euler_dist(self, x1, x):
        return np.sqrt(np.multiply(x-x1, x-x1).sum())
    
    def _manhattan_distance(self, x1, x):
        return np.abs(x-x1).sum()
    
    def _get_nearest(self, x, center_list, dist):
        dists = []
        for center in center_list:
            dists.append(dist(x, center))
        return dists.index(min(dists))
    
    def _fit(self, x, y, dist, x_center_index_list, center_list):
        xy_map = np.hstack((x, x_center_index_list, x_center_index_list))
        for row in xy_map:
            row[-1] = self._get_nearest(row[:-2], center_list, dist)
        flag = np.all(xy_map[:, -1] == xy_map[:, -2])
        return flag, xy_map[:, -1].reshape(-1, 1), center_list
    
    def _random_center_list(self, x, k):
        center_list = np.zeros((x.shape[1], k))
        for col in range(x.shape[1]):
            col_max = np.max(x[:, col])
            col_min = np.min(x[:, col])
            center_list[col, :] = col_min + (col_max - col_min) * np.random.rand(1, k)
        return center_list.T
    
    def _updata_center_list(self, x, x_center_index_list, center_list):
        new_center_list = []
        for index in range(len(center_list)):
            part_x = x[np.where(
                    x_center_index_list[:, -1] == index)]
            if(0 != part_x.size):
                new_center_list.append(np.mean(part_x, axis = 0))
            else:
                new_center_list.append(np.zeros(part_x.shape[1]))
        return new_center_list
    
    def _plot(self, x, x_center_index_list, center_list):
        '''
        數(shù)據(jù)繪制,只能繪制二維
        '''
        center_array = np.array(center_list)
        for index in range(len(center_list)):
            part_x = x[np.where(
                    x_center_index_list[:, -1] == index)]
            plt.scatter(part_x[:, 0], part_x[:, 1])
        plt.scatter(center_array[:, 0], center_array[:, 1], marker = "+")
        plt.show()
    
    def fit(self, x, y, center_list = None):
        if not center_list:
            center_list = self._random_center_list(x, self.k)
        x_center_index_list = np.zeros(x.shape[0]).reshape(-1, 1)
        flag = False
        while(True):
            flag, x_center_index_list, center_list = self._fit(x, 
                                        y, self._dist, x_center_index_list, center_list)
            if(flag):
                break
            center_list = self._updata_center_list(x, x_center_index_list,
                                                      center_list)
            if(self.plot):
                self._plot(x, x_center_index_list, center_list)
        return self

x = np.random.randint(1, 100, (50, 2))
y = np.random.randint(1,4,(10, 1))
kmeans_clf = KmeansClassifier(k = 4, plot=True)
kmeans_clf.fit(x, y)

            
          

更多文章、技術交流、商務合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品国产99久久久古代 | 99在线精品视频在线观看 | 日韩成人| WWW国产亚洲精品久久久 | 极品久久| 91久久国产 | 国产日韩一区在线精品欧美玲 | 在线播放国产精品 | 亚洲人一区 | 日韩欧美综合在线二区三区 | 欧美亚洲视频在线观看 | 国产欧美精品一区二区 | 国产视频播放 | 香港三级日本三级a视频 | 日韩精品亚洲人成在线播放 | 色噜噜狠狠色综合欧洲 | 精品亚洲一区二区 | 日韩视频在线观看免费 | 日韩成人免费在线视频 | 丁香婷婷激情 | 国产激情在线观看 | 亚洲一区二区三区久久 | 欧美剧场成人精品午夜 | 亚洲区视频 | 国产日韩一区 | 天天色官网 | 日本wwwwwwwww| 91xxx在线观看 | 闲人综合网 | 9191精品国产免费不久久 | 亚洲一区免费在线 | 日韩在线一区二区三区 | 亚洲综合久久久久久中文字幕 | 国产午夜精品在线 | 亚洲精品66| 国产午夜亚洲精品 | 天天摸天天舔 | 久久视频在线免费观看 | 欧美成人激情视频 | 国产视频日韩 | 一区二区三区四区在线观看视频 |