2. 环境搭建与工具链:Python环境、Jupyter Notebook、Pandas、Scikit-learn、Imbalanced-learn安装与配置
说实话,做风控模型最怕什么?不是算法调参,而是环境装到一半报错。我当年刚入行时,光装个xgboost就折腾了一下午,最后发现是Python版本不对。所以这一章,咱们先把家伙事儿备齐。
核心工具链一览
Python 3.8+ | Jupyter Notebook | Pandas | 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
我一般用它做这几件事:
- 数据切分:
train_test_split(),按7:3分训练集和测试集。 - 特征缩放:
StandardScaler(),把数值归一化。 - 模型训练:
RandomForestClassifier(),直接fit。 - 评估指标:
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