Isolation Forest孤立森林(二)之sklearn实现,源码分析

孤立森林算法sklearn实现,源码分析

算法一: 首先初始化一些参数

class sklearn.ensemble.IsolationForest(n_estimators=100max_samples=’auto’contamination=’legacy’max_features=1.0bootstrap=Falsen_jobs=Nonebehaviour=’old’random_state=Noneverbose=0)

参数解释:n_estimators = 构建多少个itree

              max_samples=采样数,自动是256

             contamination=c(n)默认为0.1 

            max_features=最大特征数 默认为1

           bootstrap=构建Tree时,下次是否替换采样,为True为替换,为False为不替换

           n_jobs=fit和perdict执行时的并行数

第二步进行fit训练:def fit(self, X, y=None, sample_weight=None):

其中max_samples:

if self.max_samples == 'auto':

max_samples = min(256, n_samples) #如果输入的采样数大于256,就选择256,小于256选择输入的max_samples
itree的最大路径为:max_depth = int(np.ceil(np.log2(max(max_samples, 2))))

然后将max_samples,max_depth,X,sample_weight  传入

super(IsolationForest, self)._fit(X, y, max_samples,
                                  max_depth=max_depth,
                                  sample_weight=sample_weight)

进行统计:使用Scipy我们很方便的得到数据所在区域中某一百分比处的数值

self.threshold_ = -sp.stats.scoreatpercentile(
    -self.decision_function(X), 100. * (1. - self.contamination))   
 return self

fit方法就此结束了,下面是创建树也是进行分类的过程。

def decision_function(self, X):

 

 

 

未完待续

 

  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Isolation Forest是一种异常检测算法,可用于识别数据集中的异常值。Sklearn是一个Python机器学习库,提供了Isolation Forest算法实现Isolation Forest基于以下两个概念来检测异常值:孤立实例和孤立树。孤立实例是数据集中的少数异常点,而孤立树是通过随机选择和分割特征来建立的叉树。算法通过计算数据实例在树中的深度来评估其异常程度。异常点被认为是通过较少的路径被孤立,而正常点通常需要更多的路径来被孤立。 使用sklearn库中的Isolation Forest算法,我们可以按照以下步骤来进行异常检测。 首先,导入必要的库和数据集。使用sklearn.ensemble模块中的IsolationForest类来创建模型。 ``` import numpy as np from sklearn.ensemble import IsolationForest # 创建模型 model = IsolationForest(n_estimators=100, contamination=0.05, random_state=42) ``` 然后,我们可以使用模型的fit()方法来训练 Isolation Forest模型。 ``` # 训练模型 model.fit(data) ``` 在训练完成后,我们可以使用predict()方法来预测数据中的异常值。预测结果是-1表示异常值,1表示正常值。 ``` # 预测异常值 predictions = model.predict(data) ``` 最后,我们可以根据预测结果来标记和分析数据中的异常值。 需要注意的是,在使用Isolation Forest算法时,需要调整一些重要参数。例如,n_estimators参数表示建立孤立树的数量,contamination参数表示数据集中异常值的比例,我们可能需要根据实际情况进行调整。 总的来说,通过使用sklearn中的Isolation Forest算法,我们可以简单方便地进行异常检测,对于发现数据集中的异常值具有较好的效果。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值