Pandas/networkx图分析简单入门

摘要: 本文是一篇pandas/networkx图分析入门,对所举的欺诈检测用例进行了简单的图论分析,便于可视化及操作。

       对于图论而言,大家或多或少有些了解,数学专业或计算机相关专业的读者可能对其更加清楚。图论中的图像是由若干给定的点及连接两点的线所构成的图形,这样的图像通常用来描述某些事物之间的某种特定关系,用点代表事物,用两点之间的连接线表示二者具有的某种关系,在互联网与通信行业中应用广泛。图论分析(Graph analysis)并不是数据科学领域中的新分支,也不是数据科学家目前应用的常用首选方法。然而,图论可以做一些疯狂的事情,一些经典用例包括欺诈检测、推荐或社交网络分析等,下图是 NLP中的非经典用例——处理主题提取。

1

欺诈检测用例

       假设现在你有一个客户数据库,并想知道它们是如何相互连接的。特别是,你知道有些客户涉及复杂的欺诈结构,但是在个人层面上可视化数据并不会带来欺诈证据,欺诈者看起来像其他普通客户一样。
       只需查看原始数据,处理用户之间的连接就可以显示更多信息。具体而言,对于通常的基于机器学习的评分模型而言,这些特征不会被视为风险,但这些不会被认为存在风险的特征可能成为基于图表分析评分模型中的风险特征。

示例:三个具有相同电话号码的人,连接到具有相同电子邮件地址的其他人,这是不正常的,且可能存在风险。电话号码本身没有什么价值,并不会提供任何信息(因此,即使最好的深度学习模型也不能从中获取任何价值信息),但个人通过相同的电话号码或电子邮件地址连接这一问题,可能是一种风险。

下面在Python中进行一些处理:

设置数据、清理和创建图表

 

2
(构造的仿真数据)


       首先从一个pandas DataFrame开始(它基本上是Python中的Excel表)

import pandas as pddf = pd.DataFrame({'ID':[1,2,3,4,5,6], 'First Name':['Felix', 'Jean', 'James', 'Daphne', 'James', 'Peter'], 'Family Name': ['Revert', 'Durand', 'Wright', 'Hull', 'Conrad', 'Donovan'],'Phone number': ['+33 6 12 34 56 78', 
'+33 7 00 00 00 00', '+33 6 12 34 56 78', '+33 6 99 99 99 99', '+852 0123 4567', '+852 0123 4567'],'Email': ['felix.revert@gmail.com', 'jean.durand@gmail.com', 'j.custom@gmail.com', 
pd.np.nan, 'j.custom@gmail.com', pd.np.nan]})

       从代码中看到,先加载数据,以df表示。下面对其做一些准备,需要连接具有相同电话号码和相同电子邮件的个人(由其ID表示)。首先从电话号码开始:

column_edge = 'Phone number'
column_ID = 'ID'data_to_merge = df[[column_ID, column_edge]].dropna(subset=[column_edge]).
drop_duplicates() # select columns, remove NaN# To create connections between people who have the same number,
# join data with itself on the 'ID' column.
data_to_merge = data_to_merge.merge(data_to_merge[[column_ID, column_edge]].rename(columns={column_ID:column_ID+"_2"}), on=column_edge
)

       处理的数据看起来像这样:

3


       从图中看到,里面有一些联系,但存在两个问题:

  • 个人与自己联系在一起
  • 从数据中看到,当X与Y连接时,Y也与X连接,有两行数据用于同一连接。下面让我们清理一下:
# By joining the data with itself, people will have a connection with themselves.
# Remove self connections, to keep only connected people who are different.
d = data_to_merge[~(data_to_merge[column_ID]==data_to_merge[column_ID+"_2"])] \.dropna()[[column_ID, column_ID+"_2", column_edge]]# To avoid counting twice the connections (person 1 connected to person 2 and person 2 connected to person 1)
# we force the first ID to be "lower" then ID_2
d.drop(d.loc[d[column_ID+"_2"]<d[column_ID]].index.tolist(), inplace=True)

       下面,数据看起来像这样:

4


       从图中看到,1和3连接,5和6也连接。我们对电子邮件地址也进行同样的处理。下面构建一个图表,将在这里只分享代码的一部分,因为添加全部代码比较棘手,项目代码地址在文末给出。

import networkx as nxG = nx.from_pandas_edgelist(df=d, source=column_ID, target=column_ID+'_2', edge_attr=column_edge)G.add_nodes_from(nodes_for_adding=df.ID.tolist())

       下面进行数据可视化

使用networkx进行图形可视化

       简单的nx.draw(G)代码就能获得以下内容:

5


       从图中看到,这是一个相当有趣的形式!但是我们看不出图中的每个点代表的是谁,谁和谁之间有什么连接。下面将其具体化:

6


       从图中可以看到, 4个人通过2个不同的电话号码和1个电子邮件地址连接在一起,后续还应该进行更多的调查!

真正实现工业化的下一步

       让我们回顾一下我们前面做过的事情:

  • 根据用户数据库创建图表
  • 自定义可视化,帮助我们发现潜在奇怪的模式
           如果你是业务驱动的,并希望一些专家使用你已经完成的工作,那么你的下一个重点应该是:
  • 将查找多个人连接在一起的这一过程自动化,或风险模式检测
  • 通过图形可视化和原始数据自动创建可视化和创建自定义仪表板的过程
           本文不会在这里详细介绍上述内容,但是会告诉你如何继续进行上述两个步骤:

1.风险模式检测

这里有两种方法:

  • 从你认为有风险的人(或你被发现为欺诈者的人)那里开始,检查他们与其他人的关系。这与机器学习相关,这是一种“有监督”方法。更进一步,你还可以从机器学习评分(例如,使用XGBoost)开始,寻找他们之间存在的紧密联系。
  • 从奇怪的模式(太多的连接、密集的网络...),这是“无监督”的方法。
           在我们举的例子中,我们没有已知的欺诈者,所以我们将采用上述的第二种方法。

       Networkx已经实现了完全正确的算法:degree( )、centrality( )、pagerank( )、connected_components( )......这些算法可以让你以数学的形式定义风险。

2.为业务创建可视化和自动化分析

       对于大多数数据科学家来说,这内容听起来是老派,但快速做到这一点的方法就是使用Excel。
       Xlsxwriter软件包可帮助你粘贴风险人物图表中的数据,并将我们创建的图表图像直接粘贴到Excel文件中。通过这种操作之后你将获得每个风险网络的仪表板,如下所示:

7


       对于每个具有潜在风险的网络,你都可以自动地创建仪表板,让专家完成他们的工作。同样你也可以在信息中心中添加一些指标:涉及的人数、不同电话号码的数量及电子邮件地址等。
       全文源码在此,希望这篇文章对你有所帮助。

原文链接

本文为云栖社区原创内容,未经允许不得转载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/521252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(安装常用工具_02)

接上一篇&#xff1a;linux CentOS7 最小化安装环境静默安装Oracle11GR2数据库&#xff08;安装操作系统环境_01&#xff09; 安装wget yum install -y wget安装vim yum install -y vim-enhanced或者 yum -y install vim安装unzip yum install zip unzip安装 lrzsz yum -y…

如何在学习机器学习时学习数学?

摘要&#xff1a; 机器学习到底需要怎么样的数学基础&#xff1f;高段位机器学习如何练成&#xff1f;来瞧瞧。 到目前为止&#xff0c;我们都还不完全清楚开始机器学习需要什么样的数学水平&#xff0c;特别是那些没有在学校学习数学或统计学的人。 在这篇文章中&#xff0c…

RPA机器人来了, 你的饭碗还好吗?

摘要&#xff1a; RPA正在席卷全球各行各业&#xff0c;从金融到医疗再到零售。多种重复有规律的工作流程正在被代替。从上世纪90年代到现在&#xff0c;RPA经历了怎样的发展历程&#xff0c;目前又是怎么样的现状呢&#xff1f; RPA&#xff0c;正在席卷全球 这是一个平常的星…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(安装依赖包_03)

接上一篇&#xff1a;linux CentOS7最小化安装环境静默安装Oracle11GR2数据库&#xff08;安装常用工具_02&#xff09; 安装Oracle11GR2所需要的依赖包 有高手写成了这样: yum -y install gcc gcc-c make binutils compat-libstdc-33 elfutils-libelf elfutils-libelf-devel …

机器学习算法概述:随机森林逻辑回归

摘要&#xff1a; 机器学习算法入门介绍&#xff1a;随机森林与逻辑回归&#xff01; 随机森林是用于分类和回归的监督式集成学习模型。为了使整体性能更好&#xff0c;集成学习模型聚合了多个机器学习模型。因为每个模型单独使用时性能表现的不是很好&#xff0c;但如果放在一…

【终于等到你】7种策略解除云风险警报

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Bruce Harpham转自 &#xff5c; INSIDER责编 | 阿秃云服务时代已经来临&#xff0c;且企业也正在积极的拥抱云技术。之前的云服务仅限于简单的存储或者联系人管理&#xff0c;而现在&#xff0c;像ERP这样的企业核心服务也开…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(oracle基础配置_04)

接上一篇&#xff1a;linux CentOS7最小化安装环境静默安装Oracle11GR2数据库&#xff08;安装依赖包_03&#xff09; 创建用户 组 及文件夹 创建用户组&#xff1a;groupadd oinstall 创建用户组&#xff1a;groupadd dba 创建用户并添加到用户组&#xff1a;useradd -g oinst…

HTTPS时代已来,你做好准备了吗?

摘要&#xff1a; 全站HTTPS时代的到来&#xff0c;这也是最近越来越多的网站上HTTPS和更换证书的原因。那么究竟什么是HTTPS&#xff1f;它为什么会提升安全系数&#xff1f;CDN HTTPS又将如何做到安全性与性能同时提升&#xff1f;作为用户&#xff0c;又如何快速便捷的进行部…

专访阿里视频云叔度:一场技术人的自我修行

摘要&#xff1a; 千年之后的2018年&#xff0c;“玄奘之路”BC连14位同伴在这段自我修行的路程中沿着大师昔日的足迹徒步前行&#xff0c;对极致的追求促使他们努力挑战生命的每个不可能。其中&#xff0c;最让人感动的是一个打着点滴行进的身影&#xff0c;他在遭遇右腿受伤、…

spring cloud gateway 网关_微服务网关Spring Cloud Gateway全搞定

一、微服务网关Spring Cloud Gateway1.1 导引文中内容包含&#xff1a;微服务网关限流10万QPS、跨域、过滤器、令牌桶算法。在构建微服务系统中&#xff0c;必不可少的技术就是网关了&#xff0c;从早期的Zuul&#xff0c;到现在的Spring Cloud Gateway&#xff0c;网关我们用的…

这个耳机一点不输千元级的AirPods

你如果问我&#xff1a;生活中你觉得必不可少的一件电子产品是什么&#xff1f;那么我会毫不犹豫的回答你&#xff1a;是耳机&#xff01;出门忘带耳机是绝对不能忍听不听没关系&#xff0c;但是有它比较安心我觉得生活中不仅是我很多人都对耳机有一种依赖因为很多人都喜欢音乐…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(上传安装包并解压_05)

接上一篇&#xff1a;linux CentOS7最小化安装环境静默安装Oracle11GR2数据库&#xff08;oracle基础配置_04&#xff09; 静默安装Oracle11GR2数据库上传数据库安装包并解压 按提示选择文件&#xff0c;添加确定&#xff1b;开始上传&#xff1b; 完成 创建一个目录存放安装…

mysql一些基本sql操作_MySql数据库的一些基本操作---------------SQL语法

MySql数据库是比较常用的关系型数据库&#xff0c;操作用的是sql语句&#xff0c;下面来说一说MySql的一些基本操作MySql数据库是一种C/S型的模式&#xff0c;即客户端/服务器端&#xff0c;对应到具体应用上&#xff0c;便是bin目录下的mysql.exe和mysqld.exe&#xff0c;mysq…

阿里云商品评价解析功能示例解析

近年来&#xff0c;电商发展的如火如荼&#xff0c;从以淘宝为首的网购零售平台再到垂直的生鲜类等电商&#xff0c;中国电商市场正持续较快地增长。据消息称&#xff0c;手机淘宝DAU在6月18日达到2.6亿的峰值&#xff0c;并且从去年开始&#xff0c;阿里电商平台推出促进消费者…

逻辑回归预测事件发生的概率_通过逻辑回归,对信用卡申请数据使用卡方分箱法预测违约率建模...

一、 建模步骤(1)从数据中衍生特征(2)对类别型变量和数值型变量进行补缺(3)基于卡方分箱法对变量进行分箱(4)WOE编码后的单变量分析与多变量分析(5)应用逻辑回归模型(6)尺度化(7)模型预测能力二、代码import pandas as pdimport datetimeimport collectionsimport numpy as npi…

深度学习文本分类在支付宝投诉文本模型上的应用

摘要&#xff1a; 小蚂蚁说&#xff1a; 随着深度学习的快速发展&#xff0c;以及在图像、语音领域取得的不错成果&#xff0c;基于深度学习的自然语言处理技术也日益受到人们的关注。计算机是怎么理解人类的语言的呢&#xff1f; 传统机器学习的应用&#xff0c;常常是利用上述…

linux CentOS7最小化安装环境静默安装Oracle11GR2数据库(修改配置文件_06)

接上一篇&#xff1a;linux CentOS7最小化安装环境静默安装Oracle11GR2数据库&#xff08;上传安装包并解压_05&#xff09; linux CentOS7最小化安装环境静默安装Oracle11GR2数据库&#xff08;修改配置文件&#xff09; 一、修改内核文件&#xff1a; vim /etc/sysctl.conf…

【不吹不黑】详解容器技术架构、网络和生态

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | Hardy责编 | 阿秃谈起容器技术&#xff0c;不得不提Docker技术。Docker 是PaaS 提供商 DotCloud 开源的一个高级容器引擎&#xff0c;源代码托管在 Github 上&#xff0c;基于Go语言并遵从Apache2.0协议开源。Docker相当于物…

jeecg boot一对多新增的附表不会主键是一个string_测试开发专题:spring-boot如何使用JPA进行双向一对多配置...

本片文章我们主要介绍spring-boot如何进行JPA的配置以及如何进行实体间的一对多配置。 依赖准备 要在spring-boot使用jpa需要在项目中有进入相关的依赖&#xff0c;pom文件里加入下面内容 <dependency><groupId>org.springframework.boot</groupId><artif…

揭秘阿里机器翻译团队:拿下5项全球冠军,每天帮商家翻译7.5亿次

摘要&#xff1a; 跨境电商市场越来越大&#xff0c;商家们也遇到了新问题。以阿里巴巴国际站为例&#xff0c;七成买家以英语沟通&#xff0c;剩下三成的小语种&#xff0c;却难住了平台上近96%的卖家。 “翻译和本地化都做不好&#xff0c;说明你对海外市场根本不重视&#x…