基于LOF算法的异常值检测

这篇具有很好参考价值的文章主要介绍了基于LOF算法的异常值检测。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

LOF算法简介

LOF异常检测算法是一种基于密度的异常检测算法,基于密度的异常检测算法主要思想是:给定的样本数据集,对于数据集中的点,如果其局部领域的点都很密集,那么这个点大概率为正常的数据点;而如果这个点距离其相邻的点距离较远,也就是在一个局部领域的点密度较小,那么这个点可能为异常点。

Sklearn官网LOF算法应用实例1

基于LOF算法的异常值检测,机器学习,算法,数据分析,异常值检测
clf.negative_outlier_factor_输出:array([ -0.98214286, -1.03703704, -73.36970899, -0.98214286])
绝对值越大于1则越有可能是异常。很明显101.1最有可能是异常。

Sklearn官网LOF算法应用实例2

导入包:
基于LOF算法的异常值检测,机器学习,算法,数据分析,异常值检测
构造二维数据,以及一些离群点,并可视化:
基于LOF算法的异常值检测,机器学习,算法,数据分析,异常值检测
LOF算法:
基于LOF算法的异常值检测,机器学习,算法,数据分析,异常值检测
根据X_scores可视化,红色圈越大,该点越可能是异常点:
基于LOF算法的异常值检测,机器学习,算法,数据分析,异常值检测

基于LOF算法鸢尾花数据集异常值检测

import pandas as pd
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from sklearn.neighbors import LocalOutlierFactor
from sklearn.datasets import load_iris
matplotlib.rcParams['font.sans-serif']=['SimHei']   # 用黑体显示中文
%matplotlib inline

读取数据

iris_data = load_iris()
iris_data.data[0:5,:]
array([[5.1, 3.5, 1.4, 0.2],
       [4.9, 3. , 1.4, 0.2],
       [4.7, 3.2, 1.3, 0.2],
       [4.6, 3.1, 1.5, 0.2],
       [5. , 3.6, 1.4, 0.2]])
# 数据规模
iris_data.data.shape
(150, 4)
# 特征
iris_data.feature_names
['sepal length (cm)',
 'sepal width (cm)',
 'petal length (cm)',
 'petal width (cm)']
# 查看类别
pd.DataFrame(iris_data.target).value_counts(), iris_data.target_names
(0    50
 1    50
 2    50
 dtype: int64,
 array(['setosa', 'versicolor', 'virginica'], dtype='<U10'))

构造数据

这里为方便可视化,只选取iris数据集中 ‘sepal width (cm)’ 和 ‘petal width (cm)’ 两个特征

data = iris_data.data[:, [1, 3]]
data = pd.DataFrame(data, columns=iris_data.feature_names[1:4:2])#['sepal width (cm)','petal width (cm)']
data.head()
sepal width (cm) petal width (cm)
0 3.5 0.2
1 3.0 0.2
2 3.2 0.2
3 3.1 0.2
4 3.6 0.2

可视化,画出可疑异常点

# 可视化两个特征'sepal width (cm)','petal width (cm)'
data.plot(kind="scatter", x="sepal width (cm)", y="petal width (cm)", c='r', figsize=(6,2))

## 圈出可疑的异常点
plt.plot(2.3, 0.3, "ko", markersize=20, markerfacecolor="none")
plt.annotate("可能异常点", xy=(2.3, 0.48), xytext=(2, 0.75), arrowprops=dict(facecolor="blue"))

plt.plot(3.8, 2.1, "ko", markersize=30, markerfacecolor="none")
plt.annotate("可能异常点", xy=(3.9, 1.9), xytext=(4, 1.5), arrowprops=dict(facecolor="blue"))

plt.plot(4.4, 0.4, "ko", markersize=20, markerfacecolor="none")
plt.annotate("可能异常点", xy=(4.3, 0.5), xytext=(4.5, 1), arrowprops=dict(facecolor="blue"))
Text(4.5, 1, '可能异常点')

基于LOF算法的异常值检测,机器学习,算法,数据分析,异常值检测

LOF算法

lof = LocalOutlierFactor(n_neighbors=30, metric="minkowski")
outlier_pre = lof.fit_predict(data.values)
"异常值数量:%d"%np.sum(outlier_pre==-1)
'异常值数量:7'
# 异常点
data[outlier_pre==-1]
sepal width (cm) petal width (cm)
15 4.4 0.4
33 4.2 0.2
41 2.3 0.3
60 2.0 1.0
109 3.6 2.5
117 3.8 2.2
131 3.8 2.0
scores = lof.negative_outlier_factor_# negative_outlier_factor_数值越大越正常;数值越小越不正常,可能是离群点

scores = (scores.max()-scores)/(scores.max()-scores.min())
data.plot(kind="scatter", x="sepal width (cm)", y="petal width (cm)", c='r', figsize=(6,2))
plt.scatter(data["sepal width (cm)"], data["petal width (cm)" ], s=800*scores, edgecolors='k', facecolor="none",label="score")

基于LOF算法的异常值检测,机器学习,算法,数据分析,异常值检测文章来源地址https://www.toymoban.com/news/detail-682275.html

到了这里,关于基于LOF算法的异常值检测的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于机器学习的异常检测与分析技术

    传统的运维方式在监控、问题发现、告警以及故障处理等各个环节均存在明显不足,需要大量依赖人的经验,在数据采集、异常诊断分析、故障处理的效率等方面有待提高。 本关键技术面对传统运维故障处理效率低、问题定位不准确、人力成本高三大痛点,将人工智能与运维

    2024年02月16日
    浏览(36)
  • 基于Dlib库+SVM+Tensorflow+PyQT5智能面相分析-机器学习算法应用(含全部工程源码)+训练及测试数据集

    本项目利用了Dlib库的训练模型,以获取精确的面部特征。在人脸检测的过程中,它不仅能够准确地定位人脸,还能够确定出面部的68个关键点的准确坐标。借助这些关键点,我们可以提取丰富的面部特征。 通过将这些面部特征应用于基于支持向量机(SVM)的分类方法,我们可

    2024年02月13日
    浏览(47)
  • 深入理解Local Outlier Factor(LOF)局部异常因子算法

    首先,写这篇文章的初衷是为了记录自身对LOF的理解,另一个原因是个人在学习该算法的时候,也查阅过不少的文章或者视频,有一些知识点(如可达距离、局部可达密度等概念)可能并没有清晰的表达出来,因此该文章本着个人对该算法的理解记录学习该算法的过程,如有错

    2024年02月06日
    浏览(45)
  • 【机器学习 | 异常检测】孤立森林(isolation Forest)iForest 算法理论讲解及 Python 实战

    孤立森林(Isolation Forest,简称 iForest)是一种无监督学习算法,用于识别异常值。 其基本原理可以概括为一句话:异常数据由于数量较少且与正常数据差异较大,因此在被隔离时需要较少的步骤。 有两个假设: 异常的值是非常少的(如果异常值很多,可能被识别为正常的)

    2024年04月23日
    浏览(40)
  • 机器学习和大数据:如何利用机器学习算法分析和预测大数据

      近年来,随着科技的迅速发展和数据的爆炸式增长,大数据已经成为我们生活中无法忽视的一部分。大数据不仅包含着海量的信息,而且蕴含着无数的商机和挑战。然而,如何从这些海量的数据中提取有价值的信息并做出准确的预测成为了许多企业和研究机构亟需解决的问

    2024年02月06日
    浏览(56)
  • Python+Django+Mysql开发简单在线课程推荐系统简单教程 基于用户的协同过滤推荐算法 个性化课程推荐系统 爬虫 可视化数据分析 机器学习 人工智能 个性化推荐 相关推荐

    1、开发工具和使用技术 Python3及以上版本,Django3.6及以上版本,mysql8,navicat数据库管理工具或者sqlyog数据库管理工具,html页面,javascript脚本,jquery脚本,echarts.js可视化图表工具,自定义星星评分功能(使用font-awesome星星图标字体)等。 2、实现功能 前台首页地址:http://1

    2024年02月05日
    浏览(110)
  • 人脸检测——基于机器学习3】AdaBoost算法

    主要工作 AdaBoost算法的人脸检测算法包含的主要工作:(1)通过积分图快速求得Haar特征;(2)利用AdaBoost算法从大量的特征中选择出判别能力较强的少数特征用于人脸检测分类;(3)提出一个级联结构模型,将若干个弱分类器集成一个强分类器,其能够快速排除非人脸区域

    2024年02月10日
    浏览(48)
  • 大数据毕设项目 - 深度学习 机器学习 酒店评价情感分析算法实现

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月19日
    浏览(40)
  • Python数据分析—基于机器学习的UCI心脏病数据分析(源码+数据+分析设计)

    下载链接:https://pan.baidu.com/s/1ys2F6ZH4EgnFdVP2mkTcsA?pwd=LCFZ 提取码:LCFZ 心脏病是一类比较常见的循环系统疾病。循环系统由心脏、血管和调节血液循环的神经体液组织构成,循环系统疾病也称为心血管病,包括上述所有组织器官的疾病,在内科疾病中属于常见病,其中以心脏病

    2024年02月07日
    浏览(57)
  • 实例:【基于机器学习的NBA球员信息数据分析与可视化】

    数据集共有342个NBA球员样本,包含38个特征,即342行×38列。对这些数据进行集成和预处理。 利用python语言,设计合适的机器学习算法。找出球员在场时对球队比赛获胜的贡献大小,最能反映球员的综合实力的特征。 算法过程及结果的设计合适的可视化图像,将所设计的算法

    2024年02月08日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包