参考:https://scikit-learn.org/stable/auto_examples/ensemble/plot_isolation_forest.html#sphx-glr-auto-examples-ensemble-plot-isolation-forest-py

代码:

print(__doc__)

import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import IsolationForest rng = np.random.RandomState() # 构建训练数据,即100个属性值为2的样本,属性的值为 随机[,]数*0.3
X = 0.3 * rng.randn(, )
# 将上面得到的值+2和-2各生成100个值在2和-2附近的样本
#拼接后训练数据大小为(, )
X_train = np.r_[X + , X - ] #按列连接矩阵,要求列相等,行拼接 # 产生一些有规律的新观察值
X = 0.3 * rng.randn(, )
#拼接后训练数据大小为(, )
X_test = np.r_[X + , X - ] # 均匀分布生成异常数据集,大小为(, ),值的范围为[-,]
X_outliers = rng.uniform(low=-, high=, size=(, )) # 构建森林,进行采样,子采样大小为100
# 默认参数max_features=,则每棵树都仅使用一个属性来进行切割
# 如果你想要选择多个属性(当你的数据是多维,即有多个属性时)则记得设置该参数
clf = IsolationForest(behaviour='new', max_samples=,
random_state=rng, contamination='auto') # 训练森林,选择属性和分割值等
clf.fit(X_train) #然后使用该构建好的森林进行预测
y_pred_train = clf.predict(X_train)
print(y_pred_train)
y_pred_test = clf.predict(X_test)
print(y_pred_test)
y_pred_outliers = clf.predict(X_outliers)
print(y_pred_outliers) # 画图, the samples, and the nearest vectors to the plane
# xx和yy大小分别为(,)
xx, yy = np.meshgrid(np.linspace(-, , ), np.linspace(-, , ))
# 先拉直xx和yy为大小为(,)的一维向量
# 然后按行拼接xx,yy,即行数相等,列数增加;即两者拼成(,)的坐标点
# 然后得到这几个点的异常分数
# 正常点的异常分数为整数,异常的为负数
Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape) plt.title("IsolationForest")
# 绘制网格点的异常分数的等高线图,看图可知,颜色越浅越可能为正常点,越深越为异常点
plt.contourf(xx, yy, Z, cmap=plt.cm.Blues_r) # 在等高线中标出训练点、测试点、异常点的位置,看它们是不是在对应的颜色位置
# 可见训练点和测试点都在颜色前的区域,异常点都在颜色深的区域
b1 = plt.scatter(X_train[:, ], X_train[:, ], c='white',
s=, edgecolor='k')
b2 = plt.scatter(X_test[:, ], X_test[:, ], c='green',
s=, edgecolor='k')
c = plt.scatter(X_outliers[:, ], X_outliers[:, ], c='red',
s=, edgecolor='k') plt.axis('tight')
# 绘制图的坐标和图例信息
plt.xlim((-, ))
plt.ylim((-, ))
plt.legend([b1, b2, c],
["training observations",
"new regular observations", "new abnormal observations"],
loc="upper left")
plt.show()

返回:

Automatically created module for IPython interactive environment
[ - - - - - - - - - -
- - - - - - - - -
- - - - - - - - - -
- - - - - - -
- - - - - - - - - - -
- - - - - - - - - -
- - - - - - - - - - -
- - - - - - - - - - -
- ]
[ - - - - - - - - - - -
- - - - - - ]
[- - - - - - - - - - - - - - - - - - - -]

图为:

如果将contamination设置为0.,表示训练数据中没有异常数据,返回为:

Automatically created module for IPython interactive environment
[[-0.48822863 -3.37234895]
[-3.79719405 3.70118732]
[ 2.68784096 1.56779365]
[-0.72837644 -2.61364544]
[-2.74850366 -1.99805681]
[ 0.39381332 1.71676738]
[ 1.28157901 -1.76052882]
[ 3.63892225 1.90317533]
[ 0.43483242 0.89376597]
[-0.6431995 -2.01815208]
[-1.15221857 2.06276888]
[-3.88485209 -3.07141888]
[-3.63197886 -3.67416958]
[ 2.84368467 1.62926288]
[-0.20660937 -3.21732671]
[-0.067073 -0.21222583]
[-2.61438504 -0.52918681]
[-0.81196212 0.92680078]
[ 1.08074921 -3.63756792]
[-1.00309908 1.00687933]]
[ ]
[ -
- ]
[- - - - - - - - - - - - - - -]

可见其会将一些接近训练点的数据也预测为正常数据

如果同时设置构建树时使用的属性为2,即max_features=2,而不是默认的1,结果为:

[                                    

               ]
[ -
- ]
[- - - - - - - - - - - - - - -]

感觉训练效果更好了,测试数据基本上都能验证为正常点

所以根据你自己的需要来配置参数吧

异常检测-基于孤立森林算法Isolation-based Anomaly Detection-3-例子的更多相关文章

  1. 异常检测-基于孤立森林算法Isolation-based Anomaly Detection-1-论文学习

    论文http://202.119.32.195/cache/10/03/cs.nju.edu.cn/da2d9bef3c4fd7d2d8c33947231d9708/tkdd11.pdf 1. INT ...

  2. 异常检测-基于孤立森林算法Isolation-based Anomaly Detection-2-实现

    参考https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.IsolationForest.html#sklearn.en ...

  3. 【异常检测】孤立森林(Isolation Forest)算法简介

    简介 工作的过程中经常会遇到这样一个问题,在构建模型训练数据时,我们很难保证训练数据的纯净度,数据中往往会参杂很多被错误标记噪声数据,而数据的质量决定了最终模型性能的好坏.如果进行人工二次标记,成本会 ...

  4. UEBA 学术界研究现状——用户行为异常检测思路:序列挖掘prefixspan,HMM,LSTM/CNN,SVM异常检测,聚类CURE算法

    论文 技术分析<关于网络分层信息泄漏点快速检测仿真> "1.基于动态阈值的泄露点快速检测方法,采样Mallat算法对网络分层信息的离散采样数据进行离散小波变换;利用滑动窗口对该尺 ...

  5. 孤立森林(isolation forest)

    1.简介 孤立森林(Isolation Forest)是另外一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根据信息增益或者基尼指数来选择. 在建树过程中 ...

  6. 基于机器学习的web异常检测——基于HMM的状态序列建模,将原始数据转化为状态机表示,然后求解概率判断异常与否

    基于机器学习的web异常检测 from: https://jaq.alibaba.com/community/art/show?articleid=746 Web防火墙是信息安全的第一道防线.随着网络 ...

  7. 26.异常检测---孤立森林 | one-class SVM

    novelty detection:当训练数据中没有离群点,我们的目标是用训练好的模型去检测另外发现的新样本 outlier  dection:当训练数据中包含离群点,模型训练时要匹配训练数据的中心样 ...

  8. Andrew Ng机器学习课程笔记--week9(上)(异常检测&推荐系统)

    本周内容较多,故分为上下两篇文章. 一.内容概要 1. Anomaly Detection Density Estimation Problem Motivation Gaussian Distrib ...

  9. [C10] 异常检测(Anomaly Detection)

    异常检测(Anomaly Detection) 问题的动机 (Problem Motivation) 异常检测(Anomaly detection)问题是机器学习算法中的一个常见应用.这种算法的有趣之 ...

随机推荐

  1. python3 操作 hive 安装依赖包整理

    安装依赖pip install saslpip install thriftpip install thrift-saslpip install PyHive windows安装sasl报错,解决方案 ...

  2. 16、Real-time Personalization using Embeddings for Search Ranking at Airbnb

    一.背景 Airbnb 平台包含数百万种不同的房源,用户可以通过浏览搜索结果页面来寻找想要的房源,我们通过复杂的机器学习模型使用上百种信号对搜索结果中的房源进行排序. 当用户查看一个房源时,他们有两种 ...

  3. java基础(11)---模块(java9)

    一.模块介绍 二.模块可以解决的问题 三.module-info.java文件 四.一个项目就可变成一个模块

  4. 关于C3P0-mySQL关于url的细节问题

    1.为url设置?useUnicode=true&characterEncoding=UTF-8 为了统一编码,我们会为数据库封装的实体类加上上面的那句话,但是C3P0数据库连接池是xml配置 ...

  5. test20190829 神大校赛模拟

    100+100+0=200,聪明搬题人题面又出锅了. 最短路径(path) 给定有向图,包含 n 个节点和 m 条有向边. 一条A 到 B 的路径是最短路径当且仅当不存在另一条从A 到 B 的路径比它 ...

  6. zjoj1706: [usaco2007 Nov]relays 奶牛接力跑

    矩阵乘法(快速幂) 为说明方便,这里让\(k\)为点数,\(n\)为路径长度. 先将点都离散化,这样最后的点只有\(2k\)个. 先考虑一种暴力,每次用\(O(k^3)\)的复杂度来暴力更新,设当前长 ...

  7. 最新新浪长连接转为短连接的API与请求示例

    新浪短网址api是新浪官方对外公开的长链接转为短链接的API,可以将冗长的链接地址缩短生成 t.cn/xxx 格式的短链接. API有两种格式 http://lnurl.cn/sina/short-a ...

  8. 011——MATLAB清除工作控件变量

    (一):参考文献:https://zhidao.baidu.com/question/234530287.html 清除当前工作空间全部变量:clear: 清除当前工作空间某些变量:clear 变量名 ...

  9. Transformer 比较好的博客

    1. https://www.jianshu.com/p/0c196df57323 细节理解: 2. https://zhuanlan.zhihu.com/p/44121378 3. https:// ...

  10. Xshell6如何传输文件

    Xshell6如何传输文件  /或者直接在本地用notepad  nftp插件上传本地文件,直观,更方便 上传文件 1.打开xshell6软件,连接服务器. 2.yum安装一款工具.#yum inst ...