机器学习:聚类

K-means的应用

数据介绍:
现有1999年全国31个省份城镇居民家庭平均每人全年消费性支出的八个主要变量数据,这八个变量分别是:食品、衣着、家庭设备用品及服务、医疗保健、交通和通讯、娱乐教育文化服务、居住以及杂项商品和服务。利用已有数据,对31个省份进行聚类。
实验目的:
通过聚类,了解1999年各个省份的消费水平在国内的情况。
技术路线:sklearn.cluster.Kmeans
实现过程:
1.建立工程,导入sklearn相关包。

import numpy as np
from sklearn.clueter import KMeans

2.加载数据,创建K-means算法实例,并进行训练,获得标签:
机器学习:聚类_第1张图片
调用K-Means方法所需参数:
1.n_clusters:用于指定聚类中心的个数
2.init:初始聚类中心的初始化方法
3.max_iter:最大的迭代次数
4.一般调用时只用给出n_clusters即可,init默认是k-means++,max_iter默认是300
其他参数:
1.data:加载的数据
2.label:聚类后各数据所属的标签
3.fit_predict():计算簇中心以及为簇分配序号

重点方法解释:
data,cityName = loadData(‘city.txt’)

def loadData(filepath):
	fr = open(filePath,'r+')
	lines = fr.readlines()
	retData = []
	retCityName = []
	for line in lines:
		items = line.strip().split(",")
		retCityName.append(items[0])
		retData.append([float(itrms[i]) for i in range(1,len(items))])
	return retData,retCityName
	
		

PS:
1.r+:读写打开一个文本文件
2. .readlines() 一次读取整个文件类似于.read())
3.retCityName:用来存储城市名称
4.retData:用来存储城市的各项消费信息
5.返回值:返回城市名称,以及该城市的各项消费信息。

机器学习:聚类_第2张图片
3.输出标签,查看结果
将城市按照消费水平n_clueters类,消费水平相近的城市聚集在一类中。
expense:聚类中心点的数值相加,也就是平均消费水平。
聚成2类:km = KMeans(n_clueters=2)
机器学习:聚类_第3张图片
聚成3类:km = KMeans(n_clusters=3)
机器学习:聚类_第4张图片
聚成4类:km = KMeans(n_clusters=4)
机器学习:聚类_第5张图片

拓展&&改进
计算两条数据相似性时,Sklearn的K-Means默认用的是欧式距离。虽然还有余弦相似度,马氏距离等多种方法,但没有设定计算距离方法的参数。
机器学习:聚类_第6张图片

DBSCAN密度聚类

DBSCAN算法是一种基于密度的聚类算法:
1.聚类的时候不需要预先指定簇的个数
2.最终的簇的个数不定
DBSCAN算法将数据点分为三类:
1.核心点:在半径Eps内含有超过MinPts数目的点
2.边界点:在半径Eps内点的数量小于MinPts,但是落在核心点的领域内
噪音点:既不是核心点也不是边界点的点
DBSCAN算法流程:
1.将所有点标记为核心点、边界点或噪声点;
2.删除噪声点;
3.为距离在Eps之内的所有核心点之间赋予一条边;
4.每组连通的核心点形成一个簇
5.将每个边界点指派到一个与之关联的核心点的簇中(哪一个核心点的半径范围之内)

举例:有如下13个样本点,使用DBSCAN进行聚类
机器学习:聚类_第7张图片
1.取Eps=3,MinPts=3,依据DBSACN对所有思安进行聚类(曼哈顿距离)
2.对每个点计算其领域Eps=3内的点的集合
3.集合内点的个数超过MinPts=3的点位核心点
4.查看剩余点是否在核心点的领域内,若在,则为边界点,否则为噪声点
5.将距离不超过Eps=3的点相互连接,构成一个簇,核心点领域内的点也会被加入到这个簇中
机器学习:聚类_第8张图片
数据介绍
现有大学校园网的日志数据,290条大学生的校园网使用情况数据,数据包括用户ID,设备的MAC地址,IP地址,开始上网时间,停止上网时间,上网时长,校园网套餐等。利用已有数据,分析学生上网的模式。

实验目的
通过DBSCAN聚类,分析学生上网时间和上网时长的模式。
技术路线
sklearn.cluster.DBSCAN
机器学习:聚类_第9张图片
实验过程
机器学习:聚类_第10张图片
1.建立工程,导入sklearn相关包

import numpy as np
from sklearn.cluster import DBSCAN

DBSCAN主要参数:
1.eps:两个样本被看作邻居节点的最大距离
2.min_samples:簇的样本数
3.metric:距离计算方式
例如:sklearn.clueter.DBSCAN(eps=0.5,min_samples=5,metric=‘euclidean’)
2.读入数据并进行处理
机器学习:聚类_第11张图片
3-1.上网时间聚类,创建DBSCAN算法实例,并进行训练,获得标签:
机器学习:聚类_第12张图片

4.输出标签,查看结果
机器学习:聚类_第13张图片
3-2.上网时长聚类,创建DBSCAN算法实例,并进行训练,获得标签:
机器学习:聚类_第14张图片
4-2输出标签,查看结果
机器学习:聚类_第15张图片
机器学习:聚类_第16张图片

你可能感兴趣的:(python,聚类,算法)