Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战

简介: Python基于孤立森林算法(IsolationForest)实现数据异常值检测项目实战

说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取。

image.png

image.png

1.项目背景

孤立森林是基于Ensemble的快速异常检测方法,具有线性时间复杂度和高精准度,是符合大数据处理要求的state-of-the-art算法。孤立森林算法适用于连续数据的异常检测,将异常定义为“容易被孤立的离群点”,可以理解为分布稀疏且离密度高的群体较远的点。用统计学来解释,在数据空间里面,分布稀疏的区域表示数据发生在此区域的概率很低,因而可以认为落在这些区域里的数据是异常的。

孤立森林最早来源于2008年发表的一篇论文《Isolation Forest》,该论文由莫纳什大学的 Fei Tony Liu、Kai Ming Ting 和南京大学的周志华合作完成的。孤立森林算法的思想是通过不断地分割数据集,从而把异常点给孤立出来。分割数据集的依据是反复随机选取样本特征,不断地分割数据集直到每个样本点都是孤立的。在此情况下,异常点因为具有不同或者特殊的特征值,因此异常点的路径通常很短,也会比较早被分离出来。

2.数据获取

本次建模数据来源于网络(本项目撰写人整理而成),数据项统计如下

数据组成:训练数据1460条、81个特征(38个数值特征和43个分类特征)

编号 

变量名称

描述

1

Id

 

2

MSSubClass

 

3

MSZoning

 

4

LotFrontage

 

5

LotArea

 

6

Street

 

7

Alley

 

8

LotShape

 

9

LandContour

 

……

81

SalePrice

目标变量

数据详情如下(部分展示):

image.png

3.数据预处理

3.1 用Pandas工具查看数据形状

使用Pandas工具的shape ()方法查看数据的形状:

image.png

关键代码:

image.png

image.png

3.2缺失值数据填充

使用Pandas工具的fillna ()方法用0填充缺失的数据,关键代码:

image.png

3.3生产数据集的特征列表

使用Pandas工具的columns属性来生成数据集的特征列表:

image.png

关键代码:

image.png

4.异常数据检测

使用sklearn工具中的IsolationForest(算法)来进行数据集中异常数据的检测。

4.1建模

模型参数如下:

编号

模型名称

参数

1

IsolationForest异常检测模型

max_samples=100

2

random_state=42

4.2拟合与预测

应用fit()方法进行拟合,应用predict()进行预测,预测值分为1和-1,1为正常值,-1为异常值,那么在后续的深度神经网络模型应用中将会丢弃掉异常值的数据。检测结果如下:

image.png

关键代码如下:

image.png

4.3正常值结果展示

使用Pandas工具的head()方法来展示正常值数据的前10行:

image.png

关键代码如下:

image.png

5.特征工程

5.1数据归一化

使用sklearn工具MinMaxScaler()方法来进行数据的无量纲化,即数据的归一化,归一化后的数据如下图:

image.png

关键代码:

image.png

5.2 建立特征数据和标签数据

SalePrice为标签数据,除SalePrice之外的为特征数据。关键代码如下:

image.png

5.3数据集拆分

训练集拆分,分为训练集和验证集,70%训练集和30%验证集。关键代码如下:

image.png

6.构建深度神经网络模型

主要使用Keras工具的Sequential()方法构建序惯模型,然后添加Dense层,用于目标回归。

6.1建模

 

编号

模型名称

参数

1

深度神经网络模型

输入层

kernel_initializer='normal'

2

activation='relu'

3

隐藏层

kernel_initializer='normal'

4

activation='relu'

5

输出层

activation='relu'

6

loss='mean_squared_error'

7

optimizer='adam'

关键代码如下:

image.png

7.模型评估

7.1评估指标及结果 

评估指标主要包括均方误差等等。

模型名称

指标名称

指标值

验证集

深度神经网络模型

损失值

0.00043

从上表可以看出,损失值较小,深度神经网络模型效果较好。

关键代码如下: 

image.png

7.3 真实值与预测值比对图

image.png

从上图可以看到,真实值和预测值波动基本一致,说明除去异常值之后的深度神经网络模型效果较好。

8.结论与展望

综上所述,使用了孤立森林算法对房价数据进行异常检测。实验结果表明,该算法可以有效检测出房价数据中存在的异常数据。然后把异常数据去除,来构建深度神经网络模型,模型效果较好。可用于日常生活中进行建模预测,以提高生产价值和效能。

测试集数据预测结果如下:

image.png


# 本次机器学习项目实战所需的资料,项目资源如下:
 
# 项目说明:
 
# 获取方式一:
 
# 项目实战合集导航:
 
https://docs.qq.com/sheet/DTVd0Y2NNQUlWcmd6?tab=BB08J2
 
# 获取方式二:
 
链接:https://pan.baidu.com/s/1TD-YlshnVciz10gPVvhGiw 
提取码:smew
相关实践学习
使用PAI+LLaMA Factory微调Qwen2-VL模型,搭建文旅领域知识问答机器人
使用PAI和LLaMA Factory框架,基于全参方法微调 Qwen2-VL模型,使其能够进行文旅领域知识问答,同时通过人工测试验证了微调的效果。
机器学习概览及常见算法
机器学习(Machine Learning, ML)是人工智能的核心,专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能,它是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。 本课程将带你入门机器学习,掌握机器学习的概念和常用的算法。
相关文章
|
8月前
|
监控 安全 算法
137_安全强化:输入过滤与水印 - 实现输出水印的检测算法与LLM安全防护最佳实践
随着大语言模型(LLM)在各行业的广泛应用,安全问题日益凸显。从提示注入攻击到恶意输出生成,从知识产权保护到内容溯源,LLM安全已成为部署和应用过程中不可忽视的关键环节。在2025年的LLM技术生态中,输入过滤和输出水印已成为两大核心安全技术,它们共同构建了LLM服务的安全防护体系。
790 148
|
8月前
|
算法 搜索推荐 JavaScript
基于python智能推荐算法的全屋定制系统
本研究聚焦基于智能推荐算法的全屋定制平台网站设计,旨在解决消费者在个性化定制中面临的选择难题。通过整合Django、Vue、Python与MySQL等技术,构建集家装设计、材料推荐、家具搭配于一体的一站式智能服务平台,提升用户体验与行业数字化水平。
|
9月前
|
存储 算法 调度
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
【复现】【遗传算法】考虑储能和可再生能源消纳责任制的售电公司购售电策略(Python代码实现)
421 26
|
8月前
|
存储 监控 算法
监控电脑屏幕的帧数据检索 Python 语言算法
针对监控电脑屏幕场景,本文提出基于哈希表的帧数据高效检索方案。利用时间戳作键,实现O(1)级查询与去重,结合链式地址法支持多条件检索,并通过Python实现插入、查询、删除操作。测试表明,相较传统列表,检索速度提升80%以上,存储减少15%,具备高实时性与可扩展性,适用于大规模屏幕监控系统。
229 5
|
8月前
|
数据采集 Web App开发 数据可视化
Python零基础爬取东方财富网股票行情数据指南
东方财富网数据稳定、反爬宽松,适合爬虫入门。本文详解使用Python抓取股票行情数据,涵盖请求发送、HTML解析、动态加载处理、代理IP切换及数据可视化,助你快速掌握金融数据爬取技能。
6455 1
|
8月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
713 0
|
8月前
|
JSON 算法 API
Python采集淘宝商品评论API接口及JSON数据返回全程指南
Python采集淘宝商品评论API接口及JSON数据返回全程指南
|
8月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
8月前
|
传感器 运维 前端开发
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
本文解析异常(anomaly)与新颖性(novelty)检测的本质差异,结合distfit库演示基于概率密度拟合的单变量无监督异常检测方法,涵盖全局、上下文与集体离群值识别,助力构建高可解释性模型。
598 10
Python离群值检测实战:使用distfit库实现基于分布拟合的异常检测
|
9月前
|
传感器 资源调度 算法
DDMA-MIMO雷达多子带相干累积目标检测算法——论文阅读
本文提出一种多子带相干累积(MSCA)算法,通过引入空带和子带相干处理,解决DDMA-MIMO雷达的多普勒模糊与能量分散问题。该方法在低信噪比下显著提升检测性能,实测验证可有效恢复目标速度,适用于车载雷达高精度感知。
1016 4
DDMA-MIMO雷达多子带相干累积目标检测算法——论文阅读

推荐镜像

更多