2. 环境搭建与工具链:Python环境、Jupyter Notebook、Pandas、Scikit-learn、Imbalanced-learn安装与配置

说实话,做风控模型最怕什么?不是算法调参,而是环境装到一半报错。我当年刚入行时,光装个xgboost就折腾了一下午,最后发现是Python版本不对。所以这一章,咱们先把家伙事儿备齐。

核心工具链一览

Python 3.8+ | Jupyter Notebook | Pandas | Scikit-learn | Imbalanced-learn

这五个工具,基本覆盖了从数据探索到模型训练的全流程。

交易异常识别 Python + Pandas Jupyter Notebook Scikit-learn Imbalanced-learn 工具链分层:数据清洗 → 探索分析 → 模型训练 → 样本平衡

2.1 Python环境:选对版本,少走弯路

我个人习惯用Python 3.8或3.9。为什么?因为很多老牌风控库对3.10以上支持还不稳定。我在项目中遇到过,用3.11装imbalanced-learn,结果依赖冲突搞了半小时。最后乖乖退回3.9,一分钟搞定。

安装方式有两种:

  • Anaconda(推荐新手):自带科学计算全家桶,省心。
  • Miniconda(我常用):轻量级,只装需要的包。

我的小技巧:装完Python第一件事,先跑 python --version 确认版本。然后建个虚拟环境,别一股脑全装到base里。你想想看,万一项目A要pandas 1.0,项目B要pandas 2.0,不隔离就等着哭吧。

# 创建虚拟环境
conda create -n fraud_detection python=3.9
conda activate fraud_detection

2.2 Jupyter Notebook:交互式探索利器

Jupyter Notebook这东西,说白了就是数据科学家的记事本。你可以边写代码边看结果,还能加注释、画图表。我每次做风控特征工程,都离不开它。

安装很简单:

pip install jupyter notebook
# 或者用conda
conda install jupyter

启动后,浏览器会自动打开。嗯,这里要注意:默认端口是8888,如果被占用了,加个 --port=9999 就行。

避坑指南:我曾经在服务器上跑Jupyter,结果忘了设置密码,被人连上来跑了挖矿脚本。所以远程使用时,一定要配密码或token:jupyter notebook password

2.3 Pandas:数据清洗的瑞士军刀

做交易异常识别,原始数据有多脏?我见过时间戳格式不统一、金额字段带逗号、用户ID重复……没有Pandas,你手动处理得累死。

安装命令:

pip install pandas

核心操作就三板斧:

  • read_csv() 读数据
  • dropna() / fillna() 处理缺失值
  • groupby() 聚合统计

举个例子,我处理过一批交易数据,金额字段混了"¥"符号:

import pandas as pd

df = pd.read_csv('transactions.csv')
# 清洗金额字段
df['amount'] = df['amount'].str.replace('¥', '').astype(float)
print(df.head())

重点:Pandas的 info()describe() 是必杀技。拿到数据先跑这两个函数,数据类型、缺失值、分布情况一目了然。

2.4 Scikit-learn:建模界的乐高积木

Scikit-learn,简称sklearn。它把机器学习算法封装得像乐高一样,你只需要拼装就行。逻辑回归、随机森林、XGBoost……都有现成的接口。

安装:

pip install scikit-learn

我一般用它做这几件事:

  1. 数据切分train_test_split(),按7:3分训练集和测试集。
  2. 特征缩放StandardScaler(),把数值归一化。
  3. 模型训练RandomForestClassifier(),直接fit。
  4. 评估指标classification_report(),看精确率、召回率。

我的经验:别一上来就调参。先用默认参数跑个baseline,看看数据质量。有一次我花了两天调随机森林的参数,结果发现是特征里有空值没处理——白忙活。

2.5 Imbalanced-learn:对付样本不平衡的利器

交易异常识别,说白了就是大海捞针。正常交易占99%,异常只有1%。这种数据直接建模,模型会学成"全都判正常",准确率99%但毫无卵用。

Imbalanced-learn就是来解决这个问题的。它提供了各种采样方法:

  • 随机欠采样:减少多数类样本
  • SMOTE:合成少数类样本(我常用)
  • ADASYN:自适应合成采样

安装:

pip install imbalanced-learn

使用示例:

from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
smote = SMOTE(random_state=42)
X_resampled, y_resampled = smote.fit_resample(X_train, y_train)

注意:SMOTE只能在训练集上用!千万别对测试集做采样,否则评估结果会虚高。我曾经犯过这个错,模型上线后召回率直接腰斩,被业务方追着问……

2.6 一键安装脚本

为了省事,我写了个安装脚本。你直接复制到终端跑就行:

# install_env.sh
conda create -n fraud_env python=3.9 -y
conda activate fraud_env

pip install jupyter notebook
pip install pandas
pip install scikit-learn
pip install imbalanced-learn

echo "环境搭建完成!"
jupyter notebook

跑完之后,用 pip list 检查一下版本。确保pandas不低于1.3,sklearn不低于0.24。版本太老的话,有些新功能用不了。

最后说一句:环境搭建是磨刀不误砍柴工。我见过太多人急着建模,结果装包装到崩溃。花20分钟把环境配好,后面能省2小时。值不值?你自己算算。


公众号:蓝海资料掘金营,微信deep3321