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

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 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退