首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >基于地理位置的IP孤立林异常检测

基于地理位置的IP孤立林异常检测
EN

Data Science用户
提问于 2021-02-18 13:13:06
回答 1查看 191关注 0票数 3

我试图从服务器访问日志文件上的IP地址中检测基于地理位置的异常。我使用IP地址和每个请求的时间戳创建了两个特性country和geo_velocity。但是,由于所有请求都来自固定客户端,而且所有客户端都来自日志文件中的一个国家,所以我的数据集最终看起来是这样的。

代码语言:javascript
运行
AI代码解释
复制
| Country     | geo_velocity|
| ----------- | ----------- |
| USA         | 0           |
| USA         | 0           |
| USA         | 0           |

基本上,如果我把整个数据集绘制成一个零散点,它就会浓缩到一个点上。因此,从字面上讲,这些特性的每一个其他值都应该是此数据集的异常。

我使用隔离森林和GridSearchCV来调优超参数。对于GridSearchCV中的评分参数,我使用了一个定制的评分函数,如下面的代码所示。问题是,这个模型把每件事归类为不稳定因素,尽管它们应该是明显的离群点。

代码语言:javascript
运行
AI代码解释
复制
from sklearn.ensemble import IsolationForest
import numpy as np
import pandas as pd
from sklearn.model_selection import GridSearchCV

# this is similar to my dataset after label encoding the "country"
data = np.zeros((5000,2),dtype=int)
dataset = pd.DataFrame(data, columns=['country','geolocation'])

params = {'n_estimators':[70,80,100], 'max_samples':['auto'],
     'contamination':[0,0.001,0.010,0.1,0.5], 'max_features':[1,2],
     'bootstrap':[True,False],'n_jobs':[-1],
     'random_state':[None,1,], 'warm_start':[True]}  

def scorer_f(estimator, X):   
      return np.mean(estimator.score_samples(X))

isolation_forest = GridSearchCV(IsolationForest(), params, scoring=scorer_f)
model = isolation_forest.fit(dataset)

best_model = model.best_estimator_

predictions = best_model.predict([[0,0],[100,100]])
print(predictions)
代码语言:javascript
运行
AI代码解释
复制
output : [1,1]

在上述代码中生成的数据集与编码后的数据集类似。尽管第二点显然应该是一个离群点,但该模型将其归类为一个异常值。

这种方法似乎有什么问题?提前感谢!

EN

回答 1

Data Science用户

回答已采纳

发布于 2021-02-19 09:03:49

IsolationForest不适用于欧氏距离。因此,0,0几乎和一百,一百一样好

它在数据集上构建随机树,并期望异常值会在树中很早就被挑出来,而Inliers则会深入。有了这个逻辑,它就能找出离群点。

IsolationForest‘通过随机选择一个特征,然后在所选特征的最大值和最小值之间随机选择一个分割值来分离观察。由于递归分区可以用树结构表示,因此分离样本所需的分割数相当于从根节点到终止节点的路径长度。这个路径长度平均在这样的随机树林中,是正规性和我们的决策函数的一种度量。随机分区为异常产生明显较短的路径。科奇-学习博士

你的数据是非常干净和独特的。如果我们在这里观察,我们可以区分0,0和一百,一百在一个单独的分裂。所以节点的深度对于两种情况都是一样的。

您可以尝试一种基于欧氏距离的模型,即LocalOutlierFactor。

代码语言:javascript
运行
AI代码解释
复制
from sklearn.neighbors import LocalOutlierFactor

model = LocalOutlierFactor(n_neighbors=10,novelty=True).fit(dataset)

model.predict([[0,0],[100,100]]) 

输出阵列(1,-1)

Scikit-异类/新颖性学习指南- 链接

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/89563

复制
相关文章
SVN 由于目标计算机积极拒绝,无法连接
为什么会出现这种错误呢,因为我们犯了一个很小的错误,因为以前服务器上的SVN是开机启动的,但是不知道为什么这次服务器重启之后SVN没有起来,所以就需要我们手动启动了。
kirin
2020/08/31
2.5K0
Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接
redis-server --service-install redis.windows.conf
一写代码就开心
2021/06/29
1.7K0
sshd 拒绝连接错误 refused connected from
记住,每次修改配置文件后,都需要重启 SSHD 服务来应用新的配置。你可以使用 systemctl restart sshd 来重启服务。
宋天伦
2023/10/21
2.1K0
解决pip install出现“由于目标计算机积极拒绝,无法连接”的问题
本文记录执行 pip install 时出现的“由于目标计算机积极拒绝,无法连接”错误解决方案。 问题原因 代理各种坑 解决方案 去掉代理服务器相关设置 控制面板 -> Internet选项 -> 连接 -> 局域网设置 去掉所有勾勾 参考资料 https://blog.csdn.net/muguangzhichen/article/details/80945683
为为为什么
2022/08/06
4.1K0
MySQL连接错误
ERROR 1045 (28000): Access denied for user’root’@’localhost’(using password:YES)
一点儿也不潇洒
2018/08/07
3.6K0
MySQL连接错误
[325]pycharm中执行python报错:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝无法连接
服务端要先启动,然后再启动客户端。不要在ide里同时执行服务端和客户端,如果你在同一个IDEL里开服务和客户端就会出那个问题,因为开一个就要把另一个停了。最好打开两个cmd窗口,以此执行服务端和客户端。
周小董
2022/04/12
3.2K0
[325]pycharm中执行python报错:ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝无法连接
Navicat无法连接mysql
原因:由于用户加密方式不同,如果是采用caching_sha2_password会由于navicat的版本问题导致无法连接,需要设置成mysql_native_password
风起--追风
2022/09/17
7.7K0
Navicat无法连接mysql
winscp、xshell连接不上,网络错误连接xx被拒绝
~/.ssh文件夹下,直接暴力删除known_hosts文件,或打开文件删除对应ip连接保存的秘钥。
全栈程序员站长
2022/09/30
11.8K0
winscp、xshell连接不上,网络错误连接xx被拒绝
【平坑攻略】Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接
输入命令redis-server.exe redis.windows.conf后,不要关闭,不要关闭 重新打开cmd窗口输入redis-cli.exe-h 127.0.0.1
全栈程序员站长
2022/08/15
3K0
【平坑攻略】Could not connect to Redis at 127.0.0.1:6379:由于目标计算机积极拒绝,无法连接
Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝无法连接解决方案
出现这个情况是你没有见Redis的服务打开,重新双击打启动服务,之后再次打开客户端即可正常运行。
萌萌哒的瓤瓤
2020/08/26
6.5K0
Could not connect to Redis at 127.0.0.1:6379: 由于目标计算机积极拒绝无法连接解决方案
phpmyadmin连接MySQL服务器被拒绝
phpMyAdmin 尝试连接到MySQL服务器,但服务器拒绝连接。您应该检查配置文件中的主机、用户名和密码,并确认这些信息与 MySQL 服务器管理员所给出的信息一致。
于果
2021/08/25
11.2K0
Windows 无法删除文件夹 —— 访问被拒绝 / 因为目录不是空的
发布于 2018-08-13 09:21 更新于 2018-09-01 00:14
walterlv
2018/09/18
12.5K0
Windows 无法删除文件夹 —— 访问被拒绝 / 因为目录不是空的
MYSQL vs JAVA 连接错误
最近开发告诉我,他们在测试系统的时候,会经常有连接MYSQL的连接被踢掉。具体给我的解释是,JAVA的缓冲池连接MYSQL 保持连接,但再次使用的时候,报连接错误。
AustinDatabases
2019/07/12
4K0
MYSQL  vs JAVA 连接错误
Python 用smtplib库发邮件报错:[WinError 10061] 由于目标计算机积极拒绝,无法连接。解决办法
看了菜鸟的教程,有这段代码: mail = smtplib.SMTP("localhost") 然后就报错了。菜鸟的教程太老了,Python迭代这么快,根本跟不上。
小蓝枣
2020/09/23
2.5K0
mysql连接失败HikariPool错误
1. mysql连接失败HikariPool错误 1.1. 异常 com.zaxxer.hikari.pool.HikariPool : HikariPool-1 - Exception during pool initialization. 1.2. 解决 引起程序无法启动的问题是 com.zaxxer.hikari.pool.HikariPool 没能成功被 Spring 创建,原因是你的时区配置的有歧义,你需要在 jdbc url 后加上 &serverTimezone=Asia/Shanghai 这
老梁
2019/09/10
10.1K0
【错误记录】无法打开 “xxx“ , 因为 Apple 无法检查其是否包含恶意软件
选择 " 通用 " 选项卡 , 在下面找到被拦截的软件 , 选择 " 仍要打开 " ;
韩曙亮
2023/03/29
1.1K0
【错误记录】无法打开 “xxx“ , 因为 Apple 无法检查其是否包含恶意软件
无法读取配置接”system.web.extensions”,因为它缺少节声明
所以,点到你的网站,点右边的基本设置,然后在弹出来的对黄狂中,点选择,选择应用程序池位.net 4.0 classical就OK了。一般就好了。还没有,你可以继续搜索,我记得csdn上面有一个家伙也是这样弄了不好,他继续弄,反正我是弄了就OK了的。
用户2353021
2020/05/12
1.1K0
详细到你无法拒绝
一提到Redis,相信大家都不会感到陌生吧。今天就让我们在阿里云上安装一下Redis,为以后使用它做个准备。
阿Q说代码
2021/05/13
3590
【前端面试题】我靠它拿到了大厂Offer
instanceof 的内部机制是通过判断对象的原型链中是不是能找到类型的 prototype。
前端修罗场
2023/10/07
1.1K0
【前端面试题】我靠它拿到了大厂Offer
mysql远程连接错误。1044 解决
mysql> GRANT ALL PRIVILEGES ON *.* TO root@’ip’ IDENTIFIED BY ‘password’ WITH GRANT OPTION;
kirin
2020/09/07
4.6K0

相似问题

从Outlook获取电子邮件地址

10

从AIR传递到javascript

20

VBA Outlook从电子邮件中获取“回复到”电子邮件地址

18

将登录信息从PHP传递到AIR

11

将参数从java活动传递到Adobe AIR应用程序

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文