K_means一种确定k值的算法_也可与K_means++一起使用
#-*- coding:utf-8 -*- #! /usr/bin/env python
from numpy import *
d1 = 3 d2 = 4 d3 = 5 d4 = 6 d5 = 100 d6 = 101 d7 = 102 d8 = 1001 d9 = 1002 d10 = 1003 s = [d1,d2,d3,d4,d5,d6,d7,d8,d9,d10] def segment(s): print "s is %s"%s gap = 0 #strip_gap_value = 5 strip_gap_value1 = sum(s)/len(s) print "strip_gap_value1 is %s"%strip_gap_value1 # print "sum(s) is %s"%sum(s) # print "len(s) is %s"%len(s) strip_gap_value2 = s[-1]-s[0] #strip_gap_value = min(strip_gap_value1,strip_gap_value2) strip_gap_value = strip_gap_value2/len(s) #strip_gap_value = 5 print "strip_gap_value is %s"%strip_gap_value #1尝试用均值不可行2尝试用最大值与最小值差值,再与均值比较最小值不可行。3 最大值和最小值差值除以个数 gap = strip_gap_value last = s[0] sub_b = [s[0]] bucket = [sub_b] for i in s[1:]: feet = i - last if feet > gap: sub_b = [i] bucket.append(sub_b) gap = strip_gap_value # else: # sub_b.append(i) # gap = gap + feet else: sub_b.append(i) gap = i - sub_b[0] gap = gap/2.0 if gap>strip_gap_value else strip_gap_value last = i print bucket return bucket
数值分组最新版
浙公网安备 33010602011771号