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 ...
随机推荐
- win10 UWP 单元测试
我们在写代码的时候不能保证我们写出来的代码是正确的,所以我们经常要单元测试. 单元测试和重构都是在做完一个小小函数一般就要进行一次,越早做就越好,可以比较早发现问题,这时我们还记得我们写的内容,不过比 ...
- JAVA提高六:泛型
在面向对象编程语言中,多态算是一种泛化机制.例如,你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性.此外,如果将方法参数声明为接口,将 ...
- 企业微信开发之向员工付款(C#)
一.企业微信API 地址:http://work.weixin.qq.com/api/doc#11545 二.参数说明 1.向员工付款 请求方式:POST(HTTPS)请求地址:https://api ...
- (转)Java中使用正则表达式的一个简单例子及常用正则分享
转自:http://www.jb51.net/article/67724.htm 这篇文章主要介绍了Java中使用正则表达式的一个简单例子及常用正则分享,本文用一个验证Email的例子讲解JAVA中如 ...
- dubbo的架构
dubbo架构图如下所示: 节点角色说明: Provider: 暴露服务的服务提供方. Consumer: 调用远程服务的服务消费方. Registry: 服务注册与发现的注册中心. Monitor: ...
- zookeeper 笔记-小结
1.zookeeper为分布式应用设计的分布式开源协调服务 2.分布式应用可以建立在同步配置管理,选举,分布式锁,分组和命名等服务的更高级别的实现基础上 3.znode维护数据,ACL时间戳等交换版本 ...
- 推荐使用国内的豆瓣源安装Python插件
以前都是用pip安装Python插件的,直到今天 pip的原理其实是从Python的官方源pypi.python.org/pypi下载到本地,然后解包安装 但是有的时候,这个操作会非常慢,国内可以通过 ...
- JavaScript--我发现,原来你是这样的JS(再说引用类型,基本包装类型与个体内置对象)
一.介绍 本篇是续上一篇的,引用类型的后篇,本篇主要是说基本包装类型和个体内置对象.如果你能收获一些知识,那我很高兴,很满足,哈哈哈,希望大家能愉快看完.如果你想学好一门技术,要不忘初心,方得始终. ...
- 攻克vue路由
先下手 路由是个好功能,但是每次都感觉没法开始下手,愣愣的看半天官方文档,所以做个快速开始教程. 首先先搭好HTML文件结构: <!--link和view在一个父元素下--> <di ...
- Cup
Cup Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissio ...