我正在尝试使用 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
我可以做些什么来检测测试数据集中的异常?