随机森林算法python代码,Python画森林图
Python孤立森林异常检测1。异常检测配置文件2。异常检测用例3。什么是孤立森林4.python孤立森林异常检测4.1搜索数据分析4.2定义并添加拟合模型4.3数据集得分和匿名列4.4打印异常4.5评估
1.异常检测概述
离群值只是与特定数据集中的其他数据点明显不同的数据点。
异常检测是指在数据中发现异常点的过程,它明显不同于许多其他数据点。
大型实际数据集可能具有非常复杂的模式,很难只检测显示的数据。因此,异常检测的研究是机器学习的一个非常重要的应用。
本文采用隔离算法实现异常检测。我们有一个简单的工资数据集。还有工资不正常的。我们的目标是找到那些薪水。公司的一些员工赚了很多钱。这可能是不道德行为的象征。
2.异常检测案例的异常测试广泛应用于各行各业。以下是一些常见的使用案例。
银行业。发现异常高的存款。每个存款人都有特定的存款模式。如果这个模式有异常值,银行需要有检测和分析洗钱等问题的能力。
金融行业。找出欺诈性购买的模式。一般来说,每个人都有特定的购买模式。如果这个模式有异常值,银行需要检测它并分析潜在的欺诈。
医疗保健。发现欺诈的保险索赔和支付。
制造业。为了降低成本,可以监控异常机器的动作。许多公司一直在监控他们机器的输入和输出参数。在已知故障发生之前,机器会对这些输入或输出参数表现出异常行为。从预防性维护的角度来看,机器需要持续监控异常行为。
互联网。检测对网络的入侵。所有暴露于外界的网络都面临威胁。通过监控网络中的异常活动,可以及早发现入侵。
看看机器学习中的孤立森林算法是什么。
3.孤立森林孤立森林是一种用于异常检测的机器学习算法。使用无监督学习算法,通过隔离数据中的异常值来识别异常值。
森林算法是基于决策树算法的。通过从一组特定特征中随机选择一个特征并从该特征的最大值和最小值中随机选择隔离值来隔离异常值。这种特征随机化为树中的异常数据点生成短路径,并将它们与剩余数据分开。
异常检测的第一步通常是概述什么是“正常”,并报告被认为不正常的异常。但是孤立森林算法不适用于这一原理;首先没有定义“正常”行为,也没有计算基于点的距离。
从名字就可以看出,隔离林具有显式隔离数据集中离群点的异常功能。
森林算法基于少数不同观测值的异常原理,易于识别它们。隔离林使用一系列隔离树将异常隔离到指定的数据点。
通过森林随机选择函数和随机选择函数的分隔符,在数据集上递归生成分区。与数据集中的“规则”点相比,这些异常需要更少的随机分区进行隔离,因此异常是树中路径长度更小的点,路径长度是从根节点开始遍历的边数。
与其他算法相比,孤立森林算法不仅能快速检测出异常,而且需要的内存更少。
森林算法不分析正常的数据点,而是隔离数据点中的异常。与常规数据点相比,异常数据点总是有很多短树路径,所以孤立的森林树不需要太多深度。因此,可以通过减少max_depth来降低内存需求。
该算法也可以在小数据集上很好地工作。
现在,为了理解给定的数据,我们来做一些探索性的数据分析。
用python探索孤立森林异常检测4.1的数据分析,先导入必要的库。我们导入numpy、pandas、seaborn和matplotlib库。此外,必须从sklearn.ensemble导入IsolationForest库.
importnumpyasnpimportpandas aspdimportseabornasnsimportmatplotlib。Pyploaspltfromsklearn。EnsembleImportSolationForest图书馆
数据来自不同专家的年薪(美元)。这些数据很少发现工资过高或过低等异常情况。
df=PD.read_CSV(薪水。CSV ) (df.head(10))))))
整套头戴式耳机
为了进一步了解数据,我用工资数据做了一个小提琴手。请参考下图。小提琴手是一种创建数字数据的方法。
小提琴画通常包含一个盒画中的所有数据,数据中的数值标记,以及代表四分位数的正方形或标记。如果样本数不高,可能包含整个采样点。
工资小提琴画
为了更好地理解异常值,您可能还想看看箱线图。
众所周知,打蛋器印刷。箱形图中的方框显示数据集的四分位数,而触须显示分布的其余部分。
触须不显示判断为异常的点。
异常值的检测方法是四分位数范围的函数。
统计学,四分位数
数字范围,也称为中间分布或中间50%,是统计离差的度量,等于75%和25%之间的差异。
4.2定义并拟合模型我们将创建一个模型变量,并实例化IsolationForest类。我们将四个变量的值传递给隔离森林方法,如下所示。
估计量的数量:n_estimators指的是集合中的基本估计量或树的数量,例如森林中建造的树的数量。这是一个整数参数,是可选的。默认值为100。
最大样本量:max_samples是为训练每个基本估计量而提取的样本数。如果max_samples大于提供的样本数,所有样本将用于所有树。max_samples的默认值为“自动”。如果为“自动”,最大样本数=最小值(256,n个样本)。
污染:这是算法的一个非常敏感的参数;它是指数据集中异常值的预期比例。拟合时,用于定义样本分数的阈值。默认值为“自动”。如果“自动”,阈值将根据孤立林的原始纸张来确定。
最大特征:所有的基本估计量不是由数据集中所有可用的特征训练的。它是从所有特征中提取的特征数,用于训练每个基本估计器或树。最大特征的默认值为1。
Model=隔离林(n _ estimators=50,max _ samples= auto ,context=float (0.1),max _ features=1.0)model . fit(DF[[ salary ]])隔离林模型定型输出
在我们定义了上面的模型之后,我们需要使用给定的数据来训练模型。为此,我们使用fit()方法,如上图所示。该方法传递一个参数,该参数是我们感兴趣的数据(在本例中是数据集的salary列)。
一旦模型被正确训练,它将输出IsolationForest实例,如上面单元的输出所示。
现在是时候添加数据集的分数和匿名列了。
4.3添加数据集的得分和异常列。定义和拟合模型后,让我们找到分数和异常列。我们可以通过调用训练模型的decision_function()并将salary作为参数传递来找到scores列的值。
同样,我们可以通过调用训练模型的predict()函数并将salary作为参数传递来查找匿名列的值。
这些列将被添加到数据框df。添加完这两列后,让我们检查数据框。正如预期的那样,数据框现在有三列:薪水、分数和匿名。异常列的负值和-1表示存在异常。异常值1表示数据正常。
该算法为训练集中的每个数据点分配异常分数。我们可以定义一个阈值,使用异常分数。如果一个数据点的得分大于预定义的阈值,我们可以将其标记为异常。
df[分数]=model.decision_function(df[[薪金]])df[异常]=model.predict(df[[薪金]])df.head(20)
为孤立的森林添加分数和匿名列。
在为数据中的所有行添加分数和anonymous之后,我们将打印预测的异常。
4.4打印异常要打印数据中的预测异常,我们需要在添加分数和匿名列后对数据进行分析。正如您在上面看到的,对于预测的异常,异常列的值将是-1,它们的分数将是负数。
使用这些信息,我们可以打印预测异常(本例中为两个数据点),如下所示。
异常=df.loc[df[异常]==-1]异常_索引=列表(异常.索引)打印(异常)
异常输出
注意,我们不仅可以打印数据集中的异常值,还可以打印它们的索引,这对于进一步的处理是有用的信息。
4.5评价模型为了评价这个模型,我们设置了一个阈值为salary99999,这是一个异常值。让我们用下面的代码根据上面的规则找出数据中离群值的个数。
离群值_计数器=len(df[df[salary] 99999])离群值_计数器离群值_计数器=2
我们通过找出模型发现的离群值,除以数据中存在的离群值,来计算模型的精度。
打印(准确率:,100 *列表(df[异常])。count(-1)/(outliers_counter))准确度百分比:100 %
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。