python如何实现对于数据中异常值的处理,python异常值检测
Yyds干货库存
1.引言在数据处理、机器学习等领域,我们经常需要处理各种数据。本文重点介绍三种非常简单的方法来检测数据集中的异常值。废话少说,我们开始吧!
2.举个栗子做例子。为了介绍方便,下面是我们的测试数据集,如下:
数据=pd。数据框架([
[87, 82, 85],
[81, 89, 75],
[86, 87, 69],
[91, 79, 86],
[88, 89, 82],
[0,0,0],#这家伙错过了考试
[100, 100, 100],
],列=[数学,科学,英语])如下所示:
假设我们这里有一群学生,他们在英语、数学和科学三个科目上的考试成绩是——。这几个学生平时成绩都不错,但是有一个错过了所有的考试,三门都是0分。在我们的分析中包括这个家伙可能会把事情搞砸,所以我们需要把他当作一个异常。
3.孤立森林利用孤立森林算法解决上述离群点分析非常简单。代码如下:
从sklearn.ensemble导入隔离森林
预测=IsolationForest()。拟合(数据)。预测(数据)
# predictions=array ([1,1,1,1,1,1,-1])这里对每一行预测预测值,预测结果为1或-1;其中1表示该线不是异常值,而-1表示该线是异常值。在上面的例子中,我们的孤立森林算法将数据中的最后2行预测为异常值。
4.椭圆模型拟合使用孤立椭圆模型拟合算法解决上述离群点也是非常方便的。代码如下:
从sklearn .协方差导入椭圆包络
预测=椭圆包络()。拟合(数据)。预测(数据)
# predictions=array ([1,1,1,1,1,1,1,-1,1])在上面的代码中,我们使用了另一种离群点检测算法,而不是孤立森林算法,但代码保持不变。类似地,在预测值中,1表示非异常值,而-1表示异常值。在上述情况下,我们的椭圆模型拟合算法只把倒数第二个学生作为离群值,即分数全为零的候选人。
5.局部异常因子算法。同样,我们可以非常方便地使用局部异常因子算法来分析上述数据。示例代码如下:
从sklearn.neighbors导入LocalOutlierFactor
predictions=localooutlierfactor(n _ neighbors=5,novelty=True)。拟合(数据)。预测(数据)
# array([ 1,1,1,1,1,-1,1])局部异常因子算法是sklearn上提供的另一种异常检测算法。我们可以简单地把它插上电源,在这里使用。同样,在这里,算法只将最后一个数据行预测为异常值。
6.选择异常值检测方法。那么,我们如何决定哪种异常检测算法更好呢?简而言之,不存在“最佳”异常值检测算法3354。我们可以把它们看作是做同一件事的不同方法(并得到略微不同的结果)
7.离群值的消除在我们从上述三种异常检测算法中的任何一种获得异常预测之后,我们现在可以执行离群值的删除。这里我们只需要保留所有异常预测为1的数据行,代码如下:
#预测=数组([ 1,1,1,1,1,-1,1])
Data2=data[predictions==1]=1结果如下:
8.总结本文重点介绍了利用Python中的sklearn机器学习库进行离群点检测的三种方法,并给出了相应的代码示例。
你丢了学业吗?
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。