# DBSCAN Clustering # Importing the libraries import numpy as np import pandas as pd # Importing the dataset dataset = pd.read_csv('D:\电池诊断\Mall_Customers.csv')#读取数据集合(csv文件) X = dataset.iloc[:, [3, 4]].values#自变量 # Using the elbow method to find the optimal number of clusters from sklearn.cluster import DBSCAN dbscan=DBSCAN(eps=3,min_samples=4) # Fitting the model model=dbscan.fit(X) labels=model.labels_ from sklearn import metrics #identifying the points which makes up our core points sample_cores=np.zeros_like(labels,dtype=bool) sample_cores[dbscan.core_sample_indices_]=True #Calculating the number of clusters n_clusters=len(set(labels))- (1 if -1 in labels else 0) print(metrics.silhouette_score(X,labels))
时间: 2024-01-28 20:05:36 浏览: 114
这段代码使用 DBSCAN 聚类算法对一个商场顾客数据集进行聚类,并使用轮廓系数评估聚类结果的质量。
具体步骤如下:
1. 导入需要的库,包括 numpy 和 pandas 用于数据处理,sklearn.cluster 中的 DBSCAN 用于聚类,sklearn 中的 metrics 用于评估聚类结果的质量。
2. 读取数据集,将数据集中第4列和第5列作为自变量 X。
3. 使用 DBSCAN 算法进行聚类,其中 eps 参数指定了邻域的半径,min_samples 参数指定了一个样本被认为是核心点所需的邻域内的最小样本数。
4. 使用轮廓系数对聚类结果进行评估,得到聚类结果的质量。
代码中还计算了聚类结果中的核心点,并统计了聚类的数量。
需要注意的是,这段代码中的路径 `'D:\电池诊断\Mall_Customers.csv'` 可能需要根据你的文件路径进行修改。
如果你想绘制聚类结果的图形,可以参考下面这段代码:
```python
import matplotlib.pyplot as plt
# Plotting the clusters
plt.scatter(X[labels==0,0],X[labels==0,1],s=50,color='red',label='Cluster 1')
plt.scatter(X[labels==1,0],X[labels==1,1],s=50,color='blue',label='Cluster 2')
plt.scatter(X[labels==2,0],X[labels==2,1],s=50,color='green',label='Cluster 3')
plt.scatter(X[labels==-1,0],X[labels==-1,1],s=50,color='yellow',label='Noise')
plt.title('Clusters of customers')
plt.xlabel('Annual Income (k$)')
plt.ylabel('Spending Score (1-100)')
plt.legend()
plt.show()
```
其中,`labels==0` 表示聚类结果中标签为 0 的点,`X[labels==0,0]` 表示自变量 X 中属于标签为 0 的点的第一列,`X[labels==0,1]` 表示自变量 X 中属于标签为 0 的点的第二列,以此类推。如果你想绘制更多的聚类簇,可以在代码中添加对应的代码块。
阅读全文