# -*- 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聚类的更多相关文章

  1. Python学习笔记—Python基础1 介绍、发展史、安装、基本语法

    第一周学习笔记: 一.Python介绍      1.Python的创始人为吉多·范罗苏姆.1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  2. Python学习笔记--Python字符串连接方法总结

    声明: 这些总结的学习笔记,一部分是自己在工作学习中总结,一部分是收集网络中的知识点总结而成的,但不到原文链接.如果有侵权,请知会,多谢. python中有很多字符串连接方式,总结一下: 1)最原始的 ...

  3. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  4. python学习笔记-python解释器

    刚开始学习python,首先要了解一下python解释器. 什么是python解释器? 编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执 ...

  5. Python学习笔记(Ⅰ)——Python程序结构与基础语法

    作为微软的粉丝,最后终于向Python低头了,拖了两三个月终于下定决心学习Python了.不过由于之前受到C/C#等语言影响的思维定式,前期有些东西理解起来还是很费了些功夫的. 零.先抄书: 1.Py ...

  6. python学习笔记--python编程基础

    一.一个隆重的仪式 我们在学习语言的时候,第一个写的程序肯定都是hello world.来写第一个程序吧,其实很简单,python的语法就是简单.优雅,一个print就搞定. 1 print('hel ...

  7. python学习笔记--python数据类型

    一.整形和浮点型 整形也就是整数类型(int)的,在python3中都是int类型,没有什么long类型的,比如说存年龄.工资.成绩等等这样的数据就可以用int类型,有正整数.负整数和0,浮点型的也就 ...

  8. python学习笔记--python简介

    一.什么是python? python是一种面向对象.解释型的高级程序语言.python具有语法简洁.易于学习.功能强大,可扩展性强,跨平台等诸多特点.1989年开始开发,于1991年发布第一个公开发 ...

  9. Python学习笔记- Python threading模块

    Python threading模块 直接调用 # !/usr/bin/env python # -*- coding:utf-8 -*- import threading import time d ...

随机推荐

  1. 手机1520 win8.1升级win10

    昨天买了手机1520,卖家不错:https://item.taobao.com/item.htm?id=525484481986 于是我想把win8.1升级为win10 首先去http://www.i ...

  2. 恶意软件Mirai换了个马甲 瞄上我国2亿多台IoT设备

    恶意软件Mirai换了个马甲 瞄上我国2亿多台IoT设备   想要起来时,一种沉重感阻碍着他,这是一种安全感:感觉到一张床为他铺好了,而且只属于他:想要静卧时,一种不安阻碍着他,把他从床上赶起来,这是 ...

  3. Python 第十三节 文件操作

    A 1.首先文件读写操作有以下几种模式:   a\a+  w\w+ r\r+   a模式:追加_写入模式,写入指针默认在开头,如果文件存在将在开头追加写入,如果文件不存在将创建文件再写入. a+模式: ...

  4. JSP前后台数据交互

    1.一般方法:在页面加载时载入数据 首先,新建一个包,在包内创建一个类,类实现接口Servlet-javax.servlet 然后,在web.xml文件里配置如下 <?xml version=& ...

  5. PHP上传大文件配置

    使用PHP上传比较大的文件时,发现程序没反应,那是因为PHP的默认设置限制了上传文件的大小,所以要修改配置文件php.ini中的一些选项:(以下只是我个人的配置,大家可根据自己的实际需要配置) fil ...

  6. Spring AOP中级——应用场景

    在<Spring AOP初级——入门及简单应用>中对AOP作了简要的介绍,以及一些专业术语的解释,同时写了一个简单的Spring AOPdemo.本文将继续探讨Spring AOP在实际场 ...

  7. rsync服务精讲 -- 视频

    rsync服务 开源数据同步工具rsync视频(老男孩分享) 浏览网址 01-rsync基础介绍 http://oldboy.blog.51cto.com/2561410/1216550 11-rsy ...

  8. SQL表连接查询(inner join(join)、full join、left join、right join、cross join)

    下面列出了您可以使用的 JOIN 类型,以及它们之间的差异. JOIN: 如果表中有至少一个匹配,则返回行(join=inner join) LEFT JOIN: 即使右表中没有匹配,也从左表返回所有 ...

  9. android版火狐调试器

    Remotely debugging Firefox for Android 使用火狐开发工具可以在桌面上进行远程代码的调试(FF26以上) 具体使用参考: https://developer.moz ...

  10. shapes 不规则边界

    CSS基本形状都是矩形,CSS shapes允许开发者用定制的路径来包裹内容,例如圆形,椭圆,多边形等.   形状可以自定义也可以从图片中推断   从图片推断,例如可以让文字按照图片形状来浮动到一边: ...