python学习笔记 python实现k-means聚类
# -*- coding: utf-8 -*-
"""
Created on Thu Mar 16 14:52:58 2017 @author: Jarvis
"""
import tensorflow as tf
import numpy as np
import pandas as pd
import math
import random
from pandas import Series,DataFrame
def cal_dis(a,b):
sum = 0
for x,y in zip(a,b):
sum = sum+(x-y)*(x-y)
return math.sqrt(sum) def is_same_series(a,b): for x,y in zip(a,b):
if x != y:
return False
return True
def is_constant_vec(a,b):
if len(a) == 0 or len(b) == 0:
return False for x,y in zip(a,b):
if not is_same_series(x,y):
return False return True def init_typeSet(init_set,type_num):
for i in range(type_num):
init_set.append([])
return init_set def Mindis_type_no(x,vecs,typ_num = 4):
mindis = cal_dis(x,vecs[0])
ans = 0
for i in range(1,type_num):
tmp = cal_dis(x,vecs[i])
if mindis > tmp:
ans= i
mindis = cal_dis(x,vecs[i])
return ans def reduce_mean(vecs): reduce_vec = vecs[0].copy()
print(reduce_vec)
for i in range(1,len(vecs)):
print (vecs[i][5])
print (reduce_vec[5])
reduce_vec = reduce_vec+vecs[i] print (reduce_vec[5]) reduce_vec = reduce_vec/len(vecs)
# print(reduce_vec)
return reduce_vec
def get_vecs(sets):
vecs = []
for i in sets:
vecs.append(data.ix[i])
return vecs raw_data_file = pd.read_csv('NDVI_NDWI_all.csv',header = None,encoding = 'gbk')
data = (raw_data_file)
del data[0]
del data[1]
del data[2] type_num = 4
init_type_vec = []#类质心
tmp_set = set([])
data_size = len(data) while (len(tmp_set) < type_num):
tmp_set.add(random.choice(range(data_size))) for i in tmp_set:
tmp = data.ix[i]
init_type_vec.append(tmp) pre_vec = []
#print (is_constant_vec(pre_vec,init_type_vec)) while( not is_constant_vec(pre_vec,init_type_vec)):
type_set = []
type_set = init_typeSet(type_set,type_num)
for j in range(len(data)):
tmp_type = Mindis_type_no(data.ix[j],init_type_vec)
type_set[tmp_type].append(j)
#type_set[tmp_type].append(data.ix[j])
if(len(pre_vec) == 0):
pre_vec = init_type_vec.copy()
else:
for i in range(type_num):
pre_vec[i] = init_type_vec[i]
need_cal_vecs = get_ves(type_set[i])
init_type_vec[i] = reduce_mean(need_cal_vecs).copy()
for i in range(type_num):
print('--------------------------------')
print(type_set[i]) with open('output.txt',"w"):
for i in range(type_num):
print ("type %d"%i)
for j in type_set[i]:
print(j) #print(reduce_mean(type_set))
#for i in range(type_num):
# pre_vec[i] = tf.reduce_mean()
python学习笔记 python实现k-means聚类的更多相关文章
- Python学习笔记—Python基础1 介绍、发展史、安装、基本语法
第一周学习笔记: 一.Python介绍 1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...
- Python学习笔记--Python字符串连接方法总结
声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...
- python学习笔记-python程序运行
小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...
- python学习笔记-python解释器
刚开始学习python,首先要了解一下python解释器. 什么是python解释器? 编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执 ...
- Python学习笔记(Ⅰ)——Python程序结构与基础语法
作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...
- python学习笔记--python编程基础
一.一个隆重的仪式 我们在学习语言的时候,第一个写的程序肯定都是hello world.来写第一个程序吧,其实很简单,python的语法就是简单.优雅,一个print就搞定. 1 print('hel ...
- python学习笔记--python数据类型
一.整形和浮点型 整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正整数.负整数和0,浮点型的也就 ...
- python学习笔记--python简介
一.什么是python? python是一种面向对象.解释型的高级程序语言.python具有语法简洁.易于学习.功能强大,可扩展性强,跨平台等诸多特点.1989年开始开发,于1991年发布第一个公开发 ...
- Python学习笔记- Python threading模块
Python threading模块 直接调用 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading import time d ...
随机推荐
- 解决由于VNC日志导致服务器磁盘100%
今天通过SSH连接服务器看到磁盘直接100%了.于是通过 sudo du -h --max-depth=1 发现某个用户下面占用了100个G.于是切换进去看了一下.发现VNC的log占满了整个磁盘.然 ...
- WPF 绑定密码
我们发现我们无法绑定密码框的密码,PasswordBox 的 Password 不能绑定. 我们想做 MVVM ,我们需要绑定密码,不能使用前台 xaml.cs 监听 密码改变得到密码的值,传到 Vi ...
- Tomcat Java.OutOfMemoryError : PermGen Space异常
背景:前些日子更新公司多年前一个旧平台发布到Tomcat上之后,频繁收到网站许多模块无法正常使用的反汇. 测试过程中发现平台发布一段时间后,访问相关网页出现如下500页面 解决方案:PermGen s ...
- [原创]浅谈JAVA在ACM中的应用
由于java里面有一些东西比c/c++方便(尤其是大数据高精度问题,备受广大ACMer欢迎),所以就可以灵活运用这三种来实现编程,下面是我自己在各种大牛那里总结了一些,同时加上自己平时遇到的一些jav ...
- css 文字和子元素水平垂直居中
关于水平垂直居中,这是一个很简单的问题,但是很多时候,往往简单的东西,反而做不出来.这就是基础不扎实的缘故吧,我参照一些资料,总结了水平垂直居中的几种方法如下: 1 .文字水平垂直居中 这个比较简单, ...
- css是如何实现在页面文字不换行、自动换行、强制换行的
强制不换行 div{ white-space:nowrap; } 自动换行 div{ word-wrap: break-word; word-break: normal; } 强制英文单词断行 div ...
- 京东口红top 30分析
一.抓取商品id 分析网页源码,发现所有id都是在class="gl-item"的标签里,可以利用bs4的select方法查找标签,获取id: 获取id后,分析商品页面可知道每个商 ...
- Python CRM项目二
一.准备工作 如果没有配置基本的项目,请参考 http://www.cnblogs.com/luhuajun/p/7771196.html 当我们配置完成后首先准备我们的app 创建2个app分别对应 ...
- 集群配置虚拟主机及部署Hadoop集群碰到的问题
配置集群方案 Ubuntu下的配置apache虚拟主机方案: 对其中的Master节点配置虚拟主机,可以通过Chrome浏览器访问目录. 安装虚拟主机之前,先安装Apache2 sudo apt-ge ...
- 1.Introduction 介绍
Welcome to Log4j 2! Introduction Almost every large application includes its own logging or tracing ...