algorithm6 2022-05-02 16:29 采纳率: 76.2%
浏览 2877
已结题

Number of labels is 1. Valid values are 2 to n_samples - 1 (inclusive)

我在编写DBSCAN聚类的程序

import matplotlib.pyplot as plt  # 导入matplotlib的库
import numpy as np  # 导入numpy的包
import pandas as pd
from sklearn.cluster import DBSCAN  # 引入DBSCAN模块
from sklearn import metrics  # 调用评价指标


data = pd.read_csv('Wine_data.csv', header=None, encoding='GB2312')  # 必须要中文解码,设置encoding = ‘GB2312’
wine = data.drop([0], axis=0)
X = np.array(wine)
X = X[:, :11]  # 表示我们取特征空间中的11个维度
print(X)
print(X.shape)  # 打印出X的尺寸大小

print("===DBSCAN聚类===")
dbscan = DBSCAN(eps=0.4, min_samples=9).fit(X)  # 导入DBSCAN模块进行训练
label_pred = dbscan.labels_  # labels为每个数据的簇标签
plt.subplot(2, 2, 3)  # 创建单个子图,单个子图中包含4个区域,相应的区域在左下角。
x0 = X[label_pred == 0]  # 获取聚类标签等于0的话,则赋值给x0
x1 = X[label_pred == 1]  # 获取聚类标签等于1的话,则赋值给x1
x2 = X[label_pred == 2]  # 获取聚类标签等于2的话,则赋值给x2
plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='o', label='label0')  # 画label0的散点图
plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1')  # 画label1的散点图
plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='+', label='label2')  # 画label2的散点图
plt.xlabel('DBSCAN')  # 设置X轴的标签为DBSCAN
plt.legend(loc=2)  # 设置图标在左上角bel_pred)
print(label_pred)
score = metrics.silhouette_score(X, label_pred, metric="euclidean")  # 使用轮廓系数
print(score)  # 打印出轮廓系数

这是运行结果:

img

请问是什么原因导致的

  • 写回答

3条回答 默认 最新

  • CSDN专家-HGJ 2022-05-02 23:39
    关注

    对代码中这行,dbscan = DBSCAN(eps=0.4, min_samples=9).fit(X) ,调整一下它的参数,比如这样试试:

    dbscan = DBSCAN(eps=4, min_samples=9).fit(X)
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 创建了问题 5月2日

悬赏问题

  • ¥15 c语言怎么用printf(“\b \b”)与getch()实现黑框里写入与删除?
  • ¥20 怎么用dlib库的算法识别小麦病虫害
  • ¥15 华为ensp模拟器中S5700交换机在配置过程中老是反复重启
  • ¥15 java写代码遇到问题,求帮助
  • ¥15 uniapp uview http 如何实现统一的请求异常信息提示?
  • ¥15 有了解d3和topogram.js库的吗?有偿请教
  • ¥100 任意维数的K均值聚类
  • ¥15 stamps做sbas-insar,时序沉降图怎么画
  • ¥15 买了个传感器,根据商家发的代码和步骤使用但是代码报错了不会改,有没有人可以看看
  • ¥15 关于#Java#的问题,如何解决?