深入理解算法

  • K均值调包
  • 可视化展示
  • 选取最优K值
    • 手肘法
    • 轮廓系数

K均值调包

# 导入包
from sklearn.cluster import KMeans   # 算法
from sklearn.datasets import load_iris     # 数据集
from sklearn.model_selection import train_test_split    # 数据集划分
from sklearn.metrics import accuracy_score     #评估
from sklearn.preprocessing import StandardScaler   # 标准化
from sklearn.model_selection import GridSearchCV   # 交叉验证网格搜索(没用到)
import numpy as np
import pandas as pdiris = load_iris()    # 加载数据集# 获取特征值和目标值,目标值在这里没什么用
X = iris.data[:, 1:3]
Y = iris.target# 数据分割,测试集为0.2,随机种子2021
X_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=2021)# 实例化一个估计器
estimator = KMeans(n_clusters=3)# 训练模型
estimator.fit(X_train)y_pre = estimator.predict(x_test)print("模型的准确率为:", accuracy_score(y_test, y_pre))

可视化展示

# 导入包
from sklearn.cluster import KMeans   # 算法
from sklearn.datasets import load_iris     # 数据集
from sklearn.model_selection import train_test_split    # 数据集划分
from sklearn.metrics import accuracy_score     #评估
from sklearn.preprocessing import StandardScaler   # 标准化
from sklearn.model_selection import GridSearchCV   # 交叉验证网格搜索(没用到)
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltiris = load_iris()    # 加载数据集# 获取特征值和目标值,目标值在这里没什么用
X = iris.data[:, 1:3]
Y = iris.target# 数据分割,测试集为0.2,随机种子2021
X_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=2021)# 定义了一个函数进行训练和预测
def Kmeans_fun(k):# 实例化一个估计器estimator = KMeans(n_clusters=k)# y_pre = KMeans(n_clusters=k, random_state=2021).fit_predict(X)estimator.fit(X_train)y_pre = estimator.predict(X)return y_precou = 1
plt.figure(figsize=(20, 8), dpi=100)
for i in range(1, 10):y_pre = Kmeans_fun(i)plt.subplot(330 + cou)plt.scatter(X[:, 0], X[:, 1], c=y_pre)cou += 1plt.title("第{0}个中心分类的结果".format(i))

选取最优K值

手肘法

手肘发:肉眼观察K,将每个中心的E进行可视化,选取拐点

# 导入包
from sklearn.cluster import KMeans   # 算法
from sklearn.datasets import load_iris     # 数据集
from sklearn.model_selection import train_test_split    # 数据集划分
from sklearn.metrics import accuracy_score     #评估
from sklearn.preprocessing import StandardScaler   # 标准化
from sklearn.model_selection import GridSearchCV   # 交叉验证网格搜索(没用到)
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltiris = load_iris()    # 加载数据集# 获取特征值和目标值,目标值在这里没什么用
X = iris.data[:, 1:3]
Y = iris.target# 数据分割,测试集为0.2,随机种子2021
X_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=2021)SSE = []
for i in range(2, 10):estimator = KMeans(n_clusters=i)estimator.fit(X_train, y_train)SSE.append(estimator.inertia_)X = range(2,10)
plt.scatter(X, SSE)
plt.plot(X, SSE)
plt.show()

轮廓系数

轮廓系数的值是介于 [-1,1] ,越趋近于1代表内聚度和分离度都相对较优,计算簇内不相似度a(i)(所属的簇的其他对象之间的平均距离) :i向量到同簇内其他点不相似程度的平均值,体现凝聚,计算 簇间不相似度b(i) :i向量到其他簇的平均不相似程度的最小值,体现分离度
si接近1,则说明样本i聚类合理;si接近-1,则说明样本i更应该分类到另外的簇;若si 近似为0,则说明样本i在两个簇的边界上。
将所有点的轮廓系数求平均,就是该聚类结果总的轮廓系数

# 导入包
from sklearn.cluster import KMeans   # 算法
from sklearn.datasets import load_iris     # 数据集
from sklearn.model_selection import train_test_split    # 数据集划分
from sklearn.metrics import accuracy_score     #评估
from sklearn.preprocessing import StandardScaler   # 标准化
from sklearn.model_selection import GridSearchCV   # 交叉验证网格搜索(没用到)
import numpy as np
import pandas as pd
import matplotlib.pyplot as pltiris = load_iris()    # 加载数据集# 获取特征值和目标值,目标值在这里没什么用
X = iris.data[:, 1:3]
Y = iris.target# 数据分割,测试集为0.2,随机种子2021
X_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.2, random_state=2021)from sklearn import metrics
def Kmeans_fun(k):# 实例化一个估计器estimator = KMeans(n_clusters=k)# y_pre = KMeans(n_clusters=k, random_state=2021).fit_predict(X)estimator.fit(X_train)res = estimator.labels_return res
lis = []
for i in range(2, 100):res_label = Kmeans_fun(i)lis.append(metrics.silhouette_score(X_train, res_label, metric='euclidean', sample_size=None, random_state=None))
plt.figure(figsize=(20, 8))
plt.plot(list(range(1,99)),lis)
plt.xlabel("聚类中心的数量")
plt.ylabel("轮廓系数")
plt.title("轮廓系数和聚类中心的关系")
plt.show()


欢迎大家关注我!!!!

Kmeans算法提升相关推荐

  1. 机器学习实战-聚类分析KMEANS算法-25

    KMEANS算法-NBA球队实力聚类分析 from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot ...

  2. 基于改进的K-means算法在共享交通行业客户细分中的应用

    摘要:信息时代的来临使得企业营销焦点从产品中心转变为客户中心,客户关系管理成为企业的核心问题.准确的客户分类结果是企业优化营销资源分配的重要依据,客户分类越来越成为客户关系管理中亟待解决的关键问题之一 ...

  3. 机器学习:K-means算法基本原理及其变种

    目录 1.1.K-means起源 1.2.K-means的意义 1.3.K-means的思想 1.4.K-means的算法流程 1.5.K-means的算法优缺点 2.1.轮廓系数 2.2.k值的确定 ...

  4. 机器学习(二十)无监督学习-K-means算法

    无监督学习 一家广告平台需要根据相似的人口学特征和购买习惯将美国人口分成不同的小组,以便广告客户可以通过有关联的广告接触到他们的目标客户. Airbnb 需要将自己的房屋清单分组成不同的社区,以便用户 ...

  5. 基于python的RFM模型和K-Means算法的用户特征分析

    一.业务背景 2018 年在全球所有零售支出中在线零售支出占 15%.据互联网零售商估计,2018 年全球消费者在网上购买零售商品的支出为 2.86 万亿美元,较上年的 2.43 万亿美元增长 18. ...

  6. KMeans算法( 聚类分析)

    数据集在文末链接 1 聚类分析相关概念 1.1 聚类与分类 分类其实是从特定的数据中挖掘模式,作出判断的过程.比如Gmail邮箱里有垃圾邮件分类器,一开始的时候可能什么都不过滤,在日常使用过程中,我人 ...

  7. CUDA性能优化系列——Kmeans算法调优(二)

    本篇介绍Kmeans算法中计算新的聚类中心部分.这部分主要逻辑:根据计算出的新的分类信息,对全部数据点依次对每个类别求出所属当前类别的数据点个数与坐标和.本质上就是进行规约运算. V1 Atomic实 ...

  8. 机器学习中的聚类算法(1):k-means算法

    一文详解激光点云的物体聚类:https://mp.weixin.qq.com/s/FmMJn2qjtylUMRGrD5telw 引言: Q:什么是聚类算法? 现在我们在做的深度学习当中,比如图像的识别 ...

  9. python实现K-means算法

    K-means算法流程: 随机选k个样本作为初始聚类中心 计算数据集中每个样本到k个聚类中心距离,并将其分配到距离最小的聚类中心 对于每个聚类,重新计算中心 回到2,至得到局部最优解 python代码 ...

  10. Python之机器学习K-means算法实现

    一.前言: 今天在宿舍弄了一个下午的代码,总算还好,把这个东西算是熟悉了,还不算是力竭,只算是知道了怎么回事.今天就给大家分享一下我的代码.代码可以运行,运行的Python环境是Python3.6以上 ...

最新文章

  1. android VectorDrawable使用笔记(五)
  2. 判断一个变量是不是数组
  3. eureka服务下线事件监听(自定义处理逻辑)
  4. matlab给0数组赋值,MATLAB中怎么把一个函数的一部分赋值给一个变量或数组,比如怎么把sin(x)大于0的部分赋值给f....
  5. Java整数缓存-为什么Integer.valueOf(127)== Integer.valueOf(127)为True
  6. Github git clone国内mirror加速
  7. 大数据Hadoop2.x与Hadoop3.x相比较有哪些变化
  8. java 网络序_JAVA 网络程序
  9. C#中virtual与abstract的区别
  10. CentOS6.5安装教程
  11. 移动应用开发学习通测试题答案
  12. vue 刮刮乐抽奖H5项目
  13. My Seventy-seventh Page - 零钱兑换 - By Nicolas
  14. oracle怎么获取到纳秒,macOS C++获取系统时间(纳秒级别)
  15. 利用蒙特卡洛(Monte Carlo)方法计算π值
  16. tableau数据可视化(数据分层、数据分组、数据集)
  17. noi2016旷野大作战
  18. 谈谈目前工作的收获和不足
  19. Matlab代码转换为C重要步骤(Matlab coder (2021a))
  20. Java工程师修炼之路(校招总结)

热门文章

  1. Codesys学习调试笔记2
  2. 软件架构思想和系统架构图
  3. cobar mysql_阿里开源Mysql分布式中间件:Cobar
  4. cobar mysql_mysql分布式中间件cobar
  5. 体脂率在线计算机,体脂率(BFR)计算器
  6. 怎么用计算机测出来体脂,怎么测体脂比较科学
  7. PHP打印九九乘法表
  8. 修改vscode图标
  9. 【第2篇】人工智能(AI)语音测试原理和实践
  10. 遥感数据产品分级体系