我正在尝试检测某些数据中的异常。我有正常的数据和数据被认为是异常的。
我在python中使用来自scikit-learn库的Isolation Forest。我已经从正常数据中创建了一个模型:
model = IsolationForest(n_estimators=100, contamination=0.002)
model.fit(new_features)
当我尝试做预测时:
predicted = model.predict(transformed_anomaly)
它正常工作。 36个中的35个被检测为异常。
如果我这样做:
for anomaly in transformed_anomaly:
predicted = model.predict(anomaly.reshape(1,-1))
突然所有点都归类为内点。
我检查了' anomaly.reshape(1,-1)' 的形状,它是(1,2)。 < transform_anomaly' 的形状是(36,2)
有人能用它来指出问题吗?
答案 0 :(得分:0)
在隔离林中传递random_state = 0可以在每次运行中获得相同的结果。 模型= IsolationForest(n_estimators = 100,污染= 0.002,,random_state = 0)
答案 1 :(得分:0)
我还有一个解决方案 - 为什么不像这样修复种子值。
# Set a seed value
seed_value= 123
# 1. Set `PYTHONHASHSEED` environment variable at a fixed value
import os
os.environ['PYTHONHASHSEED']=str(seed_value)
# 2. Set `python` built-in pseudo-random generator at a fixed value
import random
random.seed(seed_value)
# 3. Set `numpy` pseudo-random generator at a fixed value
import numpy as np
np.random.seed(seed_value)
这将帮助您在相同的数据上每次获得相同的结果,因为它消除了模型的随机性。