@异常检测怎么做,试试孤立随机森林算法(附代码)( 三 )
类似的 , 可以对训练后的模型调用 predict() 函数 , 并传入工资作为参数 , 找到异常列的值 。
将这两列添加到数据框 df 中 。添加完这两列后 , 查看数据框 。如我们所料 , 数据框现在有三列:工资、分数和异常值 。分数列中的负值和异常列中的 -1 表示出现异常 。异常列中的 1 表示正常数据 。
这个算法给训练集中的每个数据点都分配了异常分数 。可以定义阈值 , 根据异常分数 , 如果分数高于预定义的阈值 , 就可以将这个数据点标记为异常 。df['scores']=model.decision_function(df[['salary']]) df['anomaly']=model.predict(df[['salary']]) df.head(20)
文章图片
文章图片
给数据的每一行中都添加了分数和异常值后 , 就可以打印预测的异常了 。
打印异常
为了打印数据中预测得到的异常 , 在添加分数列和异常列后要分析数据 。如前文所述 , 预测的异常在预测列中的值为 -1 , 分数为负数 。根据这一信息 , 将预测的异常(本例中是两个数据点)打印如下 。anomaly=df.loc[df['anomaly']==-1] anomaly_index=list(anomaly.index) print(anomaly)
异常输出 。
注意 , 这样不仅能打印异常值 , 还能打印异常值在数据集中的索引 , 这对于进一步处理是很有用的 。
评估模型
【@异常检测怎么做,试试孤立随机森林算法(附代码)】为了评估模型 , 将阈值设置为工资>99999 的为离群值 。用以下代码找出数据中存在的离群值:outliers_counter=len(df[df['salary']>99999]) outliers_counter
计算模型找到的离群值数量除以数据中的离群值数量 , 得到模型的准确率 。print("Accuracypercentage:",100*list(df['anomaly']).count(-1)/(outliers_counter))
准确率:100%
尾注
本教程内容包括:什么是离群值以及如何用孤立森林算法检测离群值 。还讨论了针对该问题的不同的探索性数据分析图 , 比如小提琴图和箱图 。
最终我们实现了孤立森林算法 , 并打印出了数据中真正的离群值 。希望你喜欢这篇文章 , 并希望这篇文章能在未来的项目中帮到你 。
推荐阅读
- 『价格』价格差 100,华为 Mate30 和 iPhone SE2 怎么选?答案简单!
- 『市场份额』鲁大师公布一季度手机排名,华为荣耀排名第一、二名,安兔兔怎么看?
- 『冬季摄影』冬天摄影:怎么拍摄以花朵为主题的冬季照片?
- 「运营商」半夜12点断我网络,一气之下换了运营商,看看怎么回事
- #外观#李现代言的荣耀30,被iPhoneSE2截胡?怎么选不用我说了吧!
- 小鱼一键重装系统@微软mse杀毒软件怎么样
- [世界]智能AI未来将全面取代人类世界?对此,你怎么认为的?
- 中央处理器@CPU是怎么看懂代码的?
- #宅女科技范#智能AI未来将全面取代人类世界?对此,你怎么认为的?
- #轻度玩机#李现代言的荣耀30,被iPhoneSE2截胡?怎么选不用我说了吧!
