【转】利用python的KMeans和PCA包实现聚类算法
转自: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 plt df=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()



【转】利用python的KMeans和PCA包实现聚类算法的更多相关文章
- 利用python的KMeans和PCA包实现聚类算法
题目: 通过给出的驾驶员行为数据(trip.csv),对驾驶员不同时段的驾驶类型进行聚类,聚成普通驾驶类型,激进类型和超冷静型3类 . 利用Python的scikit-learn包中的Kmeans算法 ...
- 机器学习实战之 第10章 K-Means(K-均值)聚类算法
第 10 章 K-Means(K-均值)聚类算法 K-Means 算法 聚类是一种无监督的学习, 它将相似的对象归到一个簇中, 将不相似对象归到不同簇中.相似这一概念取决于所选择的相似度计算方法.K- ...
- 【机器学习实战】第 10 章 K-Means(K-均值)聚类算法
第 10 章 K-Means(K-均值)聚类算法 K-Means 算法 聚类是一种无监督的学习, 它将相似的对象归到一个簇中, 将不相似对象归到不同簇中.相似这一概念取决于所选择的相似度计算方法.K- ...
- 【机器学习实战】第10章 K-Means(K-均值)聚类算法
第 十 章 K-Means(K-均值)聚类算法 K-Means 算法 聚类是一种无监督的学习, 它将相似的对象归到一个簇中, 将不相似对象归到不同簇中.相似这一概念取决于所选择的相似度计算方法.K-M ...
- K-Means聚类算法原理
K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛.K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体 ...
- 一步步教你轻松学K-means聚类算法
一步步教你轻松学K-means聚类算法(白宁超 2018年9月13日09:10:33) 导读:k-均值算法(英文:k-means clustering),属于比较常用的算法之一,文本首先介绍聚类的理 ...
- 利用Python进行数据分析(7) pandas基础: Series和DataFrame的简单介绍
一.pandas 是什么 pandas 是基于 NumPy 的一个 Python 数据分析包,主要目的是为了数据分析.它提供了大量高级的数据结构和对数据处理的方法. pandas 有两个主要的数据结构 ...
- 利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
一.NumPy 是什么 NumPy 是 Python 科学计算的基础包,它专为进行严格的数字处理而产生.在之前的随笔里已有更加详细的介绍,这里不再赘述. 利用 Python 进行数据分析(一)简单介绍 ...
- 利用Python进行数据分析(1) 简单介绍
一.处理数据的基本内容 数据分析 是指对数据进行控制.处理.整理.分析的过程. 在这里,“数据”是指结构化的数据,例如:记录.多维数组.Excel 里的数据.关系型数据库中的数据.数据表等. 二.说说 ...
随机推荐
- STM32F4 MDK5软件仿真 error : no 'read' permission
问题描述 CPU:STM32F407 MDK5软件模拟提示没有读写权限,只能一步一步运行.提示代码如下: *** error 65: access violation at 0x40023800 : ...
- oracle创建用户、授权、导入、导出命令总结
1.创建用户 需要先用system用户登录数据库,因为system用户具有创建其他用户的权限. 语法[创建用户]: create user 用户名 identified by 口令[即密码]: 例子: ...
- Error running tomcatUnable to open debugger port (127.0.0.1 50181) java.net.B
1.把tomcat删除,重新建一个,tomcat就会重新自动使用一个端口了 2.自己手动调一下端口 我用的是第二种,手动调了下,最开始的端口是:50181,该成了50182,就可以了.
- element-ui select组件中复选时以字符串形式显示
我使用的element-ui的版本是1.4.13. 如上图所示,使用el-select组件,要实现可搜索.可复选.可创建条目时,展示样式是如上图所示,输入框的高度会撑开,影响页面布局,按照产品的需求, ...
- 【读书笔记】iOS-加速计与陀螺仪
一,数据的“滤波” 直接从加速度计获得的原始数据,往往不能直接使用,而是需要去除一些干扰数据,这个过程称为“滤波”.“滤波”一词来源于无线电技术中对无线电信号的处理过程.事实上从数学角度而言它们是一样 ...
- http-server服务跨域设置
http-server --cors -p 9999 ------------------------------------------------------------------------- ...
- 二层协议--MPLS协议总结
1.MPLS是介于2层和3层之间的协议,主要应用在城域网中,作为集客专线.基站等承载VPN技术的关键技术. 2.MPLS利用MPLS标签进行转发,先通过IP单播路由的方式沿途分配好MPLS标签,分配完 ...
- Spring 12 种 常用注解!
1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controller ...
- 简单易懂的程序语言入门小册子(1):基于文本替换的解释器,lambda演算
最近比较闲,打算整理一下之前学习的关于程序语言的知识.主要的内容其实就是一边设计程序语言一边写解释器实现它.这些知识基本上来自Programming Languages and Lambda Calc ...
- windwos安装RabbitMQ
目录 windows 安装RabbitMQ 安装erlang 安装rabbitmq 添加windows环境变量 检测rabbitmq状态 启动web管理插件 rabbitmq服务 windows 安装 ...