机器学习代码实战——KMeans(聚类)
文章目录
- 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(聚类)相关推荐
- r k-means 分类结果_《机器学习》之 Kmeans聚类的原理及代码
1 介绍 聚类算法是机器学习中经典的无监督学习算法,聚类算法有多种:Kmeans.Kmedians.Mean-shift.DBSCAN.层次聚类.EM等. 本文只介绍Kmeans原理及代码,之后会陆续 ...
- kmeans算法_实战 | KMeans 聚类算法
1. 写在前面 如果想从事数据挖掘或者机器学习的工作,掌握常用的机器学习算法是非常有必要的,常见的机器学习算法: 监督学习算法:逻辑回归,线性回归,决策树,朴素贝叶斯,K近邻,支持向量机,集成算法Ad ...
- 大数据进阶必修课!Spark实战KMeans聚类算法
目录 7.SparkMLlib KMeans聚类算法 7.1 KMeans聚类算法 7.2 算法源码分析 7.3 应用实战 7.3.1 数据说明 7.3.2 代码详解 7.SparkMLlib KMe ...
- 机器学习教程 之 K-means聚类:简单有效的聚类方法
聚类是指将数据集中的样本划分为若干个不相交的子集,子集内元素的相似度大,而子集间元素的相似度小.K-means(K均值)聚类是一种非常简单有效.同时解释性也非常强的算法,看了一些相似内容的博客,将这一 ...
- python简单的聚类分析代码_python kmeans聚类简单介绍和实现代码
一.k均值聚类的简单介绍 假设样本分为c类,每个类均存在一个中心点,通过随机生成c个中心点进行迭代,计算每个样本点到类中心的距离(可以自定义.常用的是欧式距离) 将该样本点归入到最短距离所在的类,重新 ...
- 机器学习代码实战——线性回归(多变量)(Linear Regression)
文章目录 1.实验目的 2.导入必要模块并读取数据 3.对数据进行处理 3.1.experience字段数字化 3.2.test_score(out of 10)字段NaN替换为平均数 4.训练+预测 ...
- 机器学习代码实战——PCA(主成分分析)
文章目录 1.主成分分析基本概念 2.代码 1.主成分分析基本概念 2.代码 导入必要的库 import pandas as pd import numpy as np from sklearn.da ...
- 机器学习代码实战——网格搜索和交叉验证(GridSearchCV)
文章目录 1.实验目的 2.导入必要模块并读取数据 3.构建模型-参数字典 4.训练 5.打印不同模型.不同参数对应的结果 1.实验目的 (1)运用GridSearchCV比较不同的模型.不同的参数对 ...
- 机器学习代码实战——朴素贝叶斯(实现垃圾邮件分类)
文章目录 1.实验目的 2.导入必要模块并读取数据 3.训练+预测 4.使用Sklearn Pipeline方法 1.实验目的 (1)分析邮件数据并对数据进行预处理 (2)运行朴素贝叶斯模型对邮件进行 ...
最新文章
- mdk编译后的HTML,[转载]keil MDK编译完成后,Program Size:
- PhotoShop算法原理解析系列 - 像素化---》碎片。
- python打开并读取csv文件_!python3中使用使用read_csv( )读取csv文件,文件路径中含有中文,无法读取怎么处理?...
- MySQL(8)数据库中的高级(进阶)正则和存储过程
- String, StringBuilder 与StringBuffer的区别与联系
- wmode解决flash透明及层深问题
- BugkuCTF-WEB题alert
- 【干货】信息技术应用创新产业深度研究:204页报告深度解析信创产业全景图.pdf(附下载链接)...
- 安装选择Arduino Leonardo新手入门体验
- 干货 | 这是一份你急需的数据分析的职业规划
- 代理服务器与反向代理服务器
- 2022.8.16-8.18深圳核芯物联作为唯一的蓝牙AOA定位基站厂家受邀参加第十届中国电子信息博览会
- Codeforces Round #622 (Div. 2) C2. Skyscrapers (hard version)(单调栈)
- 电脑运行速度(卡不卡)的决定因素
- java Thread的start和run方法的区别
- 数商云:补齐数字化短板,农林牧渔供应链升级执行“三步走”
- Android q索尼手机相机算法,手机厂商套路太多!竟在手机摄像头上玩“掩眼法”?...
- C语言解一元二次方程
- java 找出所有水仙花数,java 水仙花数 所有的
- 3DSMax怎么设置摄像机参数_3DSMax设置摄像机参数 小白教程
热门文章
- ccs 移植创建新工程_CCS新工程创建与配置
- SLAM之g2o安装
- 【操作系统/OS笔记15】死锁的系统模型,死锁的处理办法,银行家算法与死锁检验算法
- 【数据结构笔记11】二叉搜索树,动态查找,删除操作
- php记住用户名功能,php使用cookie实现记住用户名和密码实现代码
- linux瘦身软件下载,瘦身相机APP全新安卓版下载-瘦身相机APPV1.3.0-Linux公社
- 用于构建高级媒体应用程序的工具
- java面试题 返回值类型不同,可以重载吗,为什么?
- java向上向下取整与四舍五入
- [存档]xx-09210xxx-2010-ACM-ICPC竞赛总结