python肘部法则 最优分类
来源:互联网 发布:云计算工程师薪资待遇 编辑:程序博客网 时间:2024/03/28 19:03
改进版:最佳分类数获取改进了一下
# -*- coding:utf-8 -*-import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import KMeansfrom scipy.spatial.distance import cdistimport sysdef elbow_rule(): x = np.array([1, 2, 3, 1, 5, 6, 5, 5, 6, 7, 8, 9, 7, 9]) y = np.array([1, 3, 2, 2, 8, 6, 7, 6, 7, 1, 2, 1, 1, 3]) data = np.array(list(zip(x, y))) # 肘部法则 求解最佳分类数 # K-Means参数的最优解也是以成本函数最小化为目标 # 成本函数是各个类畸变程度(distortions)之和。每个类的畸变程度等于该类重心与其内部成员位置距离的平方和 a=[] K = range(1, 10) for k in range(1,10): kmeans=KMeans(n_clusters=k) kmeans.fit(data) value=sum(np.min(cdist(data, kmeans.cluster_centers_, 'euclidean'),axis=1))/data.shape[0] print(k,value) a.append(value) cha = [a[i] - a[i + 1] for i in range(len(a) - 1)] a_v=a[cha.index(max(cha)) + 1] index=a.index(a_v)+1 print(max(cha), a_v,index) return indexelbow_rule()
旧版:
# -*- coding:utf-8 -*-import numpy as npimport matplotlib.pyplot as pltfrom sklearn.cluster import KMeansfrom scipy.spatial.distance import cdistimport sysdef elbow_rule(): x = np.array([1, 2, 3, 1, 5, 6, 5, 5, 6, 7, 8, 9, 7, 9]) y = np.array([1, 3, 2, 2, 8, 6, 7, 6, 7, 1, 2, 1, 1, 3]) data = np.array(list(zip(x, y))) # 肘部法则 求解最佳分类数 # K-Means参数的最优解也是以成本函数最小化为目标 # 成本函数是各个类畸变程度(distortions)之和。每个类的畸变程度等于该类重心与其内部成员位置距离的平方和 aa=[] K = range(1, 10) for k in range(1,10): kmeans=KMeans(n_clusters=k) kmeans.fit(data) value=sum(np.min(cdist(data, kmeans.cluster_centers_, 'euclidean'),axis=1))/data.shape[0] print(k,value) aa.append(value) b = aa[1:] cc = [x - y for x, y in zip(aa,b)] print(cc) index=cc.index(max(cc))+2 #aa[1:]要+1,肘部法则的下一个值是最优值 print(max(cc), index) return indexelbow_rule()
阅读全文
0 0
- python肘部法则 最优分类
- KMeans聚类、肘部法则求最佳分类数
- 贝叶斯最优分类器
- 最优间隔分类器问题
- 最优间隔分类器问题
- 最优间隔分类器-SVM
- 第七集 最优间隔分类器问题
- 最优间隔分类器与SVM
- SVM-3-最优间隔分类器
- 【七】最优间隔分类器问题
- CS229-Lesson7最优间隔分类器
- 斯坦福大学第七讲-最优间隔分类器
- 求素数最优代码(python)
- 中文问题的分类及其建议最优解决办法
- 贝叶斯最优分类器的一个实例MATLAB代码
- Andrew Ng - SVM【1】最优间隔分类器
- 【斯坦福---机器学习】复习笔记之最优间隔分类器
- 关于Adaboos选择最优弱分类器过程的理解
- VLC和Qt结合编写流媒体rtsp播放器
- 简评骑士与凯尔特人交易对双方影响
- Java判断时间在5分钟的之内方法
- C实现椒盐噪声生成
- LeetCode编程练习
- python肘部法则 最优分类
- Maximum Mean Discrepancy理解
- Oracle基础语法之简单查询
- Android 5.X 新特性详解(二)列表与卡片
- 判断栈的弹出序列是否正确
- OkHttp
- haproxy
- windows server 2008 r2 iis运行MVC项目
- mysql学习总结(一)