转自:https://www.cnblogs.com/yjd_hycf_space/p/7094005.html


题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 。 利用Python的scikit-learn包中的Kmeans算法进行聚类算法的应用练习。并利用scikit-learn包中的PCA算法来对聚类后的数据进行降维,然后画图展示出聚类效果。通过调节聚类算法的参数,来观察聚类效果的变化,练习调参。

数据介绍: 选取某一个驾驶员的经过处理的数据集trip.csv,将该驾驶人的各个时间段的特征进行聚类。(注:其中的driver 和trip_no 不参与聚类)

字段介绍: driver :驾驶员编号;trip_no:trip编号;v_avg:平均速度;v_var:速度的方差;a_avg:平均加速度;a_var:加速度的方差;r_avg:平均转速;r_var:转速的方差; v_a:速度level为a时的时间占比(同理v_b , v_c , v_d ); a_a:加速度level为a时的时间占比(同理a_b, a_c); r_a:转速level为a时的时间占比( r_b, r_c)

聚类算法要求

(1)统计各个类别的数目

(2)找出聚类中心

(3)将每条数据聚成的类别(该列命名为jllable )和原始数据集进行合并,形成新的dataframe,命名为new_df ,并输出到本地,命名为new_df.csv。

降维算法要求:

(1)将用于聚类的数据的特征的维度降至2维,并输出降维后的数据,形成一个dataframe名字new_pca

(2)画图来展示聚类效果(可用如下代码):

 import matplotlib.pyplot asplt

d = new_pca[new_df['jllable'] == 0]

plt.plot(d[0], d[1], 'r.')

d = new_pca[new_df['jllable'] == 1]

plt.plot(d[0], d[1], 'go')

d = new_pca[new_df['jllable'] == 2]

plt.plot(d[0], d[1], 'b*')

plt.gcf().savefig('D:/workspace/python/Practice/ddsx/kmeans.png')

plt.show()

python实现代码如下:

from sklearn.cluster import KMeans
from sklearn.decomposition import PCA
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltdf=pd.read_csv('trip.csv', header=0, encoding='utf-8')
df1=df.ix[:,2:]
kmeans = KMeans(n_clusters=3, random_state=10).fit(df1)
df1['jllable']=kmeans.labels_
df_count_type=df1.groupby('jllable').apply(np.size)##各个类别的数目
df_count_type
##聚类中心
kmeans.cluster_centers_
##新的dataframe,命名为new_df ,并输出到本地,命名为new_df.csv。
new_df=df1[:]
new_df
new_df.to_csv('new_df.csv')##将用于聚类的数据的特征的维度降至2维,并输出降维后的数据,形成一个dataframe名字new_pca
pca = PCA(n_components=2)
new_pca = pd.DataFrame(pca.fit_transform(new_df))##可视化
d = new_pca[new_df['jllable'] == 0]
plt.plot(d[0], d[1], 'r.')
d = new_pca[new_df['jllable'] == 1]
plt.plot(d[0], d[1], 'go')
d = new_pca[new_df['jllable'] == 2]
plt.plot(d[0], d[1], 'b*')
plt.gcf().savefig('kmeans.png')
plt.show()

  

转载于:https://www.cnblogs.com/xianhan/p/10644891.html

【转】利用python的KMeans和PCA包实现聚类算法相关推荐

  1. python音频聚类_利用python的KMeans和PCA包实现聚类算法

    题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...

  2. 利用 Python 实现 K-means 算法

    利用 Python 实现 K-means 算法   使用 Python 实现K-means算法,采用随机函数随机在二维平面上生成100个点,然后使用所写程序对这100个点进行聚类[可以采用SSE(Su ...

  3. 机器学习(九) K-Means(K-均值)聚类算法介绍

    K-Means(K-均值)聚类算法介绍 监督学习和无监督学习 无监督学习和监督学习是机器学习最基本的两种类型.在理解聚类算法前必须了解这两类两种类型直接的差别 监督学习(supervised lear ...

  4. [Python与图像处理]利用Python与Kmeans聚类分析图像主色彩

    如何使用OpenCV,Python和k-means聚类算法来查找图像中最主要的颜色   该任务可用于分析一张优秀摄影作品的色彩分布,并建立色卡图,将其用于本地调色. K-Means聚类,那么k-mea ...

  5. 利用Python实现K-Means聚类并进行图形化展示

    利用K-means进行聚类,显示聚类结果的各类别的数量,最终进行图形化展示 . import pandas as pd import numpy as np import matplotlib.pyp ...

  6. python 聚类算法包_Python聚类算法之DBSACN实例分析 python怎么用sklearn包进行聚类

    python 怎么可视化聚类的结果 science 发表的聚类算法的python代码 测试数据长什...说明你的样本数据中有nan值,通常是因为原始数据中包含空字符串或None值引起的. 解决办法是把 ...

  7. kmeans鸢尾花分类python代码_python实现鸢尾花三种聚类算法(K-means,AGNES,DBScan)

    一.分散性聚类(kmeans) 算法流程: 1.选择聚类的个数k. 2.任意产生k个聚类,然后确定聚类中心,或者直接生成k个中心. 3.对每个点确定其聚类中心点. 4.再计算其聚类新中心. 5.重复以 ...

  8. Python数据挖掘与机器学习,快速掌握聚类算法和关联分析

    摘要:前文数据挖掘与机器学习技术入门实战与大家分享了分类算法,在本文中将为大家介绍聚类算法和关联分析问题.分类算法与聚类到底有何区别?聚类方法应在怎样的场景下使用?如何使用关联分析算法解决个性化推荐问 ...

  9. K-Means(K-均值)聚类算法

    聚类 聚类,简单来说,就是将一个庞杂数据集中具有相似特征的数据自动归类到一起,称为一个簇,簇内的对象越相似,聚类的效果越好.它是一种无监督的学习(Unsupervised Learning)方法,不需 ...

最新文章

  1. 美丽的闭包,在js中实现函数重载
  2. Qt5.3.2openglVS2010_QSqlField_字段类型
  3. sklearn学习(二)
  4. Oracle中Cursor介绍
  5. kali-linux nat模式下无法联网问题
  6. php接收get参数false是字符串,php解析url (parse_url) 参数成数组 (parse_str)
  7. jQuery特效手风琴特效 手写手风琴网页特效
  8. 马哥学习李洋个人笔记之-----正则表达式
  9. 生活中有哪些越早明白越好的道理
  10. tcp网络示例服务器端以及代码,演示
  11. CCS(Code Composer Studio) 的下载、安装和导入工程
  12. Ubuntu下使用苹果Monaco字体
  13. [黑客入门全程图解].吴自容,武新华.等编著.文字版,精确还原
  14. 施耐德 m340 编程手册_工控安全研究系列(一)施耐德PLC 140CPU 65150
  15. ABYY OCR 文字识别软件 V15. 安装教程
  16. 硬盘柱面损坏怎么办_电脑硬盘坏了怎么办?不花一分钱就能成功修复!
  17. 亚马逊AWS命令行 aws cli
  18. 【细胞分割】基于阙值+边缘+形态学+种子点图像分割matlab源码含 GUI
  19. halcon循环语句,条件句结构格式
  20. cocos2d-x自代的Json库解析json(转)

热门文章

  1. git查看之前的提交日志
  2. 属性值动态调整_这可能是你见过最牛的CAD粗糙度动态块了!
  3. ensp安装对电脑配置要求高吗_直线导轨有哪些安装方法?为什么直线导轨安装精度要求高?...
  4. 电脑pro,大师屏幕,小米归来!小米笔记本Pro 15 OLED首发评测
  5. linux默认的https端口,如何在Ubuntu 18.04 Bionic Beaver Linux上拒绝除HTTP端口80和HTTPS端口443之外的所有传入端口...
  6. android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例
  7. mysql 实例启动利用binlog恢复_mysql利用binlog进行数据恢复
  8. java fx border_JavaFx UI控件与代码间的绑定方法
  9. Java摩托车汽车轮胎数量,摩托车轮子上的知识,你知道多少?
  10. android从服务检查,android开发分享Android:你如何检查是否启用了特定的AccessibilityService...