客户分类:
1、将客户分为三类:超级VIP、vip、普通用户
2、需要你将不同的类的数据,在图上显示出来,用不同的颜色
3、返回三个类中,各包含哪些点
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import random
def decimal_clean(arr):
'''
将输入序列进行小数定标标准化
:param arr:输入的待优化的序列
:return:标准化后的序列
'''
k = np.ceil(np.log10(np.max(np.abs(arr))))
return arr / 10 ** k
def K_means(xy_line, n_type, n=None, thr=None):
'''
K_means算法函数
:param xy_line: 第一列为x坐标第二列为y坐标的二维序列
:param n_type: 分类数目
:param n: 最大迭代次数
:param thr: 阈值
:return: 调用各自函数后的返回结果直接返回到外部
'''
# 判断如果输入参数中如果n值和thr值都为None, 则调用自我迭代函数, 迭代退出条件, 新的参考点位置与上一次参考点位置一致
if n is None and thr is None:
return iter_self(xy_line, n_type)
elif n is not None: # 判断如果n值不为None, 则调用按次数迭代函数, 迭代退出条件, 迭代次数等于给定次数
return iter_n(xy_line, n_type, n)
else: # 如果前两种条件都不符合, 那么只有一种可能, 就是thr不为None, 调用阈值迭代函数, 迭代退出条件, 新的参考点与旧的参考点求欧式距离, 其最大值小于阈值
return iter_thr(xy_line, n_type, thr)
def iter_self(xy_line, n_type):
''&