【问题标题】:Is there is a way to print outliers after finishing K-means in sklearn? let's say the top 5在sklearn中完成K-means后有没有办法打印异常值?让我们说前5名
【发布时间】:2019-01-16 19:31:41
【问题描述】:

准备数据

df= rn.read_sql(sql,conn)
Data = df.as_matrix(['TOT_CLM_GROSS_AMT','UNIT_PRICE','QUANTITY'])

应用 K-means

kmeansFinal = KMeans(n_clusters = 47, init="k-means++",precompute_distances=True, copy_x=True,max_iter=500,n_init=20 ).fit(Data) 

然后计算距离

distances= kmeansFinal.transform(Data)

我想打印前 n 个异常值的值
假设 n 现在是 5

【问题讨论】:

  • K-means 讨厌异常值。见this

标签: python scikit-learn k-means


【解决方案1】:

计算出distance 后,选择n 并运行:

n = 5
outliers = [x[0] for x in sorted(enumerate(distances), key=lambda x: sum(x[1]**2)**0.5, reverse=True)[:n]]

现在,outliers 保存Data 中离质心最远的数据点的索引。

for outlier in outliers:
    print(Data[outlier])

【讨论】:

    猜你喜欢
    • 2014-06-24
    • 2011-07-13
    • 2017-11-23
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-10
    • 1970-01-01
    相关资源
    最近更新 更多