人工智能——DBSCAN密度聚类,Python数据结构算法面试题

本文介绍了如何使用Python的sklearn库实现DBSCAN密度聚类算法,详细讲解了DBSCAN参数设置,如eps和min_samples,并展示了如何处理数据、进行聚类训练,以及分析聚类结果。此外,还提供了案例分析,包括数据分布与聚类效果的对比,并提供了额外的Python代码示例,用于数据生成和聚类。
摘要由CSDN通过智能技术生成

(1)eps: 两个样本被看作邻居节点的最大距离

(2)min_samples: 簇的样本数

(3)metric:距离计算方式

例:sklearn.cluster.DBSCAN(eps=0.5, min_samples=5, metric=‘euclidean’)

#*=1. 建立工程,导入sklearn相关包=========**

import numpy as np

import sklearn.cluster as skc

from sklearn import metrics

from sklearn.cluster import DBSCAN

import matplotlib.pyplot as plt

#*=2. 读入数据并进行处理=====================**

mac2id = dict() #mac2id是一个字典:key是mac地址value是对应mac地址的上网时长以及开始上网时间

onlinetimes = [] #value:对应mac地址的上网时长以及开始上网时间

f = open(‘TestData.txt’, encoding=‘utf-8’)

for line in f:

mac = line.split(‘,’)[2] #读取每条数据中的mac地址

onlinetime = int(line.split(‘,’)[6]) #上网时长

starttime = int(line.split(‘,’)[4].split(’ ‘)[1].split(’😂[0]) #开始上网时间

if mac not in mac2id: #mac2id是一个字典:key是mac地址value是对应mac地址的上网时长以及开始上网时间

mac2id[mac] = len(onlinetimes)

onlinetimes.append((starttime, onlinetime))

else:

onlinetimes[mac2id[mac]] = [(starttime, onlinetime)]

real_X = np.array(onlinetimes).reshape((-1, 2))

X = real_X[:, 0:1]

#*==3上网时间聚类,创建DBSCAN算法实例,并进行训练,获得标签=**

db = skc.DBSCAN(eps=0.01, min_samples=20).fit(X) # 调 用 DBSCAN 方 法 进 行 训 练 ,labels为每个数据的簇标签

labels = db.labels_

#*=4. 输出标签,查看结果===============================**

print(‘Labels:’) #打印数据被记上的标签,计算标签为-1,即噪声数据的比例。

print(labels)

raito = len(labels[labels[:] == -1]) / len(labels)

print(‘Noise raito:’, format(raito, ‘.2%’))

n_clusters_ = len(set(labels)) - (1 if -1 in labels else 0) #计算簇的个数并打印,评价聚类效果

print(‘Estimated number of clusters: %d’ % n_clusters_)

print(“Silhouette Coefficient: %0.3f” % metrics.silhouette_score(X, labels))

for i in range(n_clusters_): #打印各簇标号以及各簇内数据

print('Cluster ', i, ‘:’)

print(list(X[labels == i].flatten()))

#*5.画直方图,分析实验结果================

  • 26
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值