文章目录

  • 1.实验目的
  • 2.导入必要模块
  • 3.用pandas处理数据
  • 4.拟合+预测
  • 5.把预测结果合并到DF
  • 6.可视化聚类效果
  • 7.比较不同的簇数的均方误差
  • 8.对数据归一化处理

1.实验目的

1.使用sklearn库中的鸢尾花数据集,并尝试使用花瓣的宽度和长度特征来形成
2. 为简单起见,删除其他两个特征。
3. 找出是否有任何预处理(例如缩放)可以帮助解决问题,绘制肘部曲线,从中得出k的最佳值

2.导入必要模块

from sklearn.cluster import KMeans    #从sklearn导入KMeans算法
import pandas as pd
from sklearn.preprocessing import MinMaxScaler  #数据预处理中的缩放模块
from matplotlib import pyplot as plt
from sklearn.datasets import load_iris    #从sklearn导入iris数据
%matplotlib inline

3.用pandas处理数据

iris = load_iris()
df = pd.DataFrame(iris.data, columns=iris.feature_names) #构建df
df.drop(['sepal length (cm)','sepal width (cm)'],axis = 'columns',inplace = True)   #只取两个特征,故把另外两个特征drop掉
df.head()    #打印前5条记录检验操作是否正确

4.拟合+预测

km = KMeans(n_clusters=3)   #设定超参数聚类数为3
y_predicted = km.fit_predict(df)   #拟合+预测
y_predicted    #打印聚类结果(0表示第1个簇,1表示第2个簇,2表示第3个簇)

5.把预测结果合并到DF

df['cluster'] = y_predicted
df.head()

6.可视化聚类效果

df1 = df[df.cluster==0]  #过滤出簇0
df2 = df[df.cluster==1]  #过滤出簇1
df3 = df[df.cluster==2]  #过滤出簇2plt.scatter(df1['petal length (cm)'],df1['petal width (cm)'],color='blue')   #画簇0的散点图
plt.scatter(df2['petal length (cm)'],df2['petal width (cm)'],color='green')  #画簇1的散点图
plt.scatter(df3['petal length (cm)'],df3['petal width (cm)'],color='yellow') #画簇2的散点图
plt.scatter(km.cluster_centers_[:,0],km.cluster_centers_[:,1],color='red',marker='+',label='centroid')  #画每个簇的中心

7.比较不同的簇数的均方误差

distance = []
for k in range(1,11):km = KMeans(n_clusters=k)km.fit(df[['petal length (cm)','petal width (cm)']])distance.append(km.inertia_)plt.xlabel('K')
plt.ylabel('Sum of squared error')
plt.plot(range(1,11),distance)


效果如图:均方误差图形像一个手臂,一般在肘部为k的最佳值。

8.对数据归一化处理

有时,由于数据的取值范围不同会影响聚类的效果,因此在拟合数据前,我们最好对数据进行归一化。只需在步骤4前加如下代码。

scaler = MinMaxScaler()scaler.fit(df[['petal length (cm)']])   #计算用于以后缩放的最小值和最大值
df['petal length (cm)'] = scaler.transform(df[['petal length (cm)']])  #根据feature_range缩放X的特征
scaler.fit(df[['petal width (cm)']])
df['petal width (cm)'] = scaler.transform(df[['petal width (cm)']])

效果:

机器学习代码实战——KMeans(聚类)相关推荐

  1. r k-means 分类结果_《机器学习》之 Kmeans聚类的原理及代码

    1 介绍 聚类算法是机器学习中经典的无监督学习算法,聚类算法有多种:Kmeans.Kmedians.Mean-shift.DBSCAN.层次聚类.EM等. 本文只介绍Kmeans原理及代码,之后会陆续 ...

  2. kmeans算法_实战 | KMeans 聚类算法

    1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...

  3. 大数据进阶必修课!Spark实战KMeans聚类算法

    目录 7.SparkMLlib KMeans聚类算法 7.1 KMeans聚类算法 7.2 算法源码分析 7.3 应用实战 7.3.1 数据说明 7.3.2 代码详解 7.SparkMLlib KMe ...

  4. 机器学习教程 之 K-means聚类:简单有效的聚类方法

    聚类是指将数据集中的样本划分为若干个不相交的子集,子集内元素的相似度大,而子集间元素的相似度小.K-means(K均值)聚类是一种非常简单有效.同时解释性也非常强的算法,看了一些相似内容的博客,将这一 ...

  5. python简单的聚类分析代码_python kmeans聚类简单介绍和实现代码

    一.k均值聚类的简单介绍 假设样本分为c类,每个类均存在一个中心点,通过随机生成c个中心点进行迭代,计算每个样本点到类中心的距离(可以自定义.常用的是欧式距离) 将该样本点归入到最短距离所在的类,重新 ...

  6. 机器学习代码实战——线性回归(多变量)(Linear Regression)

    文章目录 1.实验目的 2.导入必要模块并读取数据 3.对数据进行处理 3.1.experience字段数字化 3.2.test_score(out of 10)字段NaN替换为平均数 4.训练+预测 ...

  7. 机器学习代码实战——PCA(主成分分析)

    文章目录 1.主成分分析基本概念 2.代码 1.主成分分析基本概念 2.代码 导入必要的库 import pandas as pd import numpy as np from sklearn.da ...

  8. 机器学习代码实战——网格搜索和交叉验证(GridSearchCV)

    文章目录 1.实验目的 2.导入必要模块并读取数据 3.构建模型-参数字典 4.训练 5.打印不同模型.不同参数对应的结果 1.实验目的 (1)运用GridSearchCV比较不同的模型.不同的参数对 ...

  9. 机器学习代码实战——朴素贝叶斯(实现垃圾邮件分类)

    文章目录 1.实验目的 2.导入必要模块并读取数据 3.训练+预测 4.使用Sklearn Pipeline方法 1.实验目的 (1)分析邮件数据并对数据进行预处理 (2)运行朴素贝叶斯模型对邮件进行 ...

最新文章

  1. mdk编译后的HTML,[转载]keil MDK编译完成后,Program Size:
  2. PhotoShop算法原理解析系列 - 像素化---》碎片。
  3. python打开并读取csv文件_!python3中使用使用read_csv( )读取csv文件,文件路径中含有中文,无法读取怎么处理?...
  4. MySQL(8)数据库中的高级(进阶)正则和存储过程
  5. String, StringBuilder 与StringBuffer的区别与联系
  6. wmode解决flash透明及层深问题
  7. BugkuCTF-WEB题alert
  8. 【干货】信息技术应用创新产业深度研究:204页报告深度解析信创产业全景图.pdf(附下载链接)...
  9. 安装选择Arduino Leonardo新手入门体验
  10. 干货 | 这是一份你急需的数据分析的职业规划
  11. 代理服务器与反向代理服务器
  12. 2022.8.16-8.18深圳核芯物联作为唯一的蓝牙AOA定位基站厂家受邀参加第十届中国电子信息博览会
  13. Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈)
  14. 电脑运行速度(卡不卡)的决定因素
  15. java Thread的start和run方法的区别
  16. 数商云:补齐数字化短板,农林牧渔供应链升级执行“三步走”
  17. Android q索尼手机相机算法,手机厂商套路太多!竟在手机摄像头上玩“掩眼法”?...
  18. C语言解一元二次方程
  19. java 找出所有水仙花数,java 水仙花数 所有的
  20. 3DSMax怎么设置摄像机参数_3DSMax设置摄像机参数 小白教程

热门文章

  1. ccs 移植创建新工程_CCS新工程创建与配置
  2. SLAM之g2o安装
  3. 【操作系统/OS笔记15】死锁的系统模型,死锁的处理办法,银行家算法与死锁检验算法
  4. 【数据结构笔记11】二叉搜索树,动态查找,删除操作
  5. php记住用户名功能,php使用cookie实现记住用户名和密码实现代码
  6. linux瘦身软件下载,瘦身相机APP全新安卓版下载-瘦身相机APPV1.3.0-Linux公社
  7. 用于构建高级媒体应用程序的工具
  8. java面试题 返回值类型不同,可以重载吗,为什么?
  9. java向上向下取整与四舍五入
  10. [存档]xx-09210xxx-2010-ACM-ICPC竞赛总结