首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于分类的DBSCAN聚类在每个簇内形成

基于分类的DBSCAN聚类在每个簇内形成
EN

Data Science用户
提问于 2022-11-07 04:24:14
回答 1查看 75关注 0票数 0

我用的是DBSCAN algo。论“皮马印度糖尿病”

对数据进行聚类。另外,我还希望在每个聚类中使用分类算法,比较每个聚类的准确性,并对大多数聚类进行预测。请帮助降低eps的价值,它给出了这个观点。

代码语言:javascript
复制
    import pandas as pd
    from sklearn.preprocessing import LabelEncoder 
    from sklearn.preprocessing import StandardScaler
    from sklearn.cluster import DBSCAN
    import seaborn as sns
    import matplotlib.pyplot as plt 
    data = pd.read_csv('diabetes.csv')
    data = pd.DataFrame(data)
    data = StandardScaler().fit_transform(data)
    clustering = DBSCAN(eps=0.01, min_samples=10).fit(data)
    clusters = len(set(clustering.labels_))
    print("number of clusters : ", clusters)

    def show_clusters(data, clusters):
        df = pd.DataFrame(dict(x=data[:,0], y=data[:,1],            
        label=clusters))
        colors = {-1:'black', 0:'blue', 1:'skyblue', 2:'orange', 
        3:'yellow', 4:'pink', 5:'red'}
        fig, ax = plt.subplots(figsize=(6,6))
        grouped = df.groupby('label')

for key, group in grouped:
    group.plot(ax=ax, kind='scatter', x='x', y='y', label=key, 
    color=colors[key])

plt.xlabel('x')
plt.ylabel('y')
plt.show()

Show_clusters(数据、集群)

糖尿病数据集链接

EN

回答 1

Data Science用户

发布于 2022-11-16 06:19:14

需要作出两项修改:

  1. EPS需要提高,这样您就可以有更大的距离来覆盖更多。

如上图所示,EPS不能太低或太高。

  1. 在单个grpah中绘制所有集群,以便进行更好的比较。在data = pd.DataFrame( data ) data= StandardScaler().fit_transform(data)群集= DBSCAN(eps=1,min_samples=10).fit(data) print(“群集数:",len(set(clustering.labels_) def show_clusters(数据,集群)下面添加代码: df = pd.DataFrame(dict(x=data*0,y=data*1,label=clusters))ax = plt.subplots(figsize=(12,6)) ax.scatter(df.iloc*0,df.iloc*1,c= df.label) plt.xlabel('x') plt.ylabel('y') plt.show() show_clusters(data,clustering.labels_)
票数 0
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/115951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档