如何开始人工智能之旅:技术路径不只一条 您的选择也不只一个

随着深度学习的兴起,人工智能已广泛应用于多个领域并创造出显著的商业价值。本文介绍了一种融合机器学习与深度学习的方法,通过互补的技术路径解决单一技术无法克服的问题。以中国银联为例,展示了如何结合GBDT、GRU和RF技术来提高金融反欺诈模型的准确率。

在AlphaGo成功挑战围棋世界冠军后,“深度学习”家喻户晓,已成为人工智能(AI)的代名词。深度学习带动了人工智能的再次复兴,这次复兴的最大亮点,就是AI开始在语音识别、机器视觉、数据挖掘等多个领域落地,真正释放出了商业上的价值。各个行业的企业决策者也都有机会着眼自身战略,利用落地的AI技术和应用聚焦业务流程优化、效率提升以及对全新机遇的发掘。


640?wx_fmt=jpeg

图一、AI带来的应用和业务创新机会将推动全行业的转型升级

 

虽然AI正因其创造的商业潜力而备受睹目,但严格来说,它的发展仍然处于早期阶段,就像婴幼儿需要依次及综合使用口、手和眼等感官来感知这个世界,刺激大脑发育一样,AI用来感知信息、实现智能进化的路径,也是多种多样的。目前火爆的深度学习,以及一般的机器学习和基于规则的学习,都是目前AI领域的主流技术路径。


640?wx_fmt=png

图二、人工智能、机器学习及深度学习的关系示意图


这些技术路径之间的关系,与其说是彼此竞争或替代,更不如说是互补的——基于它们不同特性和适用场景来实现互补。


640?wx_fmt=jpeg640?wx_fmt=jpeg

图三、现阶段主流AI技术路径的优势、适用场景和局限性总结


这种多条技术路径互补,或者说融合应用的妙处,在中国银联电子商务与电子支付国家工程实验室推进银行卡反欺诈技术的研究中体现得淋漓尽致。该实验室在最初研究中发现,如果只使用机器学习,将面临对序列化交易特征学习能力不足的问题,而只用深度学习,又会遇到单笔交易内特征学习能力有限的问题,而将两者融合才是更好的解决方案。为此它与众安科技及英特尔公司共同提出了GBDT→GRU→RF三明治结构欺诈侦测模型架构,该模型已经历了伪卡欺诈侦侧、骗保检测等多种银行、保险业务常见场景下基于真实数据的仿真验证,无论是在召回率还是准确率上,都明显优于传统的分类器方法或单一的RNN方法。


640?wx_fmt=jpeg

图四、融合了机器学习和深度学习的三明治结构欺诈侦测模型架构


值得一提的是,银联这个融合式的创新模型,是选择了基于英特尔至强处理器的CPU平台,而非专用平台来作为其算力的支柱。这是因为CPU架构对目前几乎所有的AI主流技术、乃至新涌现的技术都有出色的兼容性,而且在英特尔为至强平台提供了更为广泛和深入,涉及了硬件加速能力、软件工具及框架等层面的优化后,这个CPU平台不论是支持基于单种AI技术的应用,还是在运行融合了多种AI技术的应用时,性能表现都更为突出。在上述欺诈侦测模型的开发中,英特尔就提供了多种优化手段和工具的支持,帮助它实现了更高的工作效率。

 

可见,在AI之旅的起点上,企业面对的技术路径不只一条,选择也不限于一个。无论是传统推理、机器学习、深度学习,亦或是它们的融合,都是可选项。而从企业既有的IT基础设施,即从CPU架构,从英特尔至强平台起步,无疑是兼容多种技术路径,并兼顾性能和可扩展性的理想之选,它能帮助企业更好地应对复杂多变的现实应用需求,并以更快的速度、更低的成本构建起符合自身需求的AI应用。

 

点击阅读原文 ,查看完整《基于三明治结构深度学习框架的金融反欺诈模型研究与应用》。


640?wx_fmt=jpeg


640?wx_fmt=gif


640?wx_fmt=gif

<think>好的,我现在需要解决用户在使用pandas的read_csv读取压缩包时遇到的NotADirectoryError错误,特别是当压缩包内含有多个文件的情况。用户之前已经尝试过直接指定压缩包内的某个文件路径,但出现了错误。根据用户提供的引用资料和我自己的知识,我需要思考如何正确读取多个文件的压缩包。首先,根据引用[2]中的信息,当压缩包中有多个文件时,直接使用pd.read_csv('data.zip')会报错,因为Pandas默认只允许压缩包内有一个文件。用户的问题正是因为压缩包里有多个文件,导致路径被误认为是目录,从而引发NotADirectoryError。因此,直接使用read_csv并指定压缩方式可能不适用,需要其他方法。接下来,引用[3]提到可以使用zipfile模块来逐个处理压缩包内的文件。这似乎是一个可行的方案。用户需要先解压或访问压缩包中的特定文件,然后逐个读取。例如,使用zipfile.ZipFile打开压缩包,获取文件列表,然后循环读取每个CSV文件。这样可以避免路径错误,同时处理多个文件的情况。 另外,引用[1]中的例子展示了如何处理读取CSV时可能出现的错误,比如跳过错误行。这可能对用户有帮助,尤其是在处理多个文件时,某些文件可能存在格式问题,需要异常处理来增强代码的健壮性。 现在,我需要将这些信息整合成一个解决方案。首先,明确错误的原因:用户试图通过路径'data.zip/AA00001.csv'来访问压缩包内的文件,但Pandas无法直接将压缩包视为目录来访问内部文件。正确的做法是使用zipfile模块显式打开压缩包,并逐个读取其中的文件。 因此,步骤应该是:1)使用zipfile列出压缩包内的所有文件;2)逐个打开这些文件并用pandas读取。如果用户需要合并多个CSV文件,可以进一步使用pd.concat。此外,需要处理可能的编码问题,如GBK,这在用户之前的代码中已经提到。 另外,需要考虑压缩包内可能存在非CSV文件的情况,需要过滤出.csv文件。同时,如果压缩包内文件较多,可能需要分批处理或并行读取以提高效率,但用户当前的问题可能只需要基本的处理方法。最后,生成相关问题,帮助用户扩展了解如何处理类似问题,比如批量读取、加密压缩包、中文文件名等。</think>### 解决NotADirectoryError与多文件压缩包读取方案 #### 错误原因分析 当使用`pd.read_csv('data.zip/AA00001.csv')`格式时,系统会错误地将压缩包路径视为目录路径,引发`NotADirectoryError`。Pandas默认仅支持读取**单文件压缩包**,当压缩包内存在多个文件时需特殊处理[^2]。 --- #### 核心解决方法(分步指南) ##### 方法1:使用`zipfile`模块显式读取 ```python import zipfile import pandas as pd # 打开压缩包并列出所有文件 with zipfile.ZipFile('data/data340622/data.zip') as z: # 筛选CSV文件(避免其他类型文件干扰) csv_files = [f for f in z.namelist() if f.endswith('.csv')] # 逐个读取并合并(示例) dfs = [] for csv_file in csv_files: with z.open(csv_file) as f: # 处理GBK编码(根据实际需求调整) df = pd.read_csv(f, encoding='GBK') dfs.append(df) full_df = pd.concat(dfs, ignore_index=True) ``` ##### 方法2:多文件压缩包预处理(推荐) 若需保持单文件读取方式,需确保压缩包内仅含一个文件。可通过以下命令重新打包: ```bash # 将多个CSV文件合并后重新压缩(Linux/Mac示例) cat *.csv > combined.csv && zip data.zip combined.csv ``` 之后直接读取: ```python df = pd.read_csv('data.zip', compression='zip', encoding='GBK') ``` --- #### 关键参数说明 | 参数 | 作用 | 示例值 | |------|------|--------| | `compression` | 指定压缩类型 | `'zip'`, `'gzip'` | | `encoding` | 处理中文编码 | `'GBK'`, `'utf-8'` | | `error_bad_lines` | 跳过错误行 | `False`[^1] | --- #### 验证代码有效性 ```python # 检查压缩包内容结构 with zipfile.ZipFile('data.zip') as z: print(z.namelist()) # 输出:['AA00001.csv', 'AA00002.csv', ...] ``` --- #### 高级场景处理 - **动态文件选择**:通过正则匹配特定文件名 ```python import re target_files = [f for f in csv_files if re.match(r'AA\d{5}\.csv', f)] ``` - **内存优化**:分块读取大文件 ```python chunk_iter = pd.read_csv(z.open('large.csv'), chunksize=10000) for chunk in chunk_iter: process(chunk) # 自定义处理函数 ``` --- ### 数学表达验证 假设压缩包内每个CSV文件的数据结构满足: $$ \forall f \in \text{csv_files}, \quad \text{columns}(f) = [C_1, C_2, \dots, C_n] $$ 则合并后的数据框维度为: $$ \text{dim}(\text{full_df}) = \left( \sum_{f} |f|, n \right) $$ 其中$|f|$表示单个文件的行数。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值