0

我正在尝试使用 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

我可以做些什么来检测测试数据集中的异常?

4

0 回答 0