# -*- 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. git 合并两个仓库

    我有两个仓库,一个是gitbook在写一本 一个是放在github的垃圾,这个是我想要开个人网站,但是做的还是不行https://github.com/lindexi/lindexi.github.i ...

  2. Nginx功能展示实验

    Nginx功能展示实验 Nging可以作为反代服务器:也可以作为负载均衡器,并自带根据对后端服务器健康状态检测具有增删服务器的功能:也可以作为纯Web服务器,提供Web服务. 本实验将使用Nginx实 ...

  3. zabbix自动截图留档_python版

    1 背景     每个DB Server都有zabbix监控,除了异常情况的报警信息外,也会在日检.周检.月检等工作中用到zabbix的监控数据,对zabbix监控数据会做两种处理:1 数据分析(环比 ...

  4. LINUX 笔记-MOUNT

    mount [-t vfstype] [-o options] device dir -o options: 主要用来描述设备或档案的挂接方式 1)loop:用来把一个文件当成硬盘分区挂上系统 2)r ...

  5. Bootstrap--下拉菜单.dropdown

    下拉菜单.dropdown .dropdown <下拉菜单触发器button+下拉菜单ul> .dropdown 包裹层 .dropdown-toggle  下拉菜单触发器 data-to ...

  6. 关于 Swift 4 中内存安全访问

    前言 本文主要翻译今年 The Swift Programming Language (Swift 4) 中新出的章节 -<Memory Safety>.在 Swift 4 中,内存安全访 ...

  7. 使用SimpleXML解析xml文件数据

    最近工作要求从一个XML文档中批量读取APK应用数据,自然想到用SimpleXML.经过一段时间摸索,终于成功解析,现在将思路以及代码做下记录: xml文件格式大致如下: <?xml versi ...

  8. Leetcode题解(十九)

    54.Spiral Matrix 题目: 题目意思很简单,就是螺旋式访问矩阵元素.也没有比较经典的算法可以解决此题,只需要模拟一下这个过程即可. 代码如下: class Solution { publ ...

  9. YUM源、磁盘基础知识 CDN概念

    第1章 YUM源 1.1 什么是yum源 Yellowdog Updater, Modified 一个基于RPM包管理的字符前端软件包管理器.能够从指定的服务器自动下载RPM包并且安装,可以处理依赖性 ...

  10. Python pip 下载速度慢? Windows 设置 国内源,用 阿里云 国内镜像 加速

    pip 提供了对 Python 包的查找.下载.安装.卸载的功能,是非常方便的 Python 包管理工具.但是,令人苦恼的是 pip 在国内的下载速度非常慢,速度常常只有每秒几十 K,甚至才几 K,小 ...