zoukankan      html  css  js  c++  java
  • k-均值聚类算法

    最近因为工作得原因,接触了一点机器学习中得算法,在此记录下来,以供学习。

    import numpy as np
    import copy
    import matplotlib.pyplot as plt
    
    pic = plt.imread('apple.png')
    plt.imshow(pic)
    pic.shape
    data = pic.reshape(-1,4)
    
    def kmeans_wave(n, k, data): #n为迭代次数, k为聚类中心, data为输入数据
        data_new = copy.deepcopy(data)    
        data_new = np.column_stack((data_new, np.ones(631*982)))
        center_point = np.random.choice(631*982, k, replace = False)
        center = data_new[center_point, :]
        
        distance = [[] for i in range(k)]
        
        for i in range(n):
            for j in range(k):
                distance[j] = np.sqrt(np.sum(np.square(data_new-np.array(center[j])), axis=1)) # 更新距离
        
            data_new[:,4] = np.argmin(np.array(distance), axis = 0)  # 将最小距离的类别标签作为当前数据的类别
            for l in range(k):
                center[l] = np.mean(data_new[data_new[:,4]==1], axis=0)# 更新聚类中心
    return data_new
    
    if __name__ == '__main__':
        data_new = kmeans_wave(100,6,data)
        print(data_new.shape)
        pic_new = data_new[:, 4].reshape(631,982)
        plt.imshow(pic_new)
        plt.show()

    下面是运行结果:

    当你的才华还撑不起你的野心时
    那你就应该静下心来学习
    当你的能力还驾驭不了你的目标时
    那就应该沉下心来历练
  • 相关阅读:
    PHP联接MySQL
    PHP分页及原理
    两种ajax的方法
    Mysql 数据库 操作语句
    HTTP状态码对照表 HTTP response codes
    HTTP请求中POST与GET的区别
    Django模板导入和替换、以及对数据库的增加、查看
    Django模板(filter过滤器{{ }}与tag标签{% %}应用)
    Django视图层
    Diango路由控制
  • 原文地址:https://www.cnblogs.com/yang-xiansen/p/9450574.html
Copyright © 2011-2022 走看看