Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions Pipfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[[source]]
name = "pypi"
url = "https://pypi.org/simple"
verify_ssl = true

[dev-packages]

[packages]

[requires]
python_version = "3.6"
20 changes: 20 additions & 0 deletions Pipfile.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

33 changes: 0 additions & 33 deletions app.py

This file was deleted.

Binary file added logistic.pkl
Binary file not shown.
32 changes: 16 additions & 16 deletions model.py
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
'''







'''
import pandas as pd
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.lines as mlines
from mpl_toolkits.mplot3d import Axes3D
import seaborn as sns
from sklearn.model_selection import train_test_split, learning_curve
from sklearn.metrics import average_precision_score
from xgboost.sklearn import XGBClassifier
from xgboost import plot_importance, to_graphviz
from sklearn.linear_model import LogisticRegression
import pickle


df = pd.read_csv('Fraud_data_kaggle.csv')
X = df.loc[(df.type == 'TRANSFER') | (df.type == 'CASH_OUT')]

Expand Down Expand Up @@ -57,11 +59,9 @@
random_state = randomState)

# Long computation in this cell (~1.8 minutes)
weights = (Y == 0).sum() / (1.0 * (Y == 1).sum())
clf = XGBClassifier(max_depth = 3, scale_pos_weight = weights, \
n_jobs = 4)
probabilities = clf.fit(trainX, trainY).predict_proba(testX)
print('AUPRC = {}'.format(average_precision_score(testY, \
probabilities[:, 1])))

pickle.dump(clf, open('final_prediction.pkl', 'wb'))
# weights = (Y == 0).sum() / (1.0 * (Y == 1).sum())
clf = LogisticRegression()
log = clf.fit(trainX, trainY)
predict = log.predict(testX)

pickle.dump(log, open('logistic.pkl', 'wb'))
55 changes: 55 additions & 0 deletions predict.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import numpy as np
import sys
import pickle

model = pickle.load(open('final_prediction.pickle', 'rb'))


def predict(argv):

int_features = [int(x) for x in argv[1:]]
final_features = [np.array(int_features)]
prediction = model.predict(final_features)

output = prediction[0]

return output


if __name__ == '__main__':
predict(sys.argv)


# app = Flask(__name__)
# from flask import Flask, request, jsonify, render_template


# @app.route('/')
# def home():
# return render_template('index.html')


# @app.route('/predict', methods=['POST'])
# def predict():

# int_features = [int(x) for x in request.form.values()]
# final_features = [np.array(int_features)]
# prediction = model.predict(final_features)

# output = round(prediction[0], 2)

# return render_template('index.html', prediction_text='This transaction is likely to be fraud in percentage by $ {}'.format(output))


# @app.route('/results', methods=['POST'])
# def results():

# data = request.get_json(force=True)
# prediction = model.predict([np.array(list(data.values()))])

# output = prediction[0]
# return jsonify(output)


# if __name__ == "__main__":
# app.run(debug=True)
10 changes: 10 additions & 0 deletions request.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import requests

url = 'http://localhost:5000/results'
r = requests.post(url,json={'step':205, 'type':1, 'oldbalanceOrg':0, 'newbalanceOrig': 0, 'oldbalanceDest': 1853683.32,
'newbalanceDest': 1916926.76, 'errorBalanceOrig': 63243.44, 'errorBalanceDest':0})

print(r.json())
'''

'''
18 changes: 18 additions & 0 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
astroid==2.3.3
Click==7.0
colorama==0.4.3
Flask==1.1.1
isort==4.3.21
itsdangerous==1.1.0
Jinja2==2.11.1
lazy-object-proxy==1.4.3
MarkupSafe==1.1.1
mccabe==0.6.1
numpy==1.18.1
pandas==1.0.1
pylint==2.4.4
python-dateutil==2.8.1
pytz==2019.3
six==1.14.0
Werkzeug==1.0.0
wrapt==1.11.2