机器学习之DBSCAN聚类算法

可以看该博客:https://www.cnblogs.com/aijianiula/p/4339960.html

1、知识点

"""
基本概念:
1、核心对象:某个点的密度达到算法设定的阈值则其为核心点(即r邻域内点的数量不小于minpts)
2、邻域的距离阈值:设定的半径r
3、直接密度可达:某点p在点q的r邻域内,且q是核心点,则表示p-q是直接密度可达
4、噪声点:不属于任何一个类族的点
5、边界点:属于某一个类的非核心点,不能发展下线(即边界点没有密度可达的点)
超参:指定的半径r,密度阈值minpts 算法优势:
1、不需要指定簇个数
2、可以发现任意形状的簇
3、擅长找到离群点(检测任务)
4、两个参数就够了
劣势:
1、高维数据有写困难(可以使用PCA和LDA进行数据降维)
2、参数难以选择(参数对结果的影响非常大)
3、sklearn中效率很慢(数据削减策略) 和K-Mean对比:效果比K-Mean好很多
"""

2、代码案例

#可以对数据进行标准化或者归一化

import  pandas as pd
from sklearn.cluster import KMeans from sklearn.cluster import DBSCAN def KMean():
data = pd.read_csv('data.txt',sep=' ')
X = data[["colum1","column2","column3"]]
km1 = KMeans(n_clusters=3).fit(X)
km1 = KMeans(n_clusters=2).fit(X) print(km1.labels_)#查看聚类的类别
data['cluster']=km1.labels_ #添加一列
print(data.sort_values('cluster'))#按cluster进行排序 #根据cluster,计算均值
print(data.groupby('cluster').mean()) def DBSCAN():
data = pd.read_csv('data.txt', sep=' ')
X = data[["colum1", "column2", "column3"]]
db = DBSCAN(eps=1.0,min_samples=2).fit(X)
labels = db.labels_
data['cluster'] = labels
data.sort_values('cluster') if __name__ == '__main__':
DBSCAN()

3、算法流程

机器学习之DBSCAN聚类算法

上一篇:5.Vue临时上传文件夹


下一篇:Linux系统挂载点与分区的关系(转载)