大概步骤:
1.对初始数据做离群点和噪声处理(有些聚类算法可以处理这些点,但是有些不行)
2.对高维数据进行降维、标准化、归一化处理
3.选择聚类算法,主要是明确自己数据的簇类型(基于密度、原型、图等)
1.异常值处理:删除有空值数据
2.噪声处理:移动平滑滤波
# yy = smooth(y) smooths the data in the column vector y ..
# The first few elements of yy are given by
# yy(1) = y(1)
# yy(2) = (y(1) + y(2) + y(3))/3
# yy(3) = (y(1) + y(2) + y(3) + y(4) + y(5))/5
# yy(4) = (y(2) + y(3) + y(4) + y(5) + y(6))/5
# ...
def smooth(a, WSZ):
""""
# a:原始数据,NumPy 1-D array containing the data to be smoothed
# 必须是1-D的,如果不是,请使用 np.ravel()或者np.squeeze()转化
# WSZ: smoothing window size needs, which must be odd number,
# as in the original MATLAB implementation
"""
out0 = np.convolve(a, np.ones(WSZ, dtype=int), 'valid')/WSZ
r = np.arange(1, WSZ-1, 2)
start = np.cumsum(a[:WSZ-1])[::2]/r
stop = (np.cumsum(a[:-WSZ:-1])[::2]/r)[::-1]
return np.concatenate((start, out0, stop))
3.降维pca
tsne
每次都不同
两种方法都降维不好。
4.选择聚类算法