Rumah > Artikel > pembangunan bahagian belakang > Membina Sistem Pengesanan Penipuan Kad Kredit Masa Nyata dengan FastAPI dan Pembelajaran Mesin
Penipuan kad kredit menimbulkan ancaman besar kepada industri kewangan, yang membawa kepada kerugian berbilion dolar setiap tahun. Untuk memerangi ini, model pembelajaran mesin telah dibangunkan untuk mengesan dan mencegah transaksi penipuan dalam masa nyata. Dalam artikel ini, kami akan melalui proses membina sistem pengesanan penipuan kad kredit masa nyata menggunakan FastAPI, rangka kerja web moden untuk Python dan pengelas Random Forest yang dilatih pada Set Data Pengesanan Penipuan Kad Kredit yang popular daripada Kaggle.
Matlamat projek ini adalah untuk mencipta perkhidmatan web yang meramalkan kemungkinan transaksi kad kredit menjadi penipuan. Perkhidmatan ini menerima data transaksi, memprosesnya terlebih dahulu dan mengembalikan ramalan bersama-sama dengan kebarangkalian penipuan. Sistem ini direka bentuk agar pantas, berskala dan mudah untuk disepadukan ke dalam sistem kewangan sedia ada.
Dataset data yang digunakan dalam projek ini ialah Set Data Pengesanan Penipuan Kad Kredit daripada Kaggle, yang mengandungi 284,807 transaksi, yang mana hanya 492 adalah penipuan. Ketidakseimbangan kelas ini menimbulkan cabaran, tetapi ia ditangani dengan melebihkan sampel kelas minoriti.
Ciri-ciri pertama diseragamkan menggunakan StandardScaler daripada scikit-learn. Dataset kemudiannya dibahagikan kepada set latihan dan ujian. Memandangkan ketidakseimbangan, teknik RandomOverSampler digunakan untuk mengimbangi kelas sebelum melatih model.
from sklearn.preprocessing import StandardScaler from imblearn.over_sampling import RandomOverSampler # Standardize features scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # Balance the dataset ros = RandomOverSampler(random_state=42) X_resampled, y_resampled = ros.fit_resample(X_scaled, y)
Kami melatih pengelas Random Forest, yang sangat sesuai untuk mengendalikan set data yang tidak seimbang dan memberikan ramalan yang mantap. Model ini dilatih mengenai data terlebih sampel dan prestasinya dinilai menggunakan ketepatan, ketepatan, ingat semula dan keluk AUC-ROC.
from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import classification_report, roc_auc_score # Train the model model = RandomForestClassifier(n_estimators=100, random_state=42) model.fit(X_resampled, y_resampled) # Evaluate the model y_pred = model.predict(X_test_scaled) print(classification_report(y_test, y_pred)) print("AUC-ROC:", roc_auc_score(y_test, model.predict_proba(X_test_scaled)[:, 1]))
Dengan model terlatih dan penimbang yang disimpan menggunakan joblib, kami terus membina aplikasi FastAPI. FastAPI dipilih untuk kelajuan dan kemudahan penggunaannya, menjadikannya sesuai untuk aplikasi masa nyata.
Aplikasi FastAPI mentakrifkan titik akhir POST /ramalan/ yang menerima data transaksi, memprosesnya dan mengembalikan ramalan dan kebarangkalian model.
from fastapi import FastAPI, HTTPException from pydantic import BaseModel import joblib import pandas as pd # Load the trained model and scaler model = joblib.load("random_forest_model.pkl") scaler = joblib.load("scaler.pkl") app = FastAPI() class Transaction(BaseModel): V1: float V2: float # Include all other features used in your model Amount: float @app.post("/predict/") def predict(transaction: Transaction): try: data = pd.DataFrame([transaction.dict()]) scaled_data = scaler.transform(data) prediction = model.predict(scaled_data) prediction_proba = model.predict_proba(scaled_data) return {"fraud_prediction": int(prediction[0]), "probability": float(prediction_proba[0][1])} except Exception as e: raise HTTPException(status_code=400, detail=str(e))
Untuk menguji aplikasi secara setempat, anda boleh menjalankan pelayan FastAPI menggunakan uvicorn dan menghantar permintaan POST ke titik akhir /predict/. Perkhidmatan ini akan memproses permintaan masuk, menskalakan data dan mengembalikan sama ada transaksi itu adalah penipuan.
uvicorn main:app --reload
Anda kemudian boleh menguji API menggunakan curl atau alat seperti Posmen:
curl -X POST http://127.0.0.1:8000/predict/ \ -H "Content-Type: application/json" \ -d '{"V1": -1.359807134, "V2": -0.072781173, ..., "Amount": 149.62}'
API akan mengembalikan objek JSON dengan ramalan penipuan dan kebarangkalian yang berkaitan.
Dalam artikel ini, kami telah membina sistem pengesanan penipuan kad kredit masa nyata yang menggabungkan pembelajaran mesin dengan rangka kerja web moden. Pautan github ada di sini. Sistem ini direka bentuk untuk mengendalikan data transaksi masa nyata dan menyediakan ramalan segera, menjadikannya alat yang berharga untuk institusi kewangan yang ingin memerangi penipuan.
Dengan menggunakan model ini menggunakan FastAPI, kami memastikan perkhidmatan itu bukan sahaja pantas tetapi juga berskala, mampu mengendalikan berbilang permintaan secara serentak. Projek ini boleh diperluaskan lagi dengan model yang lebih canggih, kejuruteraan ciri yang dipertingkatkan atau penyepaduan dengan persekitaran pengeluaran.
Untuk meningkatkan lagi sistem, pertimbangkan perkara berikut:
Atas ialah kandungan terperinci Membina Sistem Pengesanan Penipuan Kad Kredit Masa Nyata dengan FastAPI dan Pembelajaran Mesin. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!