异常数据检测 | Python实现孤立森林(IsolationForest)异常检测

孤立森林(IsolationForest)异常检测
IsolationForest[6]算法它是一种集成算法(类似于随机森林)主要用于挖掘异常(Anomaly)数据,或者说离群点挖掘,总之是在一大堆数据中,找出与其它数据的规律不太符合的数据。该算法不采样任何基于聚类或距离的方法,因此他和那些基于距离的的异常值检测算法有着根本上的不同,孤立森林认定异常值的原则是异常值是少数的和不同的数据。它通常用于网络安全中的攻击检测和流量异常等分析,金融机构则用于挖掘出欺诈行为。

当我们使用IsolationForest[7]算法时需要设置一个异常值比例的参数contamination, 该参数的作用类似于之前的outliers_fraction。
使用 fit 方法对孤立森林模型进行训练
使用 predict 方法去发现数据中的异常值。返回1表示正常值,-1表示异常值。

data = df[[‘price_usd’, ‘srch_booking_window’, ‘srch_saturday_night_bool’]]
scaler = StandardScaler()
np_scaled = scaler.fit_transform(data)
data = pd.DataFrame(np_scaled)

训练孤立森林模型

model = IsolationForest(contamination=outliers_fraction)
model.fit(data)

#返回1表示正常值,-1表示异常值
df[‘anomaly2’] = pd.Series(model.predict(data))

fig, ax = plt.subplots(figsize=(10,6))
a = df.loc[df[‘anomaly2’] =

你可能感兴趣的:(异常数据检测,python,孤立森林)