├── README.md ├── app.py ├── classification_report.png ├── evaluate_model.py ├── final_dataset.csv ├── fraudulent_distribution.png ├── generate_synData.py ├── main.py ├── new_transaction_data.csv ├── pdf_to_csv.py ├── predict.py ├── predictions.csv ├── preprocess_data.py ├── req.txt ├── train_model.py └── visualize_predictions.py /README.md: -------------------------------------------------------------------------------- 1 | # Fraud Detection Project 2 | 3 | ## Overview 4 | 5 | This project is a fraud detection system that leverages machine learning models to identify fraudulent transactions. It includes data preprocessing, synthetic data generation, model training, and a web-based interface for results visualization. 6 | 7 | ## Features 8 | 9 | - Preprocessing and cleaning raw transaction data 10 | - Generating synthetic data to enhance training datasets 11 | - Building and training a Random Forest model 12 | - Visualizing predictions and insights through a web dashboard 13 | 14 | ## Requirements 15 | 16 | To run this project, you need: 17 | 18 | - Python (>=3.9) 19 | - Libraries specified in `req.txt` 20 | 21 | ### Install Dependencies 22 | bash 23 | pip install -r req.txt 24 | 25 | 26 | ## Usage 27 | 28 | 1. **Clone the Repository** 29 | bash 30 | git clone 31 | cd CODE/fraud_detection_project 32 | 33 | 34 | 2. **Prepare the Data** 35 | Place your data files in the `data/` folder. 36 | 37 | 3. **Run the Web Application** 38 | bash 39 | python app.py 40 | 41 | 42 | 4. **Optional: Retrain the Model** 43 | If you need to retrain the model: 44 | bash 45 | python src/model/train_model.py 46 | 47 | 48 | ## Project Structure 49 | 50 | fraud_detection_project/ 51 | ├── app.py 52 | ├── main.py 53 | ├── synthetic_data.py 54 | 55 | data/ 56 | ├── final_dataset.csv 57 | ├── new_transaction_data.csv 58 | ├── predictions.csv 59 | ├── transactions.csv 60 | └── transaction_history_unlocked.pdf 61 | 62 | src/ 63 | ├── generate_synData.py 64 | ├── pdf_to_csv.py 65 | ├── predict.py 66 | ├── visualize_predictions.py 67 | 68 | src/model/ 69 | ├── best_random_forest_model.joblib 70 | ├── train_model.py 71 | ├── evaluate_model.py 72 | ├── preprocessed_data.joblib 73 | └── preprocessor.joblib 74 | 75 | src/preprocess/ 76 | └── preprocess_data.py 77 | 78 | static/ 79 | ├── css/ 80 | └── images/ 81 | 82 | templates/ 83 | ├── analysis.html 84 | ├── dashboard.html 85 | ├── index.html 86 | └── visualize.html 87 | 88 | req.txt 89 | ## How It Works 90 | 91 | 1. **Data Preprocessing** 92 | The `preprocess_data.py` script cleans and prepares raw transaction data for training. 93 | 94 | 2. **Synthetic Data Generation** 95 | `generate_synData.py` creates synthetic datasets to augment training data. 96 | 97 | 3. **Model Training** 98 | `train_model.py` trains a Random Forest model to detect fraudulent transactions. 99 | 100 | 4. **Prediction and Visualization** 101 | `predict.py` runs predictions, and the results are displayed in a user-friendly web interface. 102 | 103 | ### Libraries and Tools 104 | 105 | This project leverages the following libraries and tools: 106 | 107 | - *Python*: Programming language used for implementation. 108 | - *Scikit-learn*: For machine learning model development and evaluation. 109 | - *Pandas*: For data preprocessing and manipulation. 110 | - *Joblib*: For saving and loading model and preprocessor artifacts. 111 | - *Flask*: To build the web application and API endpoints. 112 | - *Matplotlib/Seaborn*: For data visualization and exploratory analysis. 113 | 114 | ### Data Sources 115 | 116 | - *Synthetic Dataset*: Created using generate_synData.py to supplement training data. 117 | - *Raw Transaction Data*: Processed using scripts in the preprocess/ and data/ directories. 118 | 119 | 120 | ### Acknowledgments 121 | 122 | - *OpenAI*: For providing tools and guidance during the project. 123 | - *Community Contributors*: Special thanks to open-source community contributors for shared knowledge and resources. 124 | 125 | ## License 126 | 127 | This project is licensed under the MIT License. See the `LICENSE` file for full details. 128 | 129 | --- 130 | 131 | -------------------------------------------------------------------------------- /app.py: -------------------------------------------------------------------------------- 1 | from flask import Flask, render_template, request, redirect, url_for 2 | import os 3 | import subprocess 4 | 5 | app = Flask(__name__) 6 | 7 | # Path for the data directory to save files 8 | UPLOAD_FOLDER = 'data' 9 | app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER 10 | 11 | # Allowed file extensions for the upload 12 | ALLOWED_EXTENSIONS = {'pdf'} 13 | 14 | def allowed_file(filename): 15 | return '.' in filename and filename.rsplit('.', 1)[1].lower() in ALLOWED_EXTENSIONS 16 | 17 | @app.route('/') 18 | def index(): 19 | return render_template('index.html') 20 | 21 | @app.route('/dashboard') 22 | def dashboard(): 23 | return render_template('dashboard.html') 24 | 25 | @app.route('/upload', methods=['POST']) 26 | def upload_file(): 27 | if 'file' not in request.files: 28 | return redirect(request.url) 29 | 30 | file = request.files['file'] 31 | 32 | if file.filename == '': 33 | return redirect(request.url) 34 | 35 | if file and allowed_file(file.filename): 36 | filename = os.path.join(app.config['UPLOAD_FOLDER'], file.filename) 37 | file.save(filename) 38 | 39 | # After uploading the file, redirect to the analysis page 40 | return render_template('analysis.html', filename=file.filename) 41 | 42 | return 'File not allowed' 43 | 44 | @app.route('/visualize', methods=["GET"]) 45 | def visualize(): 46 | # Run the `main.py` file in parallel to trigger the analysis process 47 | print("[INFO] Running main.py...") 48 | 49 | # Run main.py asynchronously in the background 50 | subprocess.Popen(["python", "main.py"]) 51 | 52 | # Redirect to the new page with visualization options 53 | return redirect(url_for("visualize_results")) 54 | 55 | @app.route("/visualize-results") 56 | def visualize_results(): 57 | # Render the new visualization page with buttons for model analysis and prediction analysis 58 | return render_template("visualize.html") # Create visualize.html for this 59 | 60 | if __name__ == '__main__': 61 | app.run(debug=True) 62 | -------------------------------------------------------------------------------- /classification_report.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dineshm07/Designproject-1/eb175729e5b94c15117ed9f8ace472eb48e9af02/classification_report.png -------------------------------------------------------------------------------- /evaluate_model.py: -------------------------------------------------------------------------------- 1 | from sklearn.ensemble import RandomForestClassifier 2 | from sklearn.model_selection import GridSearchCV 3 | from sklearn.metrics import classification_report, confusion_matrix 4 | import joblib 5 | import pandas as pd 6 | import matplotlib.pyplot as plt 7 | import seaborn as sns 8 | 9 | def evaluate_model(model, X_test, y_test, report_output_path="static/images/classification_report.png"): 10 | """ 11 | Evaluate the model using the test dataset. 12 | 13 | Parameters: 14 | - model: Trained classifier model 15 | - X_test: Features for testing 16 | - y_test: True labels for testing 17 | - report_output_path: Path to save the classification report visualization 18 | 19 | Returns: 20 | None 21 | """ 22 | print("[INFO] Evaluating the model...") 23 | 24 | # Predict the labels for the test set 25 | y_pred = model.predict(X_test) 26 | 27 | # Generate the classification report 28 | print("Classification Report:") 29 | report = classification_report(y_test, y_pred) 30 | print(report) 31 | 32 | # Save the classification report as a text file 33 | report_txt_path = report_output_path.replace(".png", ".txt") 34 | with open(report_txt_path, "w") as file: 35 | file.write(report) 36 | print(f"[INFO] Classification report saved as text at {report_txt_path}") 37 | 38 | # Visualize the classification report 39 | report_dict = classification_report(y_test, y_pred, output_dict=True) 40 | df_report = pd.DataFrame(report_dict).transpose().round(2) 41 | df_report = df_report.drop("support", axis=1) # Drop 'support' column for cleaner visuals 42 | 43 | plt.figure(figsize=(10, 6)) 44 | sns.heatmap(df_report.iloc[:-1, :-1], annot=True, cmap="YlGnBu", cbar=False) 45 | plt.title("Classification Report") 46 | plt.savefig(report_output_path, bbox_inches="tight") 47 | plt.close() 48 | print(f"[INFO] Classification report visualization saved as PNG at {report_output_path}") 49 | 50 | # Confusion Matrix 51 | print("Confusion Matrix:") 52 | cm = confusion_matrix(y_test, y_pred) 53 | print(cm) 54 | 55 | def tune_hyperparameters(X_train, y_train): 56 | """ 57 | Tune the hyperparameters of a Random Forest Classifier using GridSearchCV. 58 | 59 | Parameters: 60 | - X_train: Features for training 61 | - y_train: Labels for training 62 | 63 | Returns: 64 | - best_rf_model: The best Random Forest model found by GridSearchCV 65 | """ 66 | print("[INFO] Hyperparameter tuning with GridSearchCV...") 67 | 68 | # Define the RandomForestClassifier 69 | rf_model = RandomForestClassifier(random_state=42) 70 | 71 | # Define the parameter grid for GridSearchCV 72 | param_grid = { 73 | 'n_estimators': [100, 200, 300], 74 | 'max_depth': [None, 10, 20, 30], 75 | 'min_samples_split': [2, 5, 10], 76 | 'min_samples_leaf': [1, 2, 4] 77 | } 78 | 79 | # Apply GridSearchCV to find the best parameters 80 | grid_search = GridSearchCV(estimator=rf_model, param_grid=param_grid, cv=3, n_jobs=-1, verbose=2) 81 | grid_search.fit(X_train, y_train) 82 | 83 | # Get the best parameters 84 | print(f"[INFO] Best Hyperparameters: {grid_search.best_params_}") 85 | 86 | # Get the best model 87 | best_rf_model = grid_search.best_estimator_ 88 | 89 | # Save the best model to a file 90 | joblib.dump(best_rf_model, 'src/model/best_random_forest_model.joblib') 91 | print("[INFO] Best model saved to 'src/model/best_random_forest_model.joblib'") 92 | 93 | return best_rf_model 94 | -------------------------------------------------------------------------------- /final_dataset.csv: -------------------------------------------------------------------------------- 1 | Date,Details,Debit,Credit,Balance,Transaction_Frequency,Transaction_Time,Hour_of_Day,Location,Transaction_Type,Fraudulent 2 | 2023-06-11,BY TRANSFER -,0.0,0.0,1000.0,0,2023-06-11 08:00:00,8,Mumbai,Other,0 3 | 2023-07-03,WITHDRAWAL TRANSFER,0.0,0.0,2650.0,4,2023-07-03 08:00:00,8,International,Other,0 4 | 2023-07-03,BY TRANSFER -,0.0,0.0,2650.0,4,2023-07-03 08:00:00,8,Chennai,Other,0 5 | 2023-07-03,BY TRANSFER -,0.0,0.0,2500.0,4,2023-07-03 08:00:00,8,Mumbai,Other,0 6 | 2023-07-03,WITHDRAWAL TRANSFER INR 50.00 -,0.0,0.0,2450.0,4,2023-07-03 08:00:00,8,Mumbai,Other,0 7 | 2023-07-03,WITHDRAWAL TRANSFER,0.0,0.0,2400.0,4,2023-07-03 08:00:00,8,International,Other,0 8 | 2023-07-05,BY TRANSFER -,0.0,0.0,3400.0,3,2023-07-05 08:00:00,8,Kolkata,Other,0 9 | 2023-07-05,WITHDRAWAL TRANSFER,0.0,0.0,3400.0,3,2023-07-05 08:00:00,8,International,Other,0 10 | 2023-07-05,BY TRANSFER UPI RVSL -,0.0,0.0,3400.0,3,2023-07-05 08:00:00,8,Kolkata,UPI,0 11 | 2023-07-05,WITHDRAWAL TRANSFER,0.0,0.0,3400.0,3,2023-07-05 08:00:00,8,International,Other,0 12 | 2023-07-25,CIUB0000201/Mr KANNAN,0.0,0.0,20000.0,2,2023-07-25 08:00:00,8,International,Other,0 13 | 2023-07-25,UNCOLL CHRG DT: INR 30.03 -,0.0,0.0,22777.94,2,2023-07-25 08:00:00,8,Delhi,Other,0 14 | 2023-07-25,BY TRANSFER NPCI -,0.0,0.0,22800.0,2,2023-07-25 08:00:00,8,Chennai,Other,0 15 | 2023-07-26,utib0000553/Google India INR 30.00 -,0.0,0.0,2717.94,9,2023-07-26 08:00:00,8,Trichy,Other,0 16 | 2023-07-26,IDIB000G011/Mr INR 60.00 -,0.0,0.0,2657.94,9,2023-07-26 08:00:00,8,International,Other,0 17 | 2023-07-26,IDIB000G011/Mr Kamalesh INR 6.00 -,0.0,0.0,2621.94,9,2023-07-26 08:00:00,8,Bangalore,Other,0 18 | 2023-07-26,IDIB000G011/Mr Kamalesh INR 10.00 -,0.0,0.0,2611.94,9,2023-07-26 08:00:00,8,Delhi,Other,0 19 | 2023-07-26,UTIB0000000/Store/XXXXX INR 20.00 -,0.0,0.0,2591.94,9,2023-07-26 08:00:00,8,Delhi,Other,0 20 | 2023-07-26,IOBA0000520/DINESH INR 40.00 -,0.0,0.0,2551.94,9,2023-07-26 08:00:00,8,International,Other,0 21 | 2023-07-26,TRAN DATE -(MMDD) 0726 INR 100.00 -,0.0,0.0,2451.94,9,2023-07-26 08:00:00,8,Kolkata,Other,0 22 | 2023-07-26,ICIC0DC0099/ZOMATO INR 100.70 -,0.0,0.0,2351.24,9,2023-07-26 08:00:00,8,Kolkata,Other,0 23 | 2023-07-26,PYTM0123456/ATHAVAN INR 30.00 -,0.0,0.0,2747.94,9,2023-07-26 08:00:00,8,Mumbai,Other,0 24 | 2023-07-26,IDIB000G011/Mr Kamalesh INR 30.00 -,0.0,0.0,2627.94,9,2023-07-26 08:00:00,8,International,Other,0 25 | 2023-07-27,CNRB0000033/S INR 1.00 -,0.0,0.0,2350.24,1,2023-07-27 08:00:00,8,Trichy,Other,0 26 | 2023-07-27,UTIB0000000/Zomato INR 132.20 -,0.0,0.0,2218.04,1,2023-07-27 08:00:00,8,Mumbai,Other,0 27 | 2023-07-28,UPI SETTLEMENT A/C - INR 40.00,0.0,0.0,2258.04,0,2023-07-28 08:00:00,8,International,UPI,0 28 | 2023-07-29,IDIB000G011/Mr Kamalesh INR 100.00 -,0.0,0.0,2158.04,1,2023-07-29 08:00:00,8,Delhi,Other,0 29 | 2023-07-29,PYTM0123456/MEGALA INR 20.00 -,0.0,0.0,2138.04,1,2023-07-29 08:00:00,8,Delhi,Other,0 30 | 2023-07-30,utib0000553/Google India INR 79.00 -,0.0,0.0,2059.04,0,2023-07-30 08:00:00,8,Chennai,Other,0 31 | 2023-07-31,ICIC0DC0099/EURONETG INR 30.00 -,0.0,0.0,2199.04,3,2023-07-31 08:00:00,8,Mumbai,Other,0 32 | 2023-07-31,CIUB0000201/Mr KANNAN - INR 200.00,0.0,0.0,2259.04,3,2023-07-31 08:00:00,8,Mumbai,Other,0 33 | 2023-07-31,PYTM0123456/ATHAVAN INR 30.00 -,0.0,0.0,2229.04,3,2023-07-31 08:00:00,8,Chennai,Other,0 34 | 2023-07-31,MIN BAL CHGS INR 360.00 -,0.0,0.0,1839.04,3,2023-07-31 08:00:00,8,Bangalore,Other,0 35 | 2023-08-01,utib0000553/Google India INR 60.00 -,0.0,0.0,1779.04,1,2023-08-01 08:00:00,8,Bangalore,Other,0 36 | 2023-08-01,IOBA0000520/DINESH INR 50.00 -,0.0,0.0,1729.04,1,2023-08-01 08:00:00,8,International,Other,0 37 | 2023-08-04,CNRB0000033/NAVIN INR 100.00 -,0.0,0.0,1573.04,2,2023-08-04 08:00:00,8,International,Other,0 38 | 2023-08-04,BARB0TIRUCH/SOWBAKY INR 36.00 -,0.0,0.0,1673.04,2,2023-08-04 08:00:00,8,Kolkata,Other,0 39 | 2023-08-04,PYTM0123456/ATHAVAN INR 20.00 -,0.0,0.0,1709.04,2,2023-08-04 08:00:00,8,Delhi,Other,0 40 | 2023-08-07,TRAN DATE -(MMDD) 0807 INR 200.00 -,0.0,0.0,1373.04,0,2023-08-07 08:00:00,8,International,Other,0 41 | 2023-08-10,CIUB0000201/Mr KANNAN,0.0,0.0,1300.0,0,2023-08-10 08:00:00,8,Delhi,Other,0 42 | 2023-08-19,BY TRANSFER NPCI -,0.0,0.0,34200.0,0,2023-08-19 08:00:00,8,International,Other,0 43 | 2023-08-20,HDFC0000622/Bharti Airtel INR 29.00 -,0.0,0.0,34206.04,2,2023-08-20 08:00:00,8,Delhi,Other,0 44 | 2023-08-20,YESB0YESUPI/SWIGGY INR 118.00 -,0.0,0.0,34235.04,2,2023-08-20 08:00:00,8,International,UPI,0 45 | 2023-08-20,CIUB0000201/Mr KANNAN - INR 150.00,0.0,0.0,34353.04,2,2023-08-20 08:00:00,8,International,Other,0 46 | 2023-08-22,CNRB0000033/S INR 1.00 -,0.0,0.0,34205.04,0,2023-08-22 08:00:00,8,International,Other,0 47 | 2023-08-24,IDIB000G011/Mr Kamalesh,0.0,0.0,1000.0,9,2023-08-24 08:00:00,8,Bangalore,Other,0 48 | 2023-08-24,CIUB0000201/Mr KANNAN,0.0,0.0,1000.0,9,2023-08-24 08:00:00,8,International,Other,0 49 | 2023-08-24,IDIB000G011/Mr Kamalesh INR 30.00 -,0.0,0.0,33985.04,9,2023-08-24 08:00:00,8,Chennai,Other,0 50 | 2023-08-24,IDIB000G011/Mr Kamalesh - INR 5.00,0.0,0.0,33000.04,9,2023-08-24 08:00:00,8,Chennai,Other,0 51 | 2023-08-24,IDIB000G011/Mr Kamalesh -,0.0,0.0,1000.0,9,2023-08-24 08:00:00,8,International,Other,0 52 | 2023-08-24,IDIB000G011/Mr Kamalesh - INR 10.00,0.0,0.0,33995.04,9,2023-08-24 08:00:00,8,Delhi,Other,0 53 | 2023-08-24,IDIB000G011/Mr Kamalesh -,0.0,0.0,1000.0,9,2023-08-24 08:00:00,8,International,Other,0 54 | 2023-08-24,IDIB000G011/Mr Kamalesh INR 150.00 -,0.0,0.0,34015.04,9,2023-08-24 08:00:00,8,Bangalore,Other,0 55 | 2023-08-24,SBIN0000924/JAGADEESH INR 40.00 -,0.0,0.0,34165.04,9,2023-08-24 08:00:00,8,Kolkata,Other,0 56 | 2023-08-24,IDIB000G011/Mr Kamalesh,0.0,0.0,1000.0,9,2023-08-24 08:00:00,8,Bangalore,Other,0 57 | 2023-08-25,PYTM0123456/JAY VEE INR 15.00 -,0.0,0.0,32985.04,5,2023-08-25 08:00:00,8,Trichy,Other,0 58 | 2023-08-25,CNRB0000033/S INR 100.00 -,0.0,0.0,32885.04,5,2023-08-25 08:00:00,8,Kolkata,Other,0 59 | 2023-08-25,TRAN DATE -(MMDD) 0825,0.0,0.0,10000.0,5,2023-08-25 08:00:00,8,Bangalore,Other,0 60 | 2023-08-25,TRAN DATE -(MMDD) 0825,0.0,0.0,10000.0,5,2023-08-25 08:00:00,8,Bangalore,Other,0 61 | 2023-08-25,TRAN DATE -(MMDD) 0825,0.0,0.0,10000.0,5,2023-08-25 08:00:00,8,Chennai,Other,0 62 | 2023-08-25,TRAN DATE -(MMDD) 0825,0.0,0.0,2500.0,5,2023-08-25 08:00:00,8,International,Other,0 63 | 2023-08-29,IDIB000G011/Mr Kamalesh -,0.0,0.0,1000.0,1,2023-08-29 08:00:00,8,International,Other,0 64 | 2023-08-29,IDIB000G011/Mr Kamalesh,0.0,0.0,1000.0,1,2023-08-29 08:00:00,8,International,Other,0 65 | 2023-09-20,IOBA0000728/GURUPRIYA - INR 500.00,0.0,0.0,1001.04,1,2023-09-20 08:00:00,8,International,Other,0 66 | 2023-09-20,PYTM0123456/KR College,0.0,0.0,1000.0,1,2023-09-20 08:00:00,8,Chennai,Other,0 67 | 2023-11-09,IOBA0000728/GURUPRIYA -,0.0,0.0,4250.0,1,2023-11-09 08:00:00,8,International,Other,0 68 | 2023-11-09,PYTM0123456/KR College,0.0,0.0,4250.0,1,2023-11-09 08:00:00,8,Bangalore,Other,0 69 | 2023-11-14,CNRB0000033/JAYA -,0.0,0.0,4500.0,1,2023-11-14 08:00:00,8,Delhi,Other,0 70 | 2023-11-14,CNRB0000033/JAYA,0.0,0.0,4500.0,1,2023-11-14 08:00:00,8,Kolkata,Other,0 71 | 2023-12-08,CIUB0000201/Mr KANNAN -,0.0,0.0,2500.0,1,2023-12-08 08:00:00,8,Mumbai,Other,0 72 | 2023-12-08,PYTM0123456/KR College,0.0,0.0,2400.0,1,2023-12-08 08:00:00,8,International,Other,0 73 | 2023-12-09,SBIN0016391/INDIRA S -,0.0,0.0,2400.0,1,2023-12-09 08:00:00,8,International,Other,0 74 | 2023-12-09,PYTM0123456/KR College,0.0,0.0,2400.0,1,2023-12-09 08:00:00,8,Trichy,Other,0 75 | 2023-12-10,IOBA0000728/GURUPRIYA -,0.0,0.0,2400.0,1,2023-12-10 08:00:00,8,International,Other,0 76 | 2023-12-10,PYTM0123456/KR College,0.0,0.0,2400.0,1,2023-12-10 08:00:00,8,Kolkata,Other,0 77 | 2024-02-01,BY TRANSFER NPCI -,0.0,0.0,22800.0,1,2024-02-01 08:00:00,8,Kolkata,Other,0 78 | 2024-02-01,CIUB0000201/mkannan765,0.0,0.0,22500.0,1,2024-02-01 08:00:00,8,International,Other,0 79 | 2024-03-13,FDRL0001151/KUMAR/XX,0.0,0.0,4800.0,3,2024-03-13 08:00:00,8,Trichy,Other,0 80 | 2024-03-13,CNRB0000033/JAYA -,0.0,0.0,5000.0,3,2024-03-13 08:00:00,8,International,Other,0 81 | 2024-03-13,SBIN0016391/INDIRA S -,0.0,0.0,1000.0,3,2024-03-13 08:00:00,8,Kolkata,Other,0 82 | 2024-03-13,PYTM0123456/KR College,0.0,0.0,1000.0,3,2024-03-13 08:00:00,8,Trichy,Other,0 83 | 2024-03-27,BY TRANSFER NPCI -,0.0,0.0,34200.0,1,2024-03-27 08:00:00,8,Kolkata,Other,0 84 | 2024-03-27,CIUB0000201/mkannan765,0.0,0.0,34000.0,1,2024-03-27 08:00:00,8,International,Other,0 85 | 2024-04-05,Nithiyaa M /TRANSFER -,0.0,0.0,1500.0,2,2024-04-05 08:00:00,8,International,Other,0 86 | 2024-04-05,CIUB0000201/Mr KANNAN - INR 100.00,0.0,0.0,1600.0,2,2024-04-05 08:00:00,8,Kolkata,Other,0 87 | 2024-04-05,KVBL0001156/LOVELY INR 90.00 -,0.0,0.0,1510.0,2,2024-04-05 08:00:00,8,Kolkata,Other,0 88 | 2024-04-06,WITHDRAWAL TRANSFER INR 118.00 -,0.0,0.0,1392.0,0,2024-04-06 08:00:00,8,Trichy,Other,0 89 | 2024-04-08,KVBL0001195/AKASH S - INR 20.00,0.0,0.0,1412.0,1,2024-04-08 08:00:00,8,Kolkata,Other,0 90 | 2024-04-08,YESB0PTMUPI/JAY VEE INR 54.00 -,0.0,0.0,1358.0,1,2024-04-08 08:00:00,8,Mumbai,UPI,0 91 | 2024-04-09,SMS_CHGS_DEC-23_QTR INR 21.30 -,0.0,0.0,1336.7,0,2024-04-09 08:00:00,8,International,Other,0 92 | 2024-04-10,IOBA0000520/DINESH INR 200.00 -,0.0,0.0,1136.7,0,2024-04-10 08:00:00,8,Delhi,Other,0 93 | 2024-04-11,UTIB0000553/Google India INR 39.00 -,0.0,0.0,1097.7,0,2024-04-11 08:00:00,8,Bangalore,Other,0 94 | 2024-04-12,YESB0YBLUPI/GUDDU INR 20.00 -,0.0,0.0,1077.7,0,2024-04-12 08:00:00,8,International,UPI,0 95 | 2024-04-13,UTIB0000000/Store/XXXXX INR 40.00 -,0.0,0.0,1037.7,0,2024-04-13 08:00:00,8,Bangalore,Other,0 96 | 2024-04-15,YESB0YBLUPI/ATHAVAN INR 30.00 -,0.0,0.0,1007.7,0,2024-04-15 08:00:00,8,Mumbai,UPI,0 97 | 2024-04-17,CIUB0000201/Mr KANNAN - INR 100.00,0.0,0.0,1107.7,1,2024-04-17 08:00:00,8,Kolkata,Other,0 98 | 2024-04-17,utib0000553/Google India INR 29.00 -,0.0,0.0,1078.7,1,2024-04-17 08:00:00,8,Trichy,Other,0 99 | 2024-04-18,CNRB0000033/jamunadevi INR 50.00 -,0.0,0.0,1028.7,1,2024-04-18 08:00:00,8,Chennai,Other,0 100 | 2024-04-18,AIRP0000001/Airtel Prepaid INR 19.00 -,0.0,0.0,1009.7,1,2024-04-18 08:00:00,8,Delhi,Other,0 101 | 2024-04-20,KVBL0001195/AKASH S - INR 5.00,0.0,0.0,1014.7,0,2024-04-20 08:00:00,8,International,Other,0 102 | 2024-04-24,KVBL0001195/AKASH S - INR 40.00,0.0,0.0,1101.7,6,2024-04-24 08:00:00,8,Bangalore,Other,0 103 | 2024-04-24,YESB0YBLUPI/SOWBAKY INR 48.00 -,0.0,0.0,1061.7,6,2024-04-24 08:00:00,8,Bangalore,UPI,0 104 | 2024-04-24,YESB0YBLUPI/ATHAVAN INR 20.00 -,0.0,0.0,1001.7,6,2024-04-24 08:00:00,8,Mumbai,UPI,0 105 | 2024-04-24,UTIB0001604/ARUNA DEVI - INR 30.00,0.0,0.0,1109.7,6,2024-04-24 08:00:00,8,Delhi,Other,0 106 | 2024-04-24,YESB0YBLUPI/GUDDU INR 35.00 -,0.0,0.0,1079.7,6,2024-04-24 08:00:00,8,International,UPI,0 107 | 2024-04-24,YESB0YBLUPI/RAJA INR 80.00 -,0.0,0.0,1021.7,6,2024-04-24 08:00:00,8,International,UPI,0 108 | 2024-04-24,CIUB0000201/Mr KANNAN - INR 100.00,0.0,0.0,1114.7,6,2024-04-24 08:00:00,8,International,Other,0 109 | 2024-04-25,CIUB0000201/Mr KANNAN - INR 200.00,0.0,0.0,1201.7,0,2024-04-25 08:00:00,8,Mumbai,Other,0 110 | 2024-04-27,ICIC0DC0099/EURONETG INR 30.00 -,0.0,0.0,1040.7,7,2024-04-27 08:00:00,8,Bangalore,Other,0 111 | 2024-04-27,SBIN0016392/PRITHIVIRAJ INR 30.00 -,0.0,0.0,1070.7,7,2024-04-27 08:00:00,8,International,Other,0 112 | 2024-04-27,CIUB0000201/Mr KANNAN - INR 100.00,0.0,0.0,1100.7,7,2024-04-27 08:00:00,8,Bangalore,Other,0 113 | 2024-04-27,YESB0YBLUPI/SOWBAKY INR 10.00 -,0.0,0.0,1070.7,7,2024-04-27 08:00:00,8,Kolkata,UPI,0 114 | 2024-04-27,YESB0YBLUPI/SOWBAKY INR 51.00 -,0.0,0.0,1080.7,7,2024-04-27 08:00:00,8,International,UPI,0 115 | 2024-04-27,YESB0YBLUPI/ATHAVAN INR 20.00 -,0.0,0.0,1131.7,7,2024-04-27 08:00:00,8,Trichy,UPI,0 116 | 2024-04-27,CNRB0000033/DHARANIS INR 50.00 -,0.0,0.0,1151.7,7,2024-04-27 08:00:00,8,Kolkata,Other,0 117 | 2024-04-27,SBIN0016392/PRITHIVIRAJ INR 70.00 -,0.0,0.0,1000.7,7,2024-04-27 08:00:00,8,International,Other,0 118 | 2024-04-28,TRAN DATE -(MMDD) INR 200.00 -,0.0,0.0,1040.7,4,2024-04-28 08:00:00,8,Trichy,Other,0 119 | 2024-04-28,CIUB0000201/Mr KANNAN - INR 200.00,0.0,0.0,1240.7,4,2024-04-28 08:00:00,8,Trichy,Other,0 120 | 2024-04-28,UTIB0000553/ZOMATO INR 178.86 -,0.0,0.0,1061.84,4,2024-04-28 08:00:00,8,Kolkata,Other,0 121 | 2024-04-28,ICIC0DC0099/Google India INR 39.00 -,0.0,0.0,1022.84,4,2024-04-28 08:00:00,8,International,Other,0 122 | 2024-04-28,CIUB0000201/Mr KANNAN - INR 200.00,0.0,0.0,1240.7,4,2024-04-28 08:00:00,8,International,Other,0 123 | 2024-04-29,YESB0YBLUPI/ATHAVAN INR 20.00 -,0.0,0.0,1002.84,0,2024-04-29 08:00:00,8,Bangalore,UPI,0 124 | 2024-04-30,IDIB000T143/Mr JAYA - INR 200.00,0.0,0.0,1202.84,4,2024-04-30 08:00:00,8,International,Other,0 125 | 2024-04-30,YESB0YBLUPI/GUDDU INR 30.00 -,0.0,0.0,1172.84,4,2024-04-30 08:00:00,8,International,UPI,0 126 | 2024-04-30,YESB0YBLUPI/GUDDU INR 20.00 -,0.0,0.0,1152.84,4,2024-04-30 08:00:00,8,Mumbai,UPI,0 127 | 2024-04-30,TRANSFER TO 4897691162095 -,25.0,0.0,11001.96,4,2024-04-30 08:00:00,8,Delhi,Other,0 128 | 2024-04-30,TRANSFER TO 4897691162095 -,42.0,0.0,10959.96,4,2024-04-30 08:00:00,8,Mumbai,Other,0 129 | 2024-05-01,CIUB0000201/Mr KANNAN - INR 500.00,0.0,0.0,1161.84,0,2024-05-01 08:00:00,8,Trichy,Other,0 130 | 2024-05-02,IOBA0000996/premammu7 INR 22.00 -,0.0,0.0,1139.84,6,2024-05-02 08:00:00,8,International,Other,0 131 | 2024-05-02,TRANSFER TO 4897693162093 -,49.0,0.0,10910.96,6,2024-05-02 08:00:00,8,International,Other,0 132 | 2024-05-02,ICIC0006204/muthamizhsel INR 20.00 -,0.0,0.0,1119.84,6,2024-05-02 08:00:00,8,International,Other,0 133 | 2024-05-02,YESB0YBLUPI/SOWBAKY INR 24.00 -,0.0,0.0,1095.84,6,2024-05-02 08:00:00,8,Trichy,UPI,0 134 | 2024-05-02,YESB0YBLUPI/SOWBAKY INR 10.00 -,0.0,0.0,1085.84,6,2024-05-02 08:00:00,8,Chennai,UPI,0 135 | 2024-05-02,YESB0YBLUPI/RAJA INR 35.00 -,0.0,0.0,1050.84,6,2024-05-02 08:00:00,8,International,UPI,0 136 | 2024-05-02,SBIN0016391/BOINPALLY INR 40.00 -,0.0,0.0,1010.84,6,2024-05-02 08:00:00,8,Kolkata,Other,0 137 | 2024-05-04,DBSS0IN0811/S -,0.0,0.0,1000.0,2,2024-05-04 08:00:00,8,International,Other,0 138 | 2024-05-04,YESB0PTMUPI/KR College,0.0,0.0,1000.0,2,2024-05-04 08:00:00,8,Kolkata,UPI,0 139 | 2024-05-04,TRANSFER TO 4897695162091 -,70.0,0.0,10840.96,2,2024-05-04 08:00:00,8,Bangalore,Other,0 140 | 2024-05-05,SBIN0000765/D -,0.0,0.0,2500.0,3,2024-05-05 08:00:00,8,Bangalore,Other,0 141 | 2024-05-05,YESB0PTMUPI/KR College,0.0,0.0,3000.0,3,2024-05-05 08:00:00,8,International,UPI,0 142 | 2024-05-05,TRANSFER TO 4897696162090 -,39.0,0.0,10801.96,3,2024-05-05 08:00:00,8,Mumbai,Other,0 143 | 2024-05-05,TRANSFER TO 4897696162090 -,10.0,0.0,10791.96,3,2024-05-05 08:00:00,8,Delhi,Other,0 144 | 2024-05-06,TRANSFER TO 4897690162095 -,25.0,0.0,10741.96,1,2024-05-06 08:00:00,8,International,Other,0 145 | 2024-05-06,TRANSFER TO 4897690162095 -,25.0,0.0,10766.96,1,2024-05-06 08:00:00,8,Trichy,Other,0 146 | 2024-05-07,TRANSFER TO 4897691162095 -,20.0,0.0,10721.96,0,2024-05-07 08:00:00,8,Delhi,Other,0 147 | 2024-05-10,TRANSFER TO 4897694162092 -,25.0,0.0,10696.96,0,2024-05-10 08:00:00,8,Chennai,Other,0 148 | 2024-05-11,TRANSFER TO 4897695162091 -,50.0,0.0,10347.96,1,2024-05-11 08:00:00,8,Kolkata,Other,0 149 | 2024-05-11,TRANSFER TO 4897695162091 -,299.0,0.0,10397.96,1,2024-05-11 08:00:00,8,Bangalore,Other,0 150 | 2024-05-14,TRANSFER TO 4897691162095 -,10.0,0.0,10337.96,0,2024-05-14 08:00:00,8,International,Other,0 151 | 2024-05-15,TRANSFER TO 4897692162094 -,21.0,0.0,10316.96,0,2024-05-15 08:00:00,8,Mumbai,Other,0 152 | 2024-05-17,TRANSFER TO 4897694162092 -,240.0,0.0,10076.96,0,2024-05-17 08:00:00,8,Delhi,Other,0 153 | 2024-05-18,TRANSFER TO 4897695162091 -,240.0,0.0,9836.96,0,2024-05-18 08:00:00,8,Chennai,Other,0 154 | 2024-05-22,TRANSFER TO 4897692162094 -,27.0,0.0,9373.96,3,2024-05-22 08:00:00,8,Bangalore,Other,0 155 | 2024-05-22,TRANSFER TO 4897692162094 -,200.0,0.0,9400.96,3,2024-05-22 08:00:00,8,International,Other,0 156 | 2024-05-22,TRAN DATE -(MMDD) 0522,0.0,0.0,1400.0,3,2024-05-22 08:00:00,8,Mumbai,Other,0 157 | 2024-05-22,IOBA0000728/GURUPRIYA - INR 700.00,0.0,0.0,1410.64,3,2024-05-22 08:00:00,8,International,Other,0 158 | 2024-05-25,TRANSFER TO 4897695162091 -,2650.0,0.0,6723.96,2,2024-05-25 08:00:00,8,Delhi,Other,0 159 | 2024-05-25,YESB0PTMUPI/KR College,0.0,0.0,4650.0,2,2024-05-25 08:00:00,8,Bangalore,UPI,0 160 | 2024-05-25,DBSS0IN0811/S -,0.0,0.0,4650.0,2,2024-05-25 08:00:00,8,Trichy,Other,0 161 | 2024-05-27,YESB0PTMUPI/KR College,0.0,0.0,2650.0,6,2024-05-27 08:00:00,8,International,UPI,0 162 | 2024-05-27,TRANSFER TO 4897690162095 -,30.0,0.0,6466.96,6,2024-05-27 08:00:00,8,Bangalore,Other,0 163 | 2024-05-27,IOBA0000728/GURUPRIYA -,0.0,0.0,2650.0,6,2024-05-27 08:00:00,8,Chennai,Other,0 164 | 2024-05-27,YESB0PTMUPI/KR College,0.0,0.0,2650.0,6,2024-05-27 08:00:00,8,International,UPI,0 165 | 2024-05-27,IDIB000T143/Mr JAYA -,0.0,0.0,2700.0,6,2024-05-27 08:00:00,8,Bangalore,Other,0 166 | 2024-05-27,TRANSFER TO 4897690162095 -,27.0,0.0,6696.96,6,2024-05-27 08:00:00,8,Kolkata,Other,0 167 | 2024-05-27,TRANSFER TO 4897690162095 -,200.0,0.0,6496.96,6,2024-05-27 08:00:00,8,Chennai,Other,0 168 | 2024-05-28,TRANSFER TO 4897691162095 -,262.0,0.0,6204.96,0,2024-05-28 08:00:00,8,International,Other,0 169 | 2024-05-30,TRANSFER FROM 4897735162098 -,0.0,8000.0,14204.96,0,2024-05-30 08:00:00,8,Kolkata,Other,0 170 | 2024-06-01,TRANSFER FROM 4897737162096 -,0.0,2.85,14207.81,2,2024-06-01 08:00:00,8,International,Other,0 171 | 2024-06-01,YESB0PTMUPI/KR College,0.0,0.0,4000.0,2,2024-06-01 08:00:00,8,International,UPI,0 172 | 2024-06-01,IOBA0000728/GURUPRIYA -,0.0,0.0,4000.0,2,2024-06-01 08:00:00,8,International,Other,0 173 | 2024-06-03,TRANSFER TO 4897690162095 -,320.0,0.0,13887.81,0,2024-06-03 08:00:00,8,Trichy,Other,0 174 | 2024-06-06,TRANSFER TO 4897693162093 -,500.0,0.0,13387.81,4,2024-06-06 08:00:00,8,Trichy,Other,0 175 | 2024-06-06,TRANSFER TO 4897693162093 -,379.0,0.0,13008.81,4,2024-06-06 08:00:00,8,International,Other,0 176 | 2024-06-06,TRANSFER TO 4897693162093 -,8.0,0.0,13379.81,4,2024-06-06 08:00:00,8,Mumbai,Other,0 177 | 2024-06-06,TRANSFER FROM 4897735162098 -,0.0,379.0,13387.81,4,2024-06-06 08:00:00,8,Delhi,Other,0 178 | 2024-06-06,TRANSFER TO 4897693162093 -,50.0,0.0,13329.81,4,2024-06-06 08:00:00,8,Bangalore,Other,0 179 | 2024-06-07,TRANSFER TO 4897694162092 -,10.0,0.0,13319.81,0,2024-06-07 08:00:00,8,Mumbai,Other,0 180 | 2024-06-08,TRANSFER TO 4897695162091 -,299.0,0.0,13020.81,0,2024-06-08 08:00:00,8,Mumbai,Other,0 181 | 2024-06-14,CIUB0000201/Mr KANNAN,0.0,0.0,88000.0,4,2024-06-14 08:00:00,8,Kolkata,Other,0 182 | 2024-06-14,CIUB0000201/Mr KANNAN -,0.0,0.0,1000.0,4,2024-06-14 08:00:00,8,International,Other,0 183 | 2024-06-14,YESB0YBLUPI/SOWBAKY INR 100.00 -,0.0,0.0,2900.0,4,2024-06-14 08:00:00,8,Mumbai,UPI,0 184 | 2024-06-14,TRAN DATE -(MMDD) 0614,0.0,0.0,2500.0,4,2024-06-14 08:00:00,8,Mumbai,Other,0 185 | 2024-06-14,CIUB0000201/Mr KANNAN -,0.0,0.0,90000.0,4,2024-06-14 08:00:00,8,Chennai,Other,0 186 | 2024-06-15,TRANSFER TO 4897695162091 -,240.0,0.0,12780.81,1,2024-06-15 08:00:00,8,Trichy,Other,0 187 | 2024-06-15,TRANSFER TO 4897695162091 -,240.0,0.0,12540.81,1,2024-06-15 08:00:00,8,International,Other,0 188 | 2024-06-25,TRANSFER TO 4897691162095 -,25.0,0.0,12515.81,4,2024-06-25 08:00:00,8,Trichy,Other,0 189 | 2024-06-25,TRANSFER FROM 4897733162090 -,0.0,3000.0,15515.81,4,2024-06-25 08:00:00,8,Chennai,Other,0 190 | 2024-06-25,CREDIT INTEREST,0.0,79.0,15594.81,4,2024-06-25 08:00:00,8,Trichy,Other,0 191 | 2024-06-25,TRAN DATE -(MMDD) 0625,0.0,0.0,10000.0,4,2024-06-25 08:00:00,8,International,Other,0 192 | 2024-06-25,IOBA0000728/GURUPRIYA -,0.0,0.0,10000.0,4,2024-06-25 08:00:00,8,Mumbai,Other,0 193 | 2024-06-27,TRANSFER TO 4897693162093 -,57.0,0.0,15537.81,2,2024-06-27 08:00:00,8,Trichy,Other,0 194 | 2024-06-27,TRANSFER TO 4897693162093 -,74.0,0.0,15503.81,2,2024-06-27 08:00:00,8,Kolkata,Other,0 195 | 2024-06-27,TRANSFER FROM 4897735162098 -,0.0,40.0,15577.81,2,2024-06-27 08:00:00,8,Bangalore,Other,0 196 | 2024-06-28,TRANSFER TO 4897694162092 -,200.8,0.0,15303.01,1,2024-06-28 08:00:00,8,International,Other,0 197 | 2024-06-28,TRANSFER TO 4897694162092 -,35.0,0.0,15268.01,1,2024-06-28 08:00:00,8,International,Other,0 198 | 2024-06-29,TRANSFER TO 4897695162091 -,25.0,0.0,15243.01,0,2024-06-29 08:00:00,8,Bangalore,Other,0 199 | 2024-07-01,TRANSFER TO 4897690162095 -,56.0,0.0,15107.01,3,2024-07-01 08:00:00,8,Trichy,Other,0 200 | 2024-07-01,TRANSFER TO 4897690162095 -,80.0,0.0,15163.01,3,2024-07-01 08:00:00,8,Delhi,Other,0 201 | 2024-07-01,TRANSFER TO 4897690162095 -,56.0,0.0,15107.01,3,2024-07-01 08:00:00,8,Chennai,Other,0 202 | 2024-07-01,TRANSFER FROM 4897690162095 -,0.0,56.0,15163.01,3,2024-07-01 08:00:00,8,Mumbai,Other,0 203 | 2024-07-02,TRANSFER TO 4897691162095 -,299.0,0.0,14808.01,1,2024-07-02 08:00:00,8,Delhi,Other,0 204 | 2024-07-02,TRANSFER TO 4897691162095 -,330.0,0.0,14478.01,1,2024-07-02 08:00:00,8,Mumbai,Other,0 205 | 2024-07-06,TRANSFER TO 4897695162091 -,345.0,0.0,14133.01,0,2024-07-06 08:00:00,8,Trichy,Other,0 206 | 2024-07-08,TRANSFER TO 4897690162095 -,40.0,0.0,14093.01,0,2024-07-08 08:00:00,8,International,Other,0 207 | 2024-07-09,TRANSFER TO 4897691162095 -,42.0,0.0,14051.01,0,2024-07-09 08:00:00,8,Delhi,Other,0 208 | 2024-07-10,TRANSFER FROM 4897734162099 -,0.0,5550.0,19601.01,2,2024-07-10 08:00:00,8,International,Other,0 209 | 2024-07-10,TRANSFER TO 4897692162094 -,110.0,0.0,19491.01,2,2024-07-10 08:00:00,8,Mumbai,Other,0 210 | 2024-07-10,TRANSFER TO 4897692162094 -,264.0,0.0,19227.01,2,2024-07-10 08:00:00,8,International,Other,0 211 | 2024-07-12,TRANSFER TO 4897694162092 -,300.8,0.0,13926.21,0,2024-07-12 08:00:00,8,Kolkata,Other,0 212 | 2024-07-15,TRANSFER TO 4897690162095 -,30.0,0.0,13896.21,0,2024-07-15 08:00:00,8,Kolkata,Other,0 213 | 2024-07-16,TRANSFER TO 4897691162095 -,250.0,0.0,13646.21,1,2024-07-16 08:00:00,8,Bangalore,Other,0 214 | 2024-07-16,TRANSFER TO 4897691162095 -,155.0,0.0,13491.21,1,2024-07-16 08:00:00,8,Kolkata,Other,0 215 | 2024-07-17,TRANSFER TO 4897692162094 -,25.0,0.0,13466.21,0,2024-07-17 08:00:00,8,International,Other,0 216 | 2024-07-18,TRANSFER TO 4897693162093 -,12.0,0.0,13454.21,1,2024-07-18 08:00:00,8,Bangalore,Other,0 217 | 2024-07-18,TRANSFER TO 4897693162093 -,29.0,0.0,13425.21,1,2024-07-18 08:00:00,8,Kolkata,Other,0 218 | 2024-07-19,TRANSFER TO 4897694162092 -,40.0,0.0,13385.21,0,2024-07-19 08:00:00,8,International,Other,0 219 | 2024-07-20,TRANSFER TO 4897695162091 -,250.0,0.0,13135.21,0,2024-07-20 08:00:00,8,International,Other,0 220 | 2024-07-22,TRANSFER TO 4897690162095 -,18.0,0.0,13117.21,0,2024-07-22 08:00:00,8,Kolkata,Other,0 221 | 2024-07-23,TRANSFER TO 4897691162095 -,68.0,0.0,13049.21,1,2024-07-23 08:00:00,8,International,Other,0 222 | 2024-07-23,TRANSFER FROM 4897733162090 -,0.0,3000.0,16049.21,1,2024-07-23 08:00:00,8,Mumbai,Other,0 223 | 2024-07-24,TRANSFER TO 4897692162094 -,30.0,0.0,16019.21,0,2024-07-24 08:00:00,8,Trichy,Other,0 224 | 2024-07-25,TRANSFER TO 4897693162093 -,20.0,0.0,15999.21,0,2024-07-25 08:00:00,8,International,Other,0 225 | 2024-07-26,TRANSFER TO 4897694162092 -,200.8,0.0,15768.41,1,2024-07-26 08:00:00,8,Chennai,Other,0 226 | 2024-07-26,TRANSFER TO 4897694162092 -,30.0,0.0,15969.21,1,2024-07-26 08:00:00,8,Delhi,Other,0 227 | 2024-07-27,TRANSFER TO 4897695162091 -,20.0,0.0,15748.41,0,2024-07-27 08:00:00,8,Trichy,Other,0 228 | 2024-07-28,TRANSFER TO 4897696162090 -,50.0,0.0,15698.41,0,2024-07-28 08:00:00,8,Chennai,Other,0 229 | 2024-07-29,TRANSFER FROM 4897732162091 -,0.0,50.0,15748.41,0,2024-07-29 08:00:00,8,Chennai,Other,0 230 | 2024-07-31,TRANSFER TO 4897692162094 -,40.0,0.0,15708.41,5,2024-07-31 08:00:00,8,Chennai,Other,0 231 | 2024-07-31,CIUB0000477/Mr -,0.0,0.0,1350.0,5,2024-07-31 08:00:00,8,Delhi,Other,0 232 | 2024-07-31,CIUB0000477/Mr,0.0,0.0,1350.0,5,2024-07-31 08:00:00,8,Mumbai,Other,0 233 | 2024-07-31,YESB0YBLUPI/ATHAVAN INR 30.00 -,0.0,0.0,1471.0,5,2024-07-31 08:00:00,8,Trichy,UPI,0 234 | 2024-07-31,CIUB0000201/Mr KANNAN -,0.0,0.0,1500.0,5,2024-07-31 08:00:00,8,International,Other,0 235 | 2024-07-31,KVBL0001195/AKASH S,0.0,0.0,1350.0,5,2024-07-31 08:00:00,8,Mumbai,Other,0 236 | 2024-08-02,TRANSFER TO 4897694162092 -,200.8,0.0,15507.61,0,2024-08-02 08:00:00,8,Kolkata,Other,0 237 | 2024-08-03,TRANSFER TO 4897695162091 -,200.0,0.0,15307.61,2,2024-08-03 08:00:00,8,Mumbai,Other,0 238 | 2024-08-03,TRANSFER TO 4897695162091 -,49.0,0.0,14957.81,2,2024-08-03 08:00:00,8,Trichy,Other,0 239 | 2024-08-03,TRANSFER TO 4897695162091 -,300.8,0.0,15006.81,2,2024-08-03 08:00:00,8,Trichy,Other,0 240 | 2024-08-05,TRANSFER TO 4897690162095 -,110.0,0.0,12347.81,1,2024-08-05 08:00:00,8,Bangalore,Other,0 241 | 2024-08-05,TRANSFER TO 4897690162095 -,2500.0,0.0,12457.81,1,2024-08-05 08:00:00,8,Kolkata,Other,0 242 | 2024-08-06,TRANSFER TO 4897691162095 -,30.0,0.0,12317.81,0,2024-08-06 08:00:00,8,Chennai,Other,0 243 | 2024-08-08,TRANSFER TO 4897693162093 -,160.0,0.0,12157.81,2,2024-08-08 08:00:00,8,Chennai,Other,0 244 | 2024-08-08,TRANSFER TO 4897693162093 -,51.0,0.0,12106.81,2,2024-08-08 08:00:00,8,International,Other,0 245 | 2024-08-08,TRANSFER TO 4897693162093 -,145.0,0.0,11961.81,2,2024-08-08 08:00:00,8,Trichy,Other,0 246 | 2024-08-09,TRANSFER TO 4897695162091 -,36.0,0.0,11925.81,0,2024-08-09 08:00:00,8,Kolkata,Other,0 247 | 2024-08-10,TRANSFER TO 4897696162090 -,300.8,0.0,11625.01,0,2024-08-10 08:00:00,8,International,Other,0 248 | 2024-08-11,TRANSFER TO 4897690162095 -,30.0,0.0,11595.01,0,2024-08-11 08:00:00,8,International,Other,0 249 | 2024-08-13,TRANSFER TO 4897692162094 -,51.0,0.0,11544.01,0,2024-08-13 08:00:00,8,International,Other,0 250 | 2024-08-14,TRANSFER TO 4897693162093 -,30.0,0.0,11514.01,0,2024-08-14 08:00:00,8,Kolkata,Other,0 251 | 2024-08-15,SBIN0016391/INDIRA S -,0.0,0.0,1000.0,3,2024-08-15 08:00:00,8,Bangalore,Other,0 252 | 2024-08-15,TRANSFER TO 4897694162092 -,1003.54,0.0,10058.47,3,2024-08-15 08:00:00,8,Delhi,Other,0 253 | 2024-08-15,TRANSFER TO 4897694162092 -,452.0,0.0,11062.01,3,2024-08-15 08:00:00,8,Bangalore,Other,0 254 | 2024-08-15,AIRP0000001/Swayam,0.0,0.0,1003.54,3,2024-08-15 08:00:00,8,Kolkata,Other,0 255 | 2024-08-18,TRANSFER TO 4897690162095 -,18.0,0.0,9986.47,1,2024-08-18 08:00:00,8,Trichy,Other,0 256 | 2024-08-18,TRANSFER TO 4897690162095 -,54.0,0.0,10004.47,1,2024-08-18 08:00:00,8,International,Other,0 257 | 2024-08-20,TRANSFER TO 4897692162094 -,30.0,0.0,9931.47,1,2024-08-20 08:00:00,8,Mumbai,Other,0 258 | 2024-08-20,TRANSFER TO 4897692162094 -,25.0,0.0,9961.47,1,2024-08-20 08:00:00,8,Delhi,Other,0 259 | 2024-08-23,IBKL0001733/V -,0.0,0.0,7000.0,1,2024-08-23 08:00:00,8,International,Other,0 260 | 2024-08-23,TRANSFER FROM 4897737162096 -,0.0,20.0,9951.47,1,2024-08-23 08:00:00,8,International,Other,0 261 | 2024-08-24,SBIN0000930/Kamalesh - INR 1.00,0.0,0.0,1003.02,6,2024-08-24 08:00:00,8,Trichy,Other,0 262 | 2024-08-24,UTIB0000553/Mr INR 90.00 -,0.0,0.0,1002.02,6,2024-08-24 08:00:00,8,Kolkata,Other,0 263 | 2024-08-24,HDFC0000058/REBOOT,0.0,0.0,5011.0,6,2024-08-24 08:00:00,8,International,Other,0 264 | 2024-08-24,TRAN DATE -(MMDD) 0824 INR 500.00 -,0.0,0.0,6103.02,6,2024-08-24 08:00:00,8,International,Other,0 265 | 2024-08-24,CIUB0000201/Mr KANNAN INR 100.00 -,0.0,0.0,6603.02,6,2024-08-24 08:00:00,8,Trichy,Other,0 266 | 2024-08-24,AIRP0000001/BHARTI INR 299.00 -,0.0,0.0,6703.02,6,2024-08-24 08:00:00,8,International,Other,0 267 | 2024-08-24,TRANSFER TO 4897696162090 -,20.0,0.0,9931.47,6,2024-08-24 08:00:00,8,International,Other,0 268 | 2024-08-25,TRANSFER TO 4897690162095 -,249.0,0.0,9682.47,0,2024-08-25 08:00:00,8,International,Other,0 269 | 2024-08-27,TRANSFER TO 4897692162094 -,20.0,0.0,9662.47,1,2024-08-27 08:00:00,8,International,Other,0 270 | 2024-08-27,TRANSFER TO 4897692162094 -,10.0,0.0,9652.47,1,2024-08-27 08:00:00,8,Kolkata,Other,0 271 | 2024-08-28,TRANSFER TO 4897693162093 -,76.0,0.0,9576.47,1,2024-08-28 08:00:00,8,International,Other,0 272 | 2024-08-28,TRANSFER TO 4897693162093 -,49.0,0.0,9527.47,1,2024-08-28 08:00:00,8,Bangalore,Other,0 273 | 2024-08-29,TRANSFER TO 4897694162092 -,20.0,0.0,9507.47,2,2024-08-29 08:00:00,8,Delhi,Other,0 274 | 2024-08-29,TRANSFER TO 4897694162092 -,20.0,0.0,9487.47,2,2024-08-29 08:00:00,8,Chennai,Other,0 275 | 2024-08-29,TRANSFER TO 4897694162092 -,200.8,0.0,9286.67,2,2024-08-29 08:00:00,8,Bangalore,Other,0 276 | 2024-08-30,TRANSFER TO 4897695162091 -,19.0,0.0,8968.67,1,2024-08-30 08:00:00,8,Trichy,Other,0 277 | 2024-08-30,TRANSFER TO 4897695162091 -,299.0,0.0,8987.67,1,2024-08-30 08:00:00,8,Kolkata,Other,0 278 | 2024-09-01,TRANSFER TO 4897690162095 -,250.0,0.0,8718.67,0,2024-09-01 08:00:00,8,Delhi,Other,0 279 | 2024-09-04,TRANSFER TO 4897693162093 -,23.0,0.0,8095.67,0,2024-09-04 08:00:00,8,Trichy,Other,0 280 | 2024-09-05,TRANSFER TO 4897694162092 -,300.8,0.0,7794.87,0,2024-09-05 08:00:00,8,Chennai,Other,0 281 | 2024-09-06,HDFC0001752/ARUNKUM -,0.0,0.0,1000.0,1,2024-09-06 08:00:00,8,International,Other,0 282 | 2024-09-06,KVBL0001195/AKASH S - INR 120.00,0.0,0.0,1096.02,1,2024-09-06 08:00:00,8,Bangalore,Other,0 283 | 2024-09-08,TRANSFER TO 4897690162095 -,200.8,0.0,7594.07,0,2024-09-08 08:00:00,8,Bangalore,Other,0 284 | 2024-09-09,TRANSFER TO 4897691162095 -,15.0,0.0,7569.07,1,2024-09-09 08:00:00,8,Chennai,Other,0 285 | 2024-09-09,TRANSFER TO 4897691162095 -,10.0,0.0,7584.07,1,2024-09-09 08:00:00,8,Delhi,Other,0 286 | 2024-09-12,TRANSFER TO 4897694162092 -,200.0,0.0,7369.07,2,2024-09-12 08:00:00,8,Chennai,Other,0 287 | 2024-09-12,CIUB0000201/Mr KANNAN -,0.0,0.0,1000.0,2,2024-09-12 08:00:00,8,Bangalore,Other,0 288 | 2024-09-12,TRAN DATE -(MMDD) 0912,0.0,0.0,1000.0,2,2024-09-12 08:00:00,8,Mumbai,Other,0 289 | 2024-09-14,TRANSFER TO 4897696162090 -,10.0,0.0,7359.07,0,2024-09-14 08:00:00,8,International,Other,0 290 | 2024-09-16,TRANSFER TO 4897691162095 -,25.0,0.0,7334.07,1,2024-09-16 08:00:00,8,Bangalore,Other,0 291 | 2024-09-16,TRANSFER TO 4897691162095 -,10.0,0.0,7324.07,1,2024-09-16 08:00:00,8,Trichy,Other,0 292 | 2024-09-17,TRANSFER TO 4897692162094 -,55.0,0.0,7269.07,1,2024-09-17 08:00:00,8,International,Other,0 293 | 2024-09-17,TRANSFER TO 4897692162094 -,205.0,0.0,7064.07,1,2024-09-17 08:00:00,8,International,Other,0 294 | 2024-09-18,TRANSFER TO 4897693162093 -,18.0,0.0,7046.07,0,2024-09-18 08:00:00,8,Trichy,Other,0 295 | 2024-09-19,TRANSFER TO 4897694162092 -,27.0,0.0,7019.07,0,2024-09-19 08:00:00,8,Bangalore,Other,0 296 | 2024-09-21,TRANSFER TO 4897696162090 -,186.0,0.0,6423.07,4,2024-09-21 08:00:00,8,Trichy,Other,0 297 | 2024-09-21,TRANSFER TO 4897696162090 -,298.0,0.0,6721.07,4,2024-09-21 08:00:00,8,International,Other,0 298 | 2024-09-21,TRANSFER TO 4897696162090 -,100.0,0.0,6621.07,4,2024-09-21 08:00:00,8,Mumbai,Other,0 299 | 2024-09-21,TRANSFER TO 4897696162090 -,25.0,0.0,6398.07,4,2024-09-21 08:00:00,8,Kolkata,Other,0 300 | 2024-09-21,TRANSFER TO 4897696162090 -,12.0,0.0,6609.07,4,2024-09-21 08:00:00,8,International,Other,0 301 | 2024-09-22,CNRB0000033/JAYA -,0.0,0.0,10500.0,0,2024-09-22 08:00:00,8,Delhi,Other,0 302 | 2024-09-23,TRAN DATE -(MMDD) 0923,0.0,0.0,10000.0,1,2024-09-23 08:00:00,8,Chennai,Other,0 303 | 2024-09-23,TRANSFER TO 4897691162095 -,27.0,0.0,6371.07,1,2024-09-23 08:00:00,8,Chennai,Other,0 304 | 2024-09-24,TRANSFER TO 4897692162094 -,15.0,0.0,6356.07,0,2024-09-24 08:00:00,8,International,Other,0 305 | 2024-09-25,TRANSFER TO 4897693162093 -,90.0,0.0,6266.07,1,2024-09-25 08:00:00,8,Mumbai,Other,0 306 | 2024-09-25,CREDIT INTEREST,0.0,79.0,6345.07,1,2024-09-25 08:00:00,8,Mumbai,Other,0 307 | 2024-09-28,TRANSFER TO 4897696162090 -,299.0,0.0,6046.07,1,2024-09-28 08:00:00,8,Mumbai,Other,0 308 | 2024-09-28,TRANSFER TO 4897696162090 -,125.0,0.0,5921.07,1,2024-09-28 08:00:00,8,International,Other,0 309 | 2024-09-30,TRANSFER TO 4897691162095 -,19.0,0.0,5902.07,2,2024-09-30 08:00:00,8,International,Other,0 310 | 2024-09-30,TRANSFER TO 4897691162095 -,10.0,0.0,5892.07,2,2024-09-30 08:00:00,8,Mumbai,Other,0 311 | 2024-09-30,TRANSFER TO 4897691162095 -,57.0,0.0,5835.07,2,2024-09-30 08:00:00,8,International,Other,0 312 | 2024-10-01,TRANSFER TO 4897692162094 -,230.0,0.0,5605.07,0,2024-10-01 08:00:00,8,Chennai,Other,0 313 | 2024-10-02,TRANSFER FROM 4897735162098 -,0.0,7.6,5612.67,0,2024-10-02 08:00:00,8,Kolkata,Other,0 314 | 2024-10-04,TRANSFER TO 4897695162091 -,250.8,0.0,5361.87,1,2024-10-04 08:00:00,8,Kolkata,Other,0 315 | 2024-10-04,TRANSFER TO 4897695162091 -,250.8,0.0,5111.07,1,2024-10-04 08:00:00,8,Trichy,Other,0 316 | 2024-10-05,TRANSFER FROM 4897738162095 -,0.0,5.7,5116.77,2,2024-10-05 08:00:00,8,Bangalore,Other,0 317 | 2024-10-05,TRANSFER TO 4897696162090 -,320.0,0.0,4796.77,2,2024-10-05 08:00:00,8,Trichy,Other,0 318 | 2024-10-05,TRANSFER TO 4897696162090 -,100.0,0.0,4696.77,2,2024-10-05 08:00:00,8,International,Other,0 319 | 2024-10-07,TRANSFER TO 4897691162095 -,200.8,0.0,4495.97,0,2024-10-07 08:00:00,8,International,Other,0 320 | 2024-10-08,TRANSFER TO 4897692162094 -,47.0,0.0,4448.97,0,2024-10-08 08:00:00,8,Trichy,Other,0 321 | 2024-10-24,CNRB0000033/JAYA -,0.0,0.0,3000.0,2,2024-10-24 08:00:00,8,Bangalore,Other,0 322 | 2024-10-24,ICIC0DC0099/M S MAHAN INR 51.00 -,0.0,0.0,2985.0,2,2024-10-24 08:00:00,8,Bangalore,Other,0 323 | 2024-10-24,YESB0PTMUPI/APE,0.0,0.0,2800.0,2,2024-10-24 08:00:00,8,Trichy,UPI,0 324 | 2024-10-27,IOBA0000728/GURUPRIYA - INR 15.00,0.0,0.0,4823.2,2,2024-10-27 08:00:00,8,Delhi,Other,0 325 | 2024-10-27,IOBA0000728/GURUPRIYA -,0.0,0.0,4800.0,2,2024-10-27 08:00:00,8,Delhi,Other,0 326 | 2024-10-27,YESB0PTMUPI/KR College,0.0,0.0,4811.8,2,2024-10-27 08:00:00,8,Bangalore,UPI,0 327 | 2023-11-11,HIGH-RISK TRANSFER,0.0,2434.37,908.27,14,2023-11-11 12:00:00,12,Unusual ATM,Online Purchase,1 328 | 2023-03-12,SUSPICIOUS WITHDRAWAL,0.0,2250.69,301.8,49,2023-03-12 11:00:00,11,Unknown Location,Card Payment,1 329 | 2023-12-09,SUSPICIOUS WITHDRAWAL,9461.58,0.0,600.4,12,2023-12-09 01:00:00,1,Unknown Location,Money Transfer,1 330 | 2023-12-26,SUSPICIOUS WITHDRAWAL,9758.78,0.0,255.82,14,2023-12-26 01:00:00,1,Offshore,Card Payment,1 331 | 2023-06-06,SUSPICIOUS WITHDRAWAL,2239.51,0.0,772.33,47,2023-06-06 06:00:00,6,Offshore,Wire Transfer,1 332 | 2023-07-31,SUSPICIOUS WITHDRAWAL,8832.59,0.0,148.62,48,2023-07-31 16:00:00,16,International,Card Payment,1 333 | 2023-12-14,UNAUTHORIZED ACCESS,6852.34,0.0,925.19,26,2023-12-14 20:00:00,20,Offshore,Online Purchase,1 334 | 2023-02-28,HIGH-RISK TRANSFER,1547.02,0.0,879.61,17,2023-02-28 05:00:00,5,International,Online Purchase,1 335 | 2023-12-20,HIGH-RISK TRANSFER,0.0,2185.13,26.6,32,2023-12-20 07:00:00,7,Unusual ATM,Online Purchase,1 336 | 2023-09-02,UNAUTHORIZED ACCESS,0.0,5537.54,686.82,21,2023-09-02 05:00:00,5,Unusual ATM,Card Payment,1 337 | 2023-10-15,UNAUTHORIZED ACCESS,0.0,9235.04,5.87,45,2023-10-15 20:00:00,20,Unusual ATM,Money Transfer,1 338 | 2023-07-01,UNAUTHORIZED ACCESS,0.0,6004.33,533.19,27,2023-07-01 14:00:00,14,International,Money Transfer,1 339 | 2023-10-11,UNAUTHORIZED ACCESS,0.0,6453.07,47.32,16,2023-10-11 08:00:00,8,International,Online Purchase,1 340 | 2023-10-27,UNAUTHORIZED ACCESS,6824.64,0.0,772.03,15,2023-10-27 09:00:00,9,Unusual ATM,Online Purchase,1 341 | 2023-08-30,SUSPICIOUS WITHDRAWAL,0.0,4848.24,690.72,11,2023-08-30 03:00:00,3,Unknown Location,Money Transfer,1 342 | 2023-10-04,HIGH-RISK TRANSFER,0.0,6730.22,321.22,29,2023-10-04 17:00:00,17,Unknown Location,Money Transfer,1 343 | 2023-06-27,HIGH-RISK TRANSFER,0.0,8884.48,326.99,36,2023-06-27 20:00:00,20,Offshore,Wire Transfer,1 344 | 2023-10-15,UNAUTHORIZED ACCESS,0.0,2607.37,869.83,30,2023-10-15 03:00:00,3,Unusual ATM,Online Purchase,1 345 | 2023-11-05,SUSPICIOUS WITHDRAWAL,5085.13,0.0,559.87,33,2023-11-05 00:00:00,0,Offshore,Money Transfer,1 346 | 2023-05-21,UNAUTHORIZED ACCESS,0.0,3707.97,550.31,36,2023-05-21 09:00:00,9,International,Card Payment,1 347 | 2023-12-31,UNAUTHORIZED ACCESS,4565.89,0.0,329.11,14,2023-12-31 20:00:00,20,Unusual ATM,Online Purchase,1 348 | 2023-04-09,HIGH-RISK TRANSFER,8483.5,0.0,784.5,15,2023-04-09 21:00:00,21,Unusual ATM,Wire Transfer,1 349 | 2023-01-22,UNAUTHORIZED ACCESS,5779.48,0.0,991.43,22,2023-01-22 14:00:00,14,Unusual ATM,Money Transfer,1 350 | 2023-07-04,UNAUTHORIZED ACCESS,1509.71,0.0,16.07,20,2023-07-04 06:00:00,6,International,Online Purchase,1 351 | 2023-09-16,SUSPICIOUS WITHDRAWAL,1659.63,0.0,865.94,31,2023-09-16 21:00:00,21,Offshore,Wire Transfer,1 352 | 2023-01-07,UNAUTHORIZED ACCESS,0.0,7299.04,180.67,27,2023-01-07 11:00:00,11,International,Wire Transfer,1 353 | 2023-06-14,HIGH-RISK TRANSFER,8539.37,0.0,289.21,44,2023-06-14 03:00:00,3,Offshore,Card Payment,1 354 | 2023-11-06,SUSPICIOUS WITHDRAWAL,6780.93,0.0,702.41,27,2023-11-06 15:00:00,15,Unknown Location,Card Payment,1 355 | 2023-09-18,SUSPICIOUS WITHDRAWAL,1137.09,0.0,831.96,15,2023-09-18 14:00:00,14,International,Wire Transfer,1 356 | 2023-10-03,UNAUTHORIZED ACCESS,2574.1,0.0,583.03,30,2023-10-03 21:00:00,21,Unknown Location,Online Purchase,1 357 | 2023-05-23,HIGH-RISK TRANSFER,7534.16,0.0,688.16,16,2023-05-23 22:00:00,22,International,Card Payment,1 358 | 2023-12-04,SUSPICIOUS WITHDRAWAL,0.0,8921.54,328.0,16,2023-12-04 05:00:00,5,Offshore,Money Transfer,1 359 | 2023-11-14,HIGH-RISK TRANSFER,4923.19,0.0,204.74,13,2023-11-14 15:00:00,15,Unknown Location,Card Payment,1 360 | 2023-07-19,SUSPICIOUS WITHDRAWAL,8360.1,0.0,911.66,20,2023-07-19 14:00:00,14,Unusual ATM,Card Payment,1 361 | 2023-05-12,HIGH-RISK TRANSFER,0.0,5101.94,24.85,31,2023-05-12 17:00:00,17,Unknown Location,Card Payment,1 362 | 2023-07-29,UNAUTHORIZED ACCESS,5316.12,0.0,749.81,40,2023-07-29 07:00:00,7,Unusual ATM,Online Purchase,1 363 | 2023-11-06,SUSPICIOUS WITHDRAWAL,1840.03,0.0,673.66,33,2023-11-06 07:00:00,7,International,Money Transfer,1 364 | 2023-11-16,UNAUTHORIZED ACCESS,2938.33,0.0,178.75,31,2023-11-16 09:00:00,9,Unknown Location,Money Transfer,1 365 | 2023-08-15,SUSPICIOUS WITHDRAWAL,0.0,4002.56,99.93,34,2023-08-15 09:00:00,9,Unusual ATM,Wire Transfer,1 366 | 2023-04-10,HIGH-RISK TRANSFER,1816.04,0.0,361.36,21,2023-04-10 17:00:00,17,Unusual ATM,Card Payment,1 367 | 2023-10-18,HIGH-RISK TRANSFER,0.0,4808.58,478.39,30,2023-10-18 08:00:00,8,Unknown Location,Money Transfer,1 368 | 2023-05-25,HIGH-RISK TRANSFER,4879.65,0.0,680.5,42,2023-05-25 21:00:00,21,International,Online Purchase,1 369 | 2023-08-20,SUSPICIOUS WITHDRAWAL,0.0,6550.48,684.0,22,2023-08-20 06:00:00,6,International,Money Transfer,1 370 | 2023-03-15,SUSPICIOUS WITHDRAWAL,7208.19,0.0,460.89,48,2023-03-15 21:00:00,21,Unusual ATM,Money Transfer,1 371 | 2023-05-25,SUSPICIOUS WITHDRAWAL,8972.53,0.0,783.5,14,2023-05-25 04:00:00,4,Unknown Location,Wire Transfer,1 372 | 2023-02-03,SUSPICIOUS WITHDRAWAL,0.0,7741.05,946.44,10,2023-02-03 00:00:00,0,Unusual ATM,Wire Transfer,1 373 | 2023-06-03,HIGH-RISK TRANSFER,0.0,5643.27,489.12,26,2023-06-03 23:00:00,23,Unusual ATM,Online Purchase,1 374 | 2023-08-12,UNAUTHORIZED ACCESS,0.0,833.92,372.79,21,2023-08-12 00:00:00,0,Unusual ATM,Online Purchase,1 375 | 2023-09-27,SUSPICIOUS WITHDRAWAL,8610.36,0.0,392.76,38,2023-09-27 20:00:00,20,Unusual ATM,Online Purchase,1 376 | 2023-05-07,HIGH-RISK TRANSFER,0.0,7808.22,733.39,42,2023-05-07 12:00:00,12,Offshore,Online Purchase,1 377 | 2023-05-22,UNAUTHORIZED ACCESS,0.0,7219.9,262.22,46,2023-05-22 10:00:00,10,Unusual ATM,Online Purchase,1 378 | 2023-02-20,SUSPICIOUS WITHDRAWAL,6232.52,0.0,119.74,21,2023-02-20 08:00:00,8,International,Online Purchase,1 379 | 2023-06-02,HIGH-RISK TRANSFER,0.0,3755.07,299.77,22,2023-06-02 06:00:00,6,Unknown Location,Online Purchase,1 380 | 2023-11-29,SUSPICIOUS WITHDRAWAL,3237.83,0.0,522.59,12,2023-11-29 05:00:00,5,Unusual ATM,Online Purchase,1 381 | 2023-12-31,UNAUTHORIZED ACCESS,0.0,8903.48,51.61,18,2023-12-31 20:00:00,20,Offshore,Card Payment,1 382 | 2023-12-29,HIGH-RISK TRANSFER,0.0,9459.47,638.74,14,2023-12-29 10:00:00,10,Unusual ATM,Wire Transfer,1 383 | 2023-12-19,UNAUTHORIZED ACCESS,0.0,4879.96,550.64,30,2023-12-19 04:00:00,4,Unknown Location,Money Transfer,1 384 | 2023-04-20,SUSPICIOUS WITHDRAWAL,7333.97,0.0,244.84,45,2023-04-20 08:00:00,8,International,Money Transfer,1 385 | 2023-05-05,HIGH-RISK TRANSFER,0.0,1407.02,275.13,30,2023-05-05 06:00:00,6,International,Card Payment,1 386 | 2023-11-03,UNAUTHORIZED ACCESS,0.0,1532.1,289.93,40,2023-11-03 19:00:00,19,Unusual ATM,Online Purchase,1 387 | 2023-07-14,HIGH-RISK TRANSFER,0.0,2583.16,714.7,32,2023-07-14 02:00:00,2,International,Wire Transfer,1 388 | 2023-03-28,HIGH-RISK TRANSFER,2850.11,0.0,96.04,46,2023-03-28 13:00:00,13,Unknown Location,Wire Transfer,1 389 | 2023-07-07,SUSPICIOUS WITHDRAWAL,4013.75,0.0,175.95,18,2023-07-07 13:00:00,13,Offshore,Money Transfer,1 390 | 2023-01-09,SUSPICIOUS WITHDRAWAL,0.0,2431.27,998.96,43,2023-01-09 01:00:00,1,Offshore,Money Transfer,1 391 | 2023-10-07,SUSPICIOUS WITHDRAWAL,0.0,853.23,575.53,31,2023-10-07 17:00:00,17,Offshore,Online Purchase,1 392 | 2023-12-11,SUSPICIOUS WITHDRAWAL,0.0,1122.48,770.67,16,2023-12-11 05:00:00,5,Offshore,Money Transfer,1 393 | 2023-10-15,HIGH-RISK TRANSFER,0.0,962.96,991.61,50,2023-10-15 07:00:00,7,International,Online Purchase,1 394 | 2023-09-23,HIGH-RISK TRANSFER,0.0,582.52,259.65,39,2023-09-23 18:00:00,18,Unusual ATM,Online Purchase,1 395 | 2023-07-21,HIGH-RISK TRANSFER,4575.89,0.0,781.05,18,2023-07-21 02:00:00,2,Unknown Location,Money Transfer,1 396 | 2023-10-19,UNAUTHORIZED ACCESS,7400.72,0.0,975.84,18,2023-10-19 07:00:00,7,Unusual ATM,Wire Transfer,1 397 | 2023-11-05,SUSPICIOUS WITHDRAWAL,0.0,5110.97,87.45,22,2023-11-05 14:00:00,14,International,Wire Transfer,1 398 | 2023-04-22,SUSPICIOUS WITHDRAWAL,0.0,6258.49,255.05,31,2023-04-22 12:00:00,12,Offshore,Wire Transfer,1 399 | 2023-11-13,SUSPICIOUS WITHDRAWAL,5007.41,0.0,345.97,23,2023-11-13 19:00:00,19,Unknown Location,Online Purchase,1 400 | 2023-07-16,HIGH-RISK TRANSFER,0.0,4270.26,576.07,10,2023-07-16 11:00:00,11,Unusual ATM,Card Payment,1 401 | 2023-02-17,HIGH-RISK TRANSFER,0.0,3302.42,694.53,22,2023-02-17 20:00:00,20,Unknown Location,Wire Transfer,1 402 | 2023-10-29,HIGH-RISK TRANSFER,0.0,1004.71,822.35,45,2023-10-29 06:00:00,6,Unknown Location,Wire Transfer,1 403 | 2023-07-07,HIGH-RISK TRANSFER,0.0,7776.51,66.79,35,2023-07-07 18:00:00,18,Unknown Location,Wire Transfer,1 404 | 2023-06-12,HIGH-RISK TRANSFER,4453.6,0.0,187.12,21,2023-06-12 16:00:00,16,International,Card Payment,1 405 | 2023-01-05,SUSPICIOUS WITHDRAWAL,1243.43,0.0,577.18,46,2023-01-05 18:00:00,18,Offshore,Card Payment,1 406 | 2023-06-01,SUSPICIOUS WITHDRAWAL,0.0,4182.07,727.11,27,2023-06-01 03:00:00,3,Unknown Location,Wire Transfer,1 407 | 2023-03-05,SUSPICIOUS WITHDRAWAL,8181.48,0.0,798.7,25,2023-03-05 06:00:00,6,Offshore,Wire Transfer,1 408 | 2023-11-29,SUSPICIOUS WITHDRAWAL,594.65,0.0,930.41,30,2023-11-29 17:00:00,17,Unusual ATM,Money Transfer,1 409 | 2023-10-24,SUSPICIOUS WITHDRAWAL,1325.43,0.0,773.26,26,2023-10-24 09:00:00,9,International,Card Payment,1 410 | 2023-06-03,HIGH-RISK TRANSFER,0.0,1699.61,323.98,50,2023-06-03 11:00:00,11,Unusual ATM,Wire Transfer,1 411 | 2023-06-25,UNAUTHORIZED ACCESS,0.0,2637.94,566.68,27,2023-06-25 14:00:00,14,Offshore,Online Purchase,1 412 | 2023-04-03,SUSPICIOUS WITHDRAWAL,3430.5,0.0,537.94,43,2023-04-03 06:00:00,6,Unknown Location,Wire Transfer,1 413 | 2023-11-09,UNAUTHORIZED ACCESS,0.0,6641.2,840.53,16,2023-11-09 15:00:00,15,Offshore,Money Transfer,1 414 | 2023-08-24,UNAUTHORIZED ACCESS,4846.64,0.0,147.78,48,2023-08-24 09:00:00,9,International,Online Purchase,1 415 | 2023-09-17,UNAUTHORIZED ACCESS,3375.26,0.0,313.68,38,2023-09-17 08:00:00,8,Offshore,Money Transfer,1 416 | 2023-07-16,HIGH-RISK TRANSFER,0.0,930.0,808.95,38,2023-07-16 19:00:00,19,Offshore,Money Transfer,1 417 | 2023-11-14,SUSPICIOUS WITHDRAWAL,7526.51,0.0,3.75,15,2023-11-14 12:00:00,12,Unusual ATM,Money Transfer,1 418 | 2023-12-03,UNAUTHORIZED ACCESS,3102.32,0.0,745.54,48,2023-12-03 20:00:00,20,Unknown Location,Wire Transfer,1 419 | 2023-10-31,SUSPICIOUS WITHDRAWAL,4150.6,0.0,764.38,41,2023-10-31 08:00:00,8,Offshore,Wire Transfer,1 420 | 2023-06-15,HIGH-RISK TRANSFER,8879.7,0.0,827.18,21,2023-06-15 04:00:00,4,Unknown Location,Card Payment,1 421 | 2023-01-03,HIGH-RISK TRANSFER,2472.15,0.0,24.51,23,2023-01-03 07:00:00,7,Unusual ATM,Wire Transfer,1 422 | 2023-02-08,UNAUTHORIZED ACCESS,0.0,756.94,627.13,32,2023-02-08 16:00:00,16,International,Card Payment,1 423 | 2023-03-28,UNAUTHORIZED ACCESS,0.0,5309.45,113.79,47,2023-03-28 05:00:00,5,Offshore,Card Payment,1 424 | 2023-06-29,UNAUTHORIZED ACCESS,0.0,4152.53,729.05,36,2023-06-29 12:00:00,12,Unusual ATM,Wire Transfer,1 425 | 2023-07-15,UNAUTHORIZED ACCESS,0.0,3918.65,356.1,19,2023-07-15 15:00:00,15,International,Online Purchase,1 426 | 2023-01-11,SUSPICIOUS WITHDRAWAL,0.0,1442.32,222.12,41,2023-01-11 16:00:00,16,Offshore,Money Transfer,1 427 | -------------------------------------------------------------------------------- /fraudulent_distribution.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dineshm07/Designproject-1/eb175729e5b94c15117ed9f8ace472eb48e9af02/fraudulent_distribution.png -------------------------------------------------------------------------------- /generate_synData.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import numpy as np 3 | 4 | 5 | def generate_synthetic_features(input_csv, output_csv): 6 | df = pd.read_csv(input_csv) 7 | 8 | print("Initial Data:") 9 | print(df.head()) # Debugging: Check initial data 10 | 11 | df.columns = df.columns.str.strip() 12 | df['Date'] = df['Date'].astype(str).str.strip() 13 | 14 | # Convert 'Date' using the correct format 15 | try: 16 | df['Date'] = pd.to_datetime(df['Date'], format='%d %b %Y', errors='coerce') 17 | except Exception as e: 18 | print(f"Error parsing dates: {e}") 19 | 20 | print("NaT values in Date column:") 21 | print(df[df['Date'].isnull()]) # Print rows with NaT values 22 | 23 | df = df.dropna(subset=['Date']) 24 | print("Data after dropping NaT values:") 25 | print(df.head()) 26 | 27 | df = df.sort_values(by=['Date']) 28 | df['Transaction_Frequency'] = df.groupby(df['Date'].dt.date)['Date'].transform('count') - 1 29 | df['Transaction_Time'] = df['Date'] + pd.to_timedelta(np.random.randint(0, 24), unit='h') 30 | df['Hour_of_Day'] = df['Transaction_Time'].dt.hour 31 | 32 | locations = ["Delhi", "Mumbai", "Bangalore", "Chennai", "Trichy", "Kolkata", "International"] 33 | df['Location'] = np.where(np.random.rand(len(df)) > 0.8, "International", np.random.choice(locations, len(df))) 34 | df['Transaction_Type'] = df['Details'].apply(lambda x: "UPI" if "UPI" in x else "ATM" if "ATM" in x else "Other") 35 | 36 | df['Fraudulent'] = np.where((df['Debit'] > 1000) & (df['Location'] == "International") & (df['Hour_of_Day'] > 22), 1, 0) 37 | 38 | if df.empty: 39 | print("Warning: The final DataFrame is empty. No data will be saved.") 40 | else: 41 | print("Final DataFrame before saving:") 42 | print(df.head()) # Ensure there is data before saving 43 | df.to_csv(output_csv, index=False) 44 | print(f"Synthetic features added to {output_csv}") 45 | -------------------------------------------------------------------------------- /main.py: -------------------------------------------------------------------------------- 1 | #from src.pdf_to_csv import extract_transactions_from_pdf 2 | #from src.generate_synData import generate_synthetic_features 3 | 4 | # Step 1: Extract data from PDF and save as CSV 5 | #extract_transactions_from_pdf("data/transaction_history_unlocked.pdf", "data/transactions.csv") 6 | 7 | # Step 2: Generate synthetic features and save final dataset 8 | #generate_synthetic_features("data/transactions.csv", "data/final_dataset.csv") 9 | 10 | # from src.pdf_to_csv import extract_transactions_from_pdf 11 | # from src.generate_synData import generate_synthetic_features 12 | 13 | from src.preprocess.preprocess_data import load_data, preprocess_data, split_data 14 | from src.model.train_model import train_model 15 | from src.model.evaluate_model import evaluate_model, tune_hyperparameters 16 | import joblib 17 | import pandas as pd 18 | 19 | # Import the new modules for prediction and visualization 20 | from src.predict import make_predictions 21 | from src.visualize_predictions import load_predictions, save_fraudulent_distribution 22 | 23 | def main(): 24 | # Step 1: Load and preprocess the dataset 25 | print("[INFO] Loading the final dataset...") 26 | data_path = "data/final_dataset.csv" 27 | df = load_data(data_path) 28 | 29 | print("[INFO] Preprocessing the dataset...") 30 | X, y = preprocess_data(df) 31 | X_train, X_test, y_train, y_test = split_data(X, y) 32 | 33 | print("[INFO] Preprocessing complete. Saving preprocessed data...") 34 | joblib.dump((X_train, X_test, y_train, y_test), 'src/model/preprocessed_data.joblib') 35 | 36 | # Step 2: Train the model 37 | print("[INFO] Training the model...") 38 | rf_model = train_model(X_train, y_train) 39 | print("[INFO] Model training complete. Saving the model...") 40 | 41 | # Save the trained model 42 | joblib.dump(rf_model, 'src/model/random_forest_model.joblib') 43 | 44 | # Step 3: Evaluate the model 45 | print("[INFO] Evaluating the model...") 46 | evaluate_model(rf_model, X_test, y_test, report_output_path="static/images/classification_report.png") 47 | 48 | # Step 4: Hyperparameter tuning 49 | print("[INFO] Starting hyperparameter tuning...") 50 | best_rf_model = tune_hyperparameters(X_train, y_train) 51 | print("[INFO] Best Hyperparameters:", best_rf_model.get_params()) 52 | 53 | # Step 5: Load the best model after hyperparameter tuning (if needed) 54 | # The best model has already been saved during hyperparameter tuning 55 | print("[INFO] Loading the best model after tuning...") 56 | best_rf_model = joblib.load('src/model/best_random_forest_model.joblib') 57 | 58 | # Final evaluation of the best model 59 | print("[INFO] Evaluating the best model...") 60 | evaluate_model(best_rf_model, X_test, y_test) 61 | 62 | # Step 6: Make predictions on new data 63 | print("[INFO] Making predictions on new transaction data...") 64 | make_predictions() 65 | 66 | # Step 7: Visualize the predictions 67 | print("[INFO] Visualizing the results of the predictions...") 68 | predictions_file = 'data/predictions.csv' 69 | predictions_df = load_predictions(predictions_file) 70 | output_path = 'static/images/fraudulent_distribution.png' 71 | save_fraudulent_distribution(predictions_df, output_path) 72 | 73 | if __name__ == "__main__": 74 | main() 75 | -------------------------------------------------------------------------------- /new_transaction_data.csv: -------------------------------------------------------------------------------- 1 | Date,Details,Debit,Credit,Balance,Transaction_Frequency,Transaction_Time,Hour_of_Day,Location,Transaction_Type 2 | 3 | 2023-06-03,HIGH-RISK TRANSFER,0.0,1699.61,323.98,50,2023-06-03 11:00:00,11,Unusual ATM,Wire Transfer 4 | 2024-08-24,AIRP0000001/BHARTI INR 299.00 -,0.0,0.0,6703.02,6,2024-08-24 08:00:00,8,International,Other 5 | 2024-08-29,TRANSFER TO 4897694162092 -,200.8,0.0,9286.67,2,2024-08-29 08:00:00,8,Bangalore,Other 6 | 2024-08-30,TRANSFER TO 4897695162091 -,299.0,0.0,8987.67,1,2024-08-30 08:00:00,8,Kolkata,Other 7 | 2024-09-01,TRANSFER TO 4897690162095 -,250.0,0.0,8718.67,0,2024-09-01 08:00:00,8,Delhi,Other 8 | 2024-09-04,TRANSFER TO 4897693162093 -,23.0,0.0,8095.67,0,2024-09-04 08:00:00,8,Trichy,Other 9 | 2024-10-27,YESB0PTMUPI/KR College,0.0,0.0,4811.8,2,2024-10-27 08:00:00,8,Bangalore,UPI 10 | 2023-11-11,HIGH-RISK TRANSFER,0.0,2434.37,908.27,14,2023-11-11 12:00:00,12,Unusual ATM,Online Purchase 11 | -------------------------------------------------------------------------------- /pdf_to_csv.py: -------------------------------------------------------------------------------- 1 | import pdfplumber 2 | import pandas as pd 3 | import re 4 | 5 | def extract_transactions_from_pdf(pdf_path, output_csv_path): 6 | # Initialize an empty list to hold transaction data 7 | data = { 8 | "Date": [], 9 | "Details": [], 10 | "Debit": [], 11 | "Credit": [], 12 | "Balance": [] 13 | } 14 | 15 | with pdfplumber.open(pdf_path) as pdf: 16 | # Loop through pages, starting from the first page 17 | for page_index, page in enumerate(pdf.pages): 18 | text = page.extract_text() 19 | if text: # Ensure there's text on the page 20 | # Split text into lines 21 | lines = text.split('\n') 22 | for line in lines: 23 | # Check if the line looks like a transaction 24 | if is_transaction_line(line): 25 | parts = line.split() 26 | if len(parts) >= 5: # Ensure there are enough parts 27 | # Extract the date using regex 28 | date_match = re.search(r'(\d{1,2}\s[A-Za-z]{3}\s\d{4})', line) 29 | if date_match: 30 | date = date_match.group(1) # Get the full date 31 | data["Date"].append(date) 32 | else: 33 | data["Date"].append('') 34 | 35 | data["Details"].append(" ".join(parts[3:-3])) # Adjust index for details 36 | data["Debit"].append(parts[-3]) # Debit amount 37 | data["Credit"].append(parts[-2]) # Credit amount 38 | data["Balance"].append(parts[-1]) # Balance amount 39 | 40 | # Create a DataFrame from the collected data 41 | df = pd.DataFrame(data) 42 | 43 | # Convert columns to numeric, handling errors 44 | df['Debit'] = pd.to_numeric(df['Debit'], errors='coerce').fillna(0) 45 | df['Credit'] = pd.to_numeric(df['Credit'], errors='coerce').fillna(0) 46 | df['Balance'] = pd.to_numeric(df['Balance'], errors='coerce').fillna(0) 47 | 48 | # Save the DataFrame to a CSV file 49 | df.to_csv(output_csv_path, index=False) 50 | print(f"Data extracted to {output_csv_path}") 51 | 52 | def is_transaction_line(line): 53 | return any(keyword in line for keyword in ["UPI", "TRANSFER", "DEBIT", "CREDIT"]) # Adjust keywords as needed 54 | -------------------------------------------------------------------------------- /predict.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import joblib 3 | 4 | # Load the preprocessor and the trained model 5 | preprocessor = joblib.load('src/model/preprocessor.joblib') # This is where the preprocessor was saved 6 | best_rf_model = joblib.load('src/model/best_random_forest_model.joblib') # The trained model 7 | 8 | def make_predictions(): 9 | # Load new transaction data (assuming it's a CSV file) 10 | new_data = pd.read_csv('data/new_transaction_data.csv') 11 | 12 | # Print the original shape of the data (for debugging) 13 | print(f"Original new data shape: {new_data.shape}") 14 | 15 | # Drop non-feature columns (columns not used in model training) 16 | X_new = new_data.drop(columns=["Date", "Transaction_Time"]) # Adjust if more columns need to be dropped 17 | 18 | # Print the shape of the data after dropping the non-feature columns 19 | print(f"New data shape after dropping non-feature columns: {X_new.shape}") 20 | 21 | # Preprocess the new data using the preprocessor pipeline (transform, not fit_transform) 22 | X_new_processed = preprocessor.transform(X_new) 23 | 24 | # Print the shape of the processed data (for debugging) 25 | print(f"Processed new data shape: {X_new_processed.shape}") 26 | 27 | # Check if the number of features matches what the model expects 28 | if X_new_processed.shape[1] != best_rf_model.n_features_in_: 29 | print(f"Feature mismatch! Expected {best_rf_model.n_features_in_} features, but got {X_new_processed.shape[1]}.") 30 | return 31 | 32 | # Make predictions on the processed data 33 | y_pred = best_rf_model.predict(X_new_processed) 34 | 35 | # Save predictions to a CSV file 36 | predictions_df = pd.DataFrame(y_pred, columns=["Fraudulent_Prediction"]) 37 | predictions_df.to_csv("data/predictions.csv", index=False) 38 | 39 | print("[INFO] Predictions saved to 'data/predictions.csv'.") 40 | 41 | if __name__ == "__main__": 42 | make_predictions() 43 | -------------------------------------------------------------------------------- /predictions.csv: -------------------------------------------------------------------------------- 1 | Fraudulent_Prediction 2 | 1 3 | 0 4 | 0 5 | 0 6 | 0 7 | 0 8 | 0 9 | 1 10 | -------------------------------------------------------------------------------- /preprocess_data.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | from sklearn.model_selection import train_test_split 3 | from sklearn.preprocessing import StandardScaler, OneHotEncoder 4 | from sklearn.compose import ColumnTransformer 5 | from sklearn.pipeline import Pipeline 6 | import joblib # To save preprocessor 7 | 8 | # Step 1: Load the dataset 9 | def load_data(file_path): 10 | return pd.read_csv(file_path) 11 | 12 | # Step 2: Data Preprocessing 13 | def preprocess_data(df, is_predicting=False): 14 | """ 15 | Preprocess the data for model training or prediction. 16 | 17 | Parameters: 18 | - df: DataFrame containing the data to preprocess 19 | - is_predicting: Whether the function is preprocessing for prediction (defaults to False for training) 20 | 21 | Returns: 22 | - X_processed: Processed feature data 23 | - y (optional): Target variable for training 24 | """ 25 | if not is_predicting: 26 | # For training data, separate features (X) and target (y) 27 | X = df.drop(columns=["Fraudulent", "Date", "Transaction_Time"]) # Dropping non-features 28 | y = df["Fraudulent"] 29 | return preprocess_features(X), y 30 | else: 31 | # For prediction data, only preprocess features (no target column) 32 | X = df.drop(columns=["Date", "Transaction_Time"]) # Dropping non-features for prediction 33 | return preprocess_features(X) 34 | 35 | 36 | def preprocess_features(X): 37 | """ 38 | Apply preprocessing steps to the features. 39 | 40 | Parameters: 41 | - X: Features to preprocess 42 | 43 | Returns: 44 | - X_processed: Processed feature data 45 | """ 46 | # Define numerical and categorical columns 47 | numerical_cols = ["Debit", "Credit", "Balance", "Transaction_Frequency", "Hour_of_Day"] 48 | categorical_cols = ["Details", "Location", "Transaction_Type"] 49 | 50 | # Define preprocessing for numerical features (StandardScaler) 51 | numerical_transformer = StandardScaler() 52 | 53 | # Define preprocessing for categorical features (OneHotEncoder) 54 | categorical_transformer = OneHotEncoder(drop='first') # Drop first to avoid dummy variable trap 55 | 56 | # Create a column transformer that applies the transformations 57 | preprocessor = ColumnTransformer( 58 | transformers=[ 59 | ('num', numerical_transformer, numerical_cols), 60 | ('cat', categorical_transformer, categorical_cols) 61 | ]) 62 | 63 | # Create a pipeline that applies preprocessing to the data 64 | pipeline = Pipeline(steps=[('preprocessor', preprocessor)]) 65 | 66 | # Apply the pipeline to the features (X) 67 | X_processed = pipeline.fit_transform(X) 68 | 69 | # Save the preprocessor for future use (e.g., when making predictions) 70 | joblib.dump(pipeline, 'src/model/preprocessor.joblib') 71 | 72 | return X_processed 73 | 74 | # Step 3: Split data into training and testing sets 75 | def split_data(X, y, test_size=0.2, random_state=42): 76 | return train_test_split(X, y, test_size=test_size, random_state=random_state) 77 | 78 | # Main execution for testing 79 | if __name__ == "__main__": 80 | data_path = r"E:\DESIGN PROJECT 1\fraud_detection_project\data\final_dataset.csv" 81 | df = load_data(data_path) 82 | X, y = preprocess_data(df) 83 | X_train, X_test, y_train, y_test = split_data(X, y) 84 | print("Data preprocessing complete and split into train and test sets.") 85 | -------------------------------------------------------------------------------- /req.txt: -------------------------------------------------------------------------------- 1 | asgiref==3.8.1 2 | blinker==1.8.2 3 | click==8.1.7 4 | colorama==0.4.6 5 | contourpy==1.3.0 6 | cycler==0.12.1 7 | Django==5.1.2 8 | Flask==3.0.3 9 | fonttools==4.54.1 10 | itsdangerous==2.2.0 11 | Jinja2==3.1.4 12 | joblib==1.4.2 13 | kiwisolver==1.4.7 14 | MarkupSafe==3.0.1 15 | matplotlib==3.9.2 16 | numpy==2.1.2 17 | packaging==24.1 18 | pandas==2.2.3 19 | pillow==11.0.0 20 | pyparsing==3.2.0 21 | python-dateutil==2.9.0.post0 22 | pytz==2024.2 23 | scikit-learn==1.5.2 24 | scipy==1.14.1 25 | seaborn==0.13.2 26 | six==1.16.0 27 | sqlparse==0.5.1 28 | threadpoolctl==3.5.0 29 | tzdata==2024.2 30 | Werkzeug==3.0.4 31 | -------------------------------------------------------------------------------- /train_model.py: -------------------------------------------------------------------------------- 1 | # Import necessary libraries 2 | import joblib 3 | from sklearn.ensemble import RandomForestClassifier 4 | 5 | # Step 1: Train the Random Forest model 6 | def train_model(X_train, y_train): 7 | rf_model = RandomForestClassifier(random_state=42) 8 | rf_model.fit(X_train, y_train) 9 | joblib.dump(rf_model, 'src/model/random_forest_model.joblib') # Save the trained model 10 | return rf_model 11 | 12 | # Main execution for testing 13 | if __name__ == "__main__": 14 | # Load preprocessed data 15 | X_train, X_test, y_train, y_test = joblib.load('src/model/preprocessed_data.joblib') 16 | rf_model = train_model(X_train, y_train) 17 | print("Model training complete.") 18 | -------------------------------------------------------------------------------- /visualize_predictions.py: -------------------------------------------------------------------------------- 1 | import pandas as pd 2 | import matplotlib.pyplot as plt 3 | import seaborn as sns 4 | import os 5 | 6 | def load_predictions(file_path): 7 | print(f"[INFO] Loading predictions from {file_path}...") 8 | predictions_df = pd.read_csv(file_path) 9 | print("[INFO] Columns in predictions file:", predictions_df.columns) # Print columns 10 | return predictions_df 11 | 12 | def save_fraudulent_distribution(predictions_df, output_path): 13 | print("[INFO] Saving fraudulent distribution plot...") 14 | fraud_count = predictions_df['Fraudulent_Prediction'].value_counts() 15 | plt.figure(figsize=(8, 5)) 16 | sns.barplot(x=fraud_count.index, y=fraud_count.values, palette='viridis') 17 | plt.title('Predicted Fraudulent vs Non-Fraudulent Transactions') 18 | plt.xlabel('Fraudulent (1) / Non-Fraudulent (0)') 19 | plt.ylabel('Count') 20 | plt.xticks([0, 1], ['Non-Fraudulent', 'Fraudulent'], rotation=0) 21 | 22 | # Ensure the output directory exists 23 | os.makedirs(os.path.dirname(output_path), exist_ok=True) 24 | # Save the plot as a PNG file 25 | plt.savefig(output_path) 26 | plt.close() 27 | print(f"[INFO] Plot saved to {output_path}.") 28 | 29 | def main(): 30 | predictions_file = 'data/predictions.csv' # Update path if necessary 31 | predictions_df = load_predictions(predictions_file) 32 | 33 | # Update this line to use 'Fraudulent_Prediction' instead of 'Predicted_Fraudulent' 34 | if 'Fraudulent_Prediction' in predictions_df.columns: 35 | output_path = 'static/images/fraudulent_distribution.png' 36 | save_fraudulent_distribution(predictions_df, output_path) 37 | else: 38 | print("[ERROR] 'Fraudulent_Prediction' column not found in the predictions file.") 39 | 40 | if __name__ == "__main__": 41 | main() 42 | --------------------------------------------------------------------------------