银行卡欺诈监测
本课属于 Coddy Machine Learning 学习旅程的“无监督学习”单元。第 49 课,共 51 课。
信用合作社的银行卡团队每天只能手动检查少量付款。上个月,欺诈交易藏在边缘位置:
但只有等几周后客户投诉,大家才会发现欺诈行为。因此,两个检测器必须在完全没有标签的情况下找出异常付款。
本周的投诉数据已收到。哪个检测器能发现更多?
挑战
困难本周的 400 笔支付记录在 payments.csv 中;程序会读取团队能检查的数量,即 budget。
- 对四个特征进行缩放。
- 用孤立森林(
random_state=0)和局部异常因子(20 个邻居)标记budget笔支付。 - 现在才查看
fraud:打印每个列表捕获了多少笔欺诈支付,以及团队检查了多少笔诚实支付。 - 把捕获数量更多的列表发给团队:
the isolation forest's list或the local outlier factor's list;如果数量相同,则发送either list, they tie。
上个月的记录中,预算为 10 笔时:
Budget: 10 of 300 payments
Isolation forest: caught 6 of 12 frauds, 4 honest payments checked
Local outlier factor: caught 10 of 12 frauds, 0 honest payments checked
Send the team: the local outlier factor's list亲手试试
import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import IsolationForest
from sklearn.neighbors import LocalOutlierFactor
# 每笔银行卡付款占一行;客户在几周后报告为欺诈的付款,其 fraud 值为 1
payments = pd.read_csv("payments.csv")
features = ["amount_eur", "hour", "km_from_home", "minutes_since_last"]
# 团队能人工核查多少笔付款
budget = int(input())
# 在下方编写你的代码
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
无监督学习中的所有课
自己练习: Python 在线编译器