K-means算法(三种方法)

 客户分类:

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):
    ''&
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值