使用mean shift sklearn进行异常检测

时间:2017-12-14 09:59:16

标签: python scikit-learn mean shift anomaly-detection

我尝试使用sklearn的均值转换来查找数据集中的异常和异常值。数据集是来自传感器的信号值。我有一个训练数据集来训练算法和一个包含虚拟异常的测试数据集。我的问题是,当我在测试数据集上使用预测方法时,均值移位不会将异常标记为-1或任何其他指示异常或异常值但将其与有效集群相关联的值。 代码如下:

import pandas as pd
import numpy as np
from sklearn.cluster import MeanShift, estimate_bandwidth
from sklearn import preprocessing

if __name__ == '__main__':

    train= pd.read_csv("train.csv")

    test = pd.read_csv("test.csv")

    scaler = preprocessing.StandardScaler().fit(train)

    bandwidth = estimate_bandwidth(train, n_jobs=-1)

    ms = MeanShift(bandwidth=bandwidth,n_jobs=-1)

    ms.fit(scaler.transform(train))

    prediction = ms.predict(scaler.transform(test))

    test["cluster"] = prediction

    print np.unique(prediction)

这里是第5行训练数据集:

                 A                B               C
0               300               0              200  
1               300               0              200   
2               300               0              350   
3               300               1              350   
4               400               1              350 

这里是带有虚拟异常的前5行测试数据集:

                 A                B               C
0               300               0              200  
1               300               0              200   
2               300               0              350   
3         100000000       100000000        100000000   
4               400               1              350

如何检测测试数据集中的异常?

0 个答案:

没有答案