1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
| import matplotlib.pyplot as plt from sklearn.cluster import DBSCAN import pandas as pd import numpy as np from sklearn import metrics import seaborn as sns from sklearn.datasets.samples_generator import make_blobs from sklearn.preprocessing import StandardScaler
rs= [] eps = np.arange(5,50,1) min_samples=np.arange(2,20,1)
best_score=0 best_score_eps=0 best_score_min_samples=0
for i in eps: for j in min_samples: try: db = DBSCAN(eps=i, min_samples=j).fit(X) pre_n= db.labels_ curScore=metrics.silhouette_score(X_s,pre_n) raito = len(pre_n[pre_n[:] == -1]) / len(labels) n_clusters_ = len(set(pre_n)) - (1 if -1 in pre_n else 0) rs.append([i,j,k,raito,n_clusters_]) if curScore>best_score: best_score=curScore best_score_eps=i best_score_min_samples=j
except: db='' else: db='' print(best_score ,best_score_eps ,best_score_min_samples)
|