我正在遵循Gabriel Pierobon的DBSCAN方法在非参数分布中进行异常值检测。1
使用以下代码,我已经成功地从数据集中创建了聚类并绘制了结果,但它们缺少使观众能够辨别离群值和聚类的图例。
from sklearn.cluster import DBSCAN
from sklearn.preprocessing import StandardScaler
from collections import Counter
x = idf.loc[(idf['RT']=="GR")&(idf['Y']==2018), ['MLIC','LLIC']]
x = x.fillna(value=0)
# Don't forget your feature scaling
scaler = StandardScaler()
x_scaled = scaler.fit_transform(x)
# Get after it
dbscan = DBSCAN()
clusters = dbscan.fit_predict(x_scaled)
print("Cluster memberships:\n{}".format(clusters))
# Plot it like the animal that you are
plt.scatter(x_scaled[:,0],x_scaled[:,1], c=clusters, cmap="plasma")
plt.xlabel('Feature 0')
plt.ylabel('Feature 1')
print(Counter(clusters))
但是,当我通过plt.legend(clusters)
时,该图只是为似乎根本没有在图中显示的颜色生成了一个图例条目(可以掩埋,但是该簇中有19k到〜其他3个集群各100个。应该能够在图中看到它。)
自从我发布帖子以来,我还无法将绘图缩放到使x轴具有可视解释能力的大小(我认为需要更宽)。
关于a)建立完整的图例和b)扩展图本身的轴以提高可见性的任何想法?