def normalize(points):
    """
    Return the normalized version of a given vector of points.

    For a given array of n-dimensions, normalize each dimension by removing the
    initial offset and normalizing the points in a proportional interval: [0,1]
    on y, maintining the original ratio on x.
    """
    ratio = (points.x.max() - points.x.min()) / (points.y.max() - points.y.min()), 1
    ratio = np.array(ratio) / max(ratio)
    norm = points.apply(lambda c: (c - c.min()) / (c.max() - c.min()))
    return norm.apply(lambda p: ratio * p, axis=1)

正好前几天刚刚和别人争论量纲相同进行归一化的话题,今天就遇到这种归一化操作,进行纪念并做笔记。
给出归一化前数据

归一化之后

这样就可以保证在只有(0, 0), (1, 0), (0, 10000)的情况下,若聚类为两类,会导致归一化之后(1,0)->(1, 0)和(0,10000)->(0,1),而导致聚类失去原来真实属性。


1 条评论

ct · 2020年7月24日 下午5:06

bgg现在写的我都看不懂了

发表评论