文档章节

2017年2月18日 K-means

airxiechao
 airxiechao
发布于 2017/03/20 08:33
字数 198
阅读 6
收藏 0

K-means clustering aims to partition the samples into k sets so as to miniize the sum of distances between each pointer to the K center
The algorithm proceeds by iterating two steps: cluster assignment step and center update step, until assignments no longer change.

from __future__ import division
import numpy as np
from sklearn.cluster import KMeans
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt 
%matplotlib inline

data = load_iris()
X = data.data
y = data.target

class myKMean:
    
    def compute_centers(self, X, predict, n_clusters):
        centers = []
        for c in range(n_clusters):
            centers.append(np.mean(X[np.where(predict == c)], axis=0))

        return np.array(centers)
    
    def compute_cluster(self, X, centers):
        predict = []
        for x in X:
            distances = [ np.sqrt(np.sum((x-c)**2)) for c in centers]
            predict.append(np.argmin(distances))

        return np.array(predict)
    
    def fit(self, X, n_clusters):
        predict = np.random.randint(n_clusters, size=X.shape[0])
        
        while True:
            self.centers = self.compute_centers(X, predict, n_clusters)
            p = self.compute_cluster(X, self.centers)
            
            if np.count_nonzero(predict - p) == 0:
                break
            else:
                predict = p
            
    def predict(self, X):
        return self.compute_cluster(X, self.centers)
        
km = myKMean()
km.fit(X, len(np.unique(y)))

for i in range(data.target_names.shape[0]):
    Xi = X[np.where(y == i)]
    plt.scatter(Xi[:,0], Xi[:,1])
    
plt.scatter(km.centers[:,0], km.centers[:,1], marker='x')

© 著作权归作者所有

airxiechao
粉丝 4
博文 42
码字总数 9717
作品 1
成都
程序员
私信 提问
数九时间表(2017-2018)

2017年进九时间 2017进九的日子是12月22日,其实也就是“冬至日”。天文专家介绍说,“九九”是我国北方特别是黄河中下游地区更为适用的一种杂节气。 2017~2018年数九时间表 一九 2017年12月...

anlve
2018/01/27
0
0
Day186 | 遇见GCS(七)

7月份说超级节点计划马上开启,不过一个多月过去,还没有消息。 新闻:http://blockchain.game/news.html 开发者社区:http://developer.blockchain.game/ 新版官网上线:http://blockchain...

自由算法
2018/08/21
0
0
Day172 | 遇见Mixin(十)

Mixin目前支持的链:EOS、BTC、BCH、ETH、ETC、LTC、XRP、SC。 XIN总量100万,50万作为节点激励,BigONE上IEO40万,白名单5万,团队5万,BigONE上的IEO有个大单拿走225000+。 XIN从诞生到现在...

自由算法
2018/08/07
0
0
2016年1季度工作计划

一 网站建设计划 网站用户端(2月15日-3月18日 王金彪,肖波) 管理后台(2月15日-3月18日 凌德俊 ,刘唯 ,邹小燕) 房间管控端(2月15日-3月18日 刘唯) 业务支持平台(3月18日-5月18日 ALL) 二 ...

imalexi
2016/01/28
1
0
主题优化包--JQuery EasyUI 1.5.x Of Insdep Theme

jQuery EasyUI 1.5.x of insdep theme 1.0.0 正式版 更新截图请移至下方,附部分美化截图 关于 Insdep theme是基于EasyUI 1.5.x 的一款免费的美化主题包,拥有百度编辑器、cropper、Highcha...

magicweng
2017/02/13
9.8K
10

没有更多内容

加载失败,请刷新页面

加载更多

代理模式之JDK动态代理 — “JDK Dynamic Proxy“

动态代理的原理是什么? 所谓的动态代理,他是一个代理机制,代理机制可以看作是对调用目标的一个包装,这样我们对目标代码的调用不是直接发生的,而是通过代理完成,通过代理可以有效的让调...

code-ortaerc
18分钟前
2
0
学习记录(day05-标签操作、属性绑定、语句控制、数据绑定、事件绑定、案例用户登录)

[TOC] 1.1.1标签操作v-text&v-html v-text:会把data中绑定的数据值原样输出。 v-html:会把data中值输出,且会自动解析html代码 <!--可以将指定的内容显示到标签体中--><标签 v-text=""></......

庭前云落
50分钟前
7
0
VMware vSphere的两种RDM磁盘

在VMware vSphere vCenter中创建虚拟机时,可以添加一种叫RDM的磁盘。 RDM - Raw Device Mapping,原始设备映射,那么,RDM磁盘是不是就可以称作为“原始设备映射磁盘”呢?这也是一种可以热...

大别阿郎
今天
10
0
【AngularJS学习笔记】02 小杂烩及学习总结

本文转载于:专业的前端网站☞【AngularJS学习笔记】02 小杂烩及学习总结 表格示例 <div ng-app="myApp" ng-controller="customersCtrl"> <table> <tr ng-repeat="x in names | orderBy ......

前端老手
昨天
14
0
Linux 内核的五大创新

在科技行业,创新这个词几乎和革命一样到处泛滥,所以很难将那些夸张的东西与真正令人振奋的东西区分开来。Linux内核被称为创新,但它又被称为现代计算中最大的奇迹,一个微观世界中的庞然大...

阮鹏
昨天
18
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部