Spaces:
Sleeping
Sleeping
| from flask import Flask, request, jsonify, render_template | |
| import joblib | |
| import pandas as pd | |
| import warnings | |
| warnings.filterwarnings('ignore') | |
| # Compatibility patch for sklearn 1.6.1 pickles on newer sklearn | |
| from sklearn.compose import _column_transformer | |
| class _RemainderColsList(list): | |
| def __init__(self, columns, future_dtype=None): | |
| super().__init__(columns) | |
| self.future_dtype = future_dtype | |
| _column_transformer._RemainderColsList = _RemainderColsList | |
| app = Flask(__name__) | |
| preprocessor = joblib.load('preprocessor1.pkl') | |
| model = joblib.load('randomforestmodel.pkl') | |
| TRANSACTION_TYPES = ['CASH_IN', 'CASH_OUT', 'DEBIT', 'PAYMENT', 'TRANSFER'] | |
| def index(): | |
| return render_template('index.html') | |
| def predict(): | |
| try: | |
| d = request.get_json() | |
| old_org = float(d['oldbalanceOrg']) | |
| new_org = float(d['newbalanceOrig']) | |
| old_dest = float(d['oldbalanceDest']) | |
| new_dest = float(d['newbalanceDest']) | |
| amount = float(d['amount']) | |
| err_orig = old_org - amount - new_org | |
| err_dest = new_dest - old_dest - amount | |
| df = pd.DataFrame([{ | |
| 'step': float(d['step']), | |
| 'type': d['type'], | |
| 'amount': amount, | |
| 'oldbalanceOrg': old_org, | |
| 'newbalanceOrig': new_org, | |
| 'oldbalanceDest': old_dest, | |
| 'newbalanceDest': new_dest, | |
| 'errorBalanceOrig': err_orig, | |
| 'errorBalanceDest': err_dest, | |
| }]) | |
| X = preprocessor.transform(df) | |
| proba = model.predict_proba(X)[0] | |
| return jsonify({ | |
| 'legit_prob': round(float(proba[0]) * 100, 2), | |
| 'fraud_prob': round(float(proba[1]) * 100, 2), | |
| 'error_balance_orig': round(err_orig, 2), | |
| 'error_balance_dest': round(err_dest, 2), | |
| }) | |
| except Exception as e: | |
| return jsonify({'error': str(e)}), 400 | |
| if __name__ == '__main__': | |
| app.run(host='0.0.0.0', port=5000, debug=False) | |