news 2026/10/25 13:39:27

i2 Analyst‘s Notebook 8.91 实战:从数据清洗到关联分析全流程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
i2 Analyst‘s Notebook 8.91 实战:从数据清洗到关联分析全流程

简介:IBM i2 Analyst's Notebook 8.91 是一款面向情报分析、犯罪调查、金融反欺诈与网络安全领域从业者的数据挖掘与可视化工具,帮助用户从海量复杂数据中识别模式、趋势与隐藏关联。资源包共 42 个文件,以 exe 安装程序、htm 安装向导页面、pdf 用户指南与发布说明、msu 系统补丁及 dll 组件为主,另含 doc 培训教材与 xml、ini 等配置文件,压缩包约 443.77MB,结构完整,便于按安装、配置、学习三条线索取用。其中 i2forfree 版本无需加密狗,简化了部署流程。已有 4658 人学习下载,适合希望快速上手关联分析与网络图绘制、构建自定义分析模板与工作流的分析师,也可作为团队协作与案例共享的实践参考。

1. 情报分析师的“作战台”:i2 Analyst's Notebook 8.91 到底解决什么问题

如果你手头正堆着几十万条通话记录、转账流水、聊天日志和涉案人员名单,Excel 已经卡到转不动,关系图靠 PPT 手画到崩溃,那你大概率已经在找 i2 Analyst's Notebook 这类工具了。IBM i2 Analyst's Notebook 8.91 是 i2 系列里做关联分析、时间线重建、社交网络图谱的核心桌面端,常被叫做“情报分析系统软件”里的重武器。它不负责采集数据,也不负责爬取,它干的事是把已经到手的结构化表格、CSV、数据库导出文件,变成一张能交互、能下钻、能出报告的关系网络图。适合谁?适合做反欺诈、内部审计、案件研判、供应链溯源、威胁情报整编的从业者。你不需要会写代码,但必须理解“实体—关系—属性”这套建模逻辑,否则导入进去的只是一团彩色毛线。

2. 把数据喂进 i2:从 CSV 到实体关系图的完整链路

2.1 先想清楚“实体”和“链接”再动手

i2 Analyst's Notebook 的核心数据模型只有两个东西:Entity(实体)和Link(链接)。实体可以是人、电话、账号、车牌、公司;链接就是它们之间发生的关系,比如“通话”“转账”“任职”“同住”。很多新手翻车就翻在第一步:把一张宽表直接拖进去,结果每个字段都变成一个独立实体,图面炸成烟花。正确做法是先做数据整形,把原始表拆成“实体表”和“关系表”两张。常见做法是:实体表至少包含EntityID、EntityType、Label三列;关系表包含FromID、ToID、LinkType、StartTime、EndTime、Weight。这样导入后 i2 才能自动识别节点和连线,而不是把“张三”和“13800000000”当成两个互不相干的点。

2.2 用 Python 做导入前的标准化清洗

i2 8.91 对 CSV 的编码和日期格式比较敏感,我一般会先用 pandas 把数据洗一遍,输出 UTF-8 带 BOM 的 CSV,避免中文乱码和日期解析失败。下面这段脚本处理的是最常见的通话记录场景:一列主叫、一列被叫、一列通话时间、一列时长。

import pandas as pd # 读取原始通话记录,假设是 GBK 编码的 CSV raw = pd.read_csv("cdr_raw.csv", encoding="gbk", dtype=str) # 实体表:去重后的电话号码 entities = pd.DataFrame({ "EntityID": pd.unique(raw[["caller", "callee"]].values.ravel()), }) entities["EntityType"] = "Phone" entities["Label"] = entities["EntityID"] entities.to_csv("entities_phone.csv", index=False, encoding="utf-8-sig") # 关系表:每一通电话就是一条 Link links = raw.rename(columns={ "caller": "FromID", "callee": "ToID", "call_time": "StartTime", "duration": "Weight" }) links["LinkType"] = "Call" links["EndTime"] = pd.to_datetime(links["StartTime"]) + pd.to_timedelta(links["Weight"].astype(int), unit="s") links = links[["FromID", "ToID", "LinkType", "StartTime", "EndTime", "Weight"]] links.to_csv("links_call.csv", index=False, encoding="utf-8-sig")

逻辑说明:pd.unique把主叫和被叫合并去重,保证每个号码在实体表里只出现一次,这是 i2 识别节点的前提。Weight直接映射通话时长,导入后可以用线宽表示强度。EndTime由开始时间加秒数算出,i2 的时间线视图依赖这个字段做区间展示。参数上唯一要改的是列名映射,你的原始表叫什么就改rename里的键。注意dtype=str是为了防止电话号码被 pandas 自动转成科学计数法,这个坑我见过太多次。

2.3 在 i2 里配置导入映射并生成第一张图

打开 Analyst's Notebook 8.91,新建一个 Chart,然后走Data > Import > CSV。关键在映射界面:把EntityID拖到Entity ID,EntityType拖到Entity Type,Label拖到Label;关系表那边把FromID映射到From Entity,ToID映射到To Entity,LinkType映射到Link Type。时间字段要手动指定格式,常见的是yyyy-MM-dd HH:mm:ss,如果你原始数据是2024/5/1 8:30这种,先在清洗阶段统一成标准格式,别指望 i2 自动猜。导入完成后按Ctrl+G自动布局,一般先用Circular看整体密度,再用Hierarchical看层级关系。如果节点超过五千,建议先按时间或类型过滤,否则布局会跑到你怀疑人生。

3. 让图谱说话:时间线、社交网络与中心度分析

3.1 时间线视图把“什么时候发生”钉死

i2 8.91 的时间线不是简单排序,它能把实体和链接按时间轴展开,特别适合做案件时序重建。操作路径是View > Timeline,然后把关系表里的StartTime和EndTime拖到时间轴字段上。这里有个细节:如果一条 Link 没有 EndTime,它会显示成一个点事件;有 EndTime 才会显示成条带。我一般会把转账、通话、登录都做成条带,这样能一眼看出某个号码在凌晨三点密集通话,同时段又有大额转账,这种“时间重叠”往往是突破口。时间线支持缩放和过滤,你可以框选一个时间段,让主图只显示该时段活跃的实体,这个联动比手动筛选快得多。

3.2 用中心度指标找出“关键节点”

图好看没用,得算出谁最重要。i2 内置了多种中心度算法,在Analyze > Centrality里可以选Degree、Betweenness、Closeness。Degree 就是连接数,适合找“话务量最大”的号码;Betweenness 是介数中心度,适合找“桥梁”角色——那种自己通话不多,但两个团伙都跟他有联系的人。操作上先选中整个图或一个子集,运行算法后 i2 会把得分写进实体属性,你可以用Size by Attribute让节点大小随得分变化。参数建议:如果图很密,先跑 Degree 做粗筛,把低于阈值的节点隐藏,再跑 Betweenness,否则计算量会很大。常见误区是只看 Degree 就下结论,结果漏掉了真正起串联作用的中介节点。

3.3 条件格式与图标集:让异常自己跳出来

i2 的Conditional Formatting是很多人忽略的功能。你可以给实体设置规则:比如Weight > 3600的链接标红加粗,EntityType = "BankAccount"的节点用方形图标,StartTime在凌晨 0 点到 5 点的链接用虚线。这些规则在Format > Conditional Formatting里配置,支持多条件叠加。我通常会把“高频通话 + 深夜时段 + 大额转账”三条规则同时打开,图面上剩下的基本就是需要重点看的对象。注意规则优先级是从上到下匹配,别把宽泛条件放在前面,否则后面的精细规则永远不生效。

4. 避坑与排查:i2 8.91 实操中最容易翻车的五件事

4.1 导入后中文全是问号

现象:CSV 导入后实体标签显示为???或乱码。原因:i2 8.91 默认按系统区域编码解析,中文 Windows 下常按 GBK 读,而你的文件是 UTF-8。解决:清洗阶段统一输出utf-8-sig,或者在导入向导的 Encoding 下拉里手动选 UTF-8。如果已经导入乱了,删掉 Chart 重新导,别试图在 i2 里改编码,改不回来。

4.2 日期字段识别失败导致时间线空白

现象:时间线视图里所有事件堆在同一天,或者干脆不显示。原因:日期格式和 i2 预期的不一致,比如2024.05.01这种点分隔,或者05/01/2024这种月日顺序歧义。解决:在 pandas 里用pd.to_datetime统一转成yyyy-MM-dd HH:mm:ss字符串再导出。如果原始数据有“上午/下午”这种中文,先替换成 24 小时制。i2 的日期解析是黑匣子,别跟它较劲,提前洗好最省事。

4.3 节点太多导致布局卡死

现象:导入一万个实体后,点自动布局,进度条卡住,内存飙升。原因:i2 的布局算法对节点数敏感,尤其是 Betweenness 这种全局算法,复杂度接近 O(n³)。解决:先按时间窗口或实体类型过滤,把单次分析的节点控制在两千以内。如果必须看全量,先用 Degree 做一次粗布局,再对子集跑精细算法。我一般会拆成多个 Chart,用Merge Chart按需合并,而不是一个图塞到底。

4.4 关系表里出现重复链接导致权重翻倍

现象:两个号码之间明明只通了 10 次话,图上显示权重 20。原因:实体表去重了,但关系表没去重,同一对 FromID/ToID 出现多条记录,i2 默认会累加或并列显示。解决:在清洗阶段用groupby聚合,把同一对实体的多条关系合并成一条,权重求和或取平均。如果业务上需要保留每次通话,那就把 LinkType 设成不同值,让 i2 显示为多条平行线,而不是重复计数。

4.5 导出报告时图面元素丢失

现象:在 i2 里看一切正常,导出 PDF 或图片后图标、颜色、标签全变了。原因:条件格式和图标集依赖本地字体和主题,导出时如果目标环境没有对应字体,就会回退成默认样式。解决:导出前在File > Export里勾选“Embed fonts”或“Flatten image”,把图面栅格化。如果是要给别人编辑的.anb文件,把自定义图标打包进模板一起发。这个坑血泪经验:给领导汇报前一定先导出一份预览,别到了会议室才发现图花了。

5. 进阶技巧:用属性驱动布局和批量生成子图

5.1 按属性分组布局,而不是全局一锅粥

当实体类型超过三种,全局布局基本没法看。我习惯用Group by Attribute先把实体按EntityType或Community分组,然后对每个组单独布局,再用Layout > Arrange Groups把组框排开。这样出来的图既有整体结构,又能看清每个团伙内部的连接。具体操作:在Analyze > Grouping里选一个属性字段,i2 会自动生成分组框,你可以拖动框的位置,框内节点会跟着走。如果某个组太大,右键Ungroup再单独处理。这个技巧在分析多团伙案件时特别管用,比手动框选快十倍。

5.2 用“查找路径”功能验证假设

i2 的Find Path能回答“A 和 B 之间最短的关系链是什么”。操作是选中两个实体,右键Find Path,可以限定最大跳数和链接类型。比如你怀疑两个看似无关的账户之间有资金中转,就限定LinkType = Transfer,最大跳数设 3,跑出来的路径如果经过一个中间账户,那这个账户就是重点排查对象。参数上,跳数别设太大,超过 4 跳的结果基本没有业务解释力。跑完后可以把路径高亮保存成一个子图,单独导出给办案人员。

5.3 批量生成子图并自动命名

如果你有一批重点号码,想每个号码生成一张以它为中心的二度关系图,手动做会疯。常见做法是用 i2 的Scripting功能(支持 VBScript)写个循环:读取一个号码列表,对每个号码执行Select Neighbors(深度 2),然后Create Sub Chart,最后用号码命名保存。下面是一个简化的脚本骨架,实际路径和对象名需要根据你的 Chart 结构调整。

' 假设当前 Chart 已打开,号码列表在外部文件里 Dim fso, file, ts, phone Set fso = CreateObject("Scripting.FileSystemObject") Set file = fso.OpenTextFile("C:\targets.txt", 1) Do Until file.AtEndOfStream phone = file.ReadLine ' 按 Label 查找实体 Dim ent Set ent = ActiveDocument.CurrentChart.FindEntityByLabel(phone) If Not ent Is Nothing Then ActiveDocument.CurrentChart.ClearSelection ent.Selected = True ' 选中二度邻居 ActiveDocument.CurrentChart.SelectNeighbors 2 ' 生成子图 ActiveDocument.CurrentChart.CreateSubChart ' 保存子图,文件名用号码 ActiveDocument.SaveAs "C:\output\" & phone & ".anb" End If Loop file.Close

逻辑说明:FindEntityByLabel按标签找实体,SelectNeighbors 2选中两度以内的所有节点和链接,CreateSubChart把选中部分抽成新图。参数上,2可以改成1或3,取决于你想要多宽的关系范围。注意脚本运行前先备份原图,因为CreateSubChart会改变当前文档状态。这个脚本我一般用来做初筛,跑完后再人工看哪些子图值得深挖。

5.4 验证分析结果是否靠谱的一个习惯

i2 的图再漂亮,也只是数据的投影。我每次做完一张图,都会强制走一遍反向验证:随机挑三个实体,手动回原始数据里查它们的连接关系,看是否和图面一致。如果对不上,大概率是导入时字段映射错了,或者关系表有重复。这个习惯救过我很多次,尤其是赶报告的时候,图面越“完美”,越要怀疑是不是漏了脏数据。从那以后我每次导入完都先跑一遍小样本核对,确认无误再上全量。希望帮到你。

本文还有配套的精品资源,点击获取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/25 13:39:19

DeepSeek本地部署实战:R1/V3协同、知识库构建与LoRA微调避坑指南

简介:本资源是一份面向AI开发者与NLP实践者的《DeepSeek应用手册》系统性入门指南,聚焦深度学习微调、自然语言处理及多模态模型API集成等核心能力。手册全面覆盖多模型协同工作流(R1深度分析V3快速生成R1优化)、文件上传支持&…

作者头像 李华
网站建设 2026/10/25 13:37:20

从输入网址到页面渲染:计算机网络基础与面试高频考点

简介:《计算机基础.pdf》是一份面向后端、前端及计算机相关岗位求职者的八股文复习资料,内容源自代码随想录知识星球精华(最强八股文)第五版中的计算机基础篇,聚焦计算机网络高频面试考点。资料围绕TCP三次握手与四次挥…

作者头像 李华
网站建设 2026/10/25 13:35:56

欧拉公式:数学之美与应用解析

1. 最美数学公式的永恒魅力第一次看到欧拉公式e^iπ 1 0时,那种震撼感至今难忘。这个被数学家们公认为"最美数学公式"的等式,神奇地将数学中五个最重要的常数联系在一起:自然对数的底e、虚数单位i、圆周率π、数字1和0。就像突然…

作者头像 李华
网站建设 2026/10/25 13:35:50

AI行业动态追踪方法论:从日更简报中提炼技术选型与趋势判断

1. 从一份日期简报说起:AI行业动态追踪到底在追什么每个月总有那么几天,我的信息流会被各种“AI大事件汇总”刷屏。3月17日这个时间节点,放在全年来看不算什么特殊日子,但如果你持续跟踪人工智能应用行业的动态,就会发…

作者头像 李华
网站建设 2026/10/25 13:32:49

大模型技术入门到实战:Transformer、Dify、Agent与私有化部署考点精讲

1. 大模型技术入门:从零基础到考点精讲的学习路径拆解很多人第一次接触大模型这个词,脑子里冒出来的画面是聊天窗口里那个能写诗、能改代码、能陪你唠嗑的对话框。但真到了要考试、要面试、要上手做项目的时候,才发现光会打字提问远远不够。大…

作者头像 李华
网站建设 2026/10/25 13:29:15

Wireshark手机抓包实战:Win10/11下ICS+Npcap精准捕获HTTP/HTTPS流量

简介:本资源是一份面向网络初学者与移动应用开发者的手动实操型Wireshark手机抓包指南,聚焦解决“如何在无专业硬件条件下,利用电脑热点Wireshark完成安卓/iOS设备真实网络流量捕获”这一典型痛点。文档以步骤驱动、图文结合(含关…

作者头像 李华