Отчет о проекте:
Введение
Мошенничество с кредитными картами является серьезной проблемой как для потребителей, так и для финансовых учреждений. Мошеннические операции могут привести к финансовым потерям и ущербу для репутации финансовых учреждений. Методы машинного обучения широко используются для обнаружения мошеннических транзакций. В этом проекте мы используем логистическую регрессию, чтобы классифицировать транзакции как законные или мошеннические в зависимости от их характеристик.
Данные
Данные, используемые в этом проекте, представляют собой файл CSV, содержащий данные о транзакциях по кредитным картам. Данные имеют 31 столбец и 284 807 строк. Столбец «Класс» — это целевая переменная, которая указывает, является ли транзакция законной (Класс = 0) или мошеннической (Класс = 1).
Предварительная обработка
Перед обучением модели мы сначала разделяем законные и мошеннические транзакции. Поскольку данные несбалансированы, легитимных транзакций значительно больше, чем мошеннических, мы занижаем выборку законных транзакций, чтобы сбалансировать классы. Затем мы разделяем данные на наборы для обучения и тестирования с помощью функции train_test_split().
Модель
Мы используем логистическую регрессию, чтобы классифицировать транзакции как законные или мошеннические в зависимости от их характеристик. Логистическая регрессия — это широко используемый алгоритм классификации, который моделирует вероятность возникновения события на основе входных признаков. Модель логистической регрессии обучается на обучающих данных с помощью функции LogisticRegression() из scikit-learn. Затем обученная модель используется для прогнозирования целевой переменной для данных тестирования.
Оценка
Производительность модели оценивается с помощью метрики точности, которая представляет собой долю правильно классифицированных транзакций. Точность данных обучения и тестирования рассчитывается с помощью функции precision_score() из scikit-learn.
Приложение Streamlit
Мы используем Streamlit для создания пользовательского интерфейса для проекта по обнаружению мошенничества с кредитными картами. Приложение Streamlit позволяет пользователю загружать CSV-файл, содержащий данные о транзакциях по кредитным картам, и загруженные данные используются для обучения модели логистической регрессии. Пользователь также может ввести характеристики транзакции и получить прогноз о том, является ли транзакция законной или мошеннической.
Заключение
В этом проекте мы использовали логистическую регрессию для обнаружения мошеннических транзакций по кредитным картам. Мы добились высокой точности данных как для обучения, так и для тестирования, что указывает на то, что модель эффективна при обнаружении мошеннических транзакций. Приложение Streamlit предоставляет простой в использовании интерфейс для обнаружения мошеннических транзакций в режиме реального времени.
import numpy as np import pandas as pd from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.metrics import accuracy_score import streamlit as st st.set_page_config(page_title="Credit Card Fraud Detection", layout="wide") @st.cache(allow_output_mutation=True) def load_data(file): return pd.read_csv(file) def train_model(data): # separate legitimate and fraudulent transactions legit = data[data.Class == 0] fraud = data[data.Class == 1] # undersample legitimate transactions to balance the classes legit_sample = legit.sample(n=len(fraud), random_state=2) data = pd.concat([legit_sample, fraud], axis=0) # split data into training and testing sets X = data.drop(columns="Class", axis=1) y = data["Class"] X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.2, stratify=y, random_state=2 ) # train logistic regression model model = LogisticRegression() model.fit(X_train, y_train) # evaluate model performance train_acc = accuracy_score(model.predict(X_train), y_train) test_acc = accuracy_score(model.predict(X_test), y_test) return model, train_acc, test_acc def parse_transaction_string(transaction_string, feature_names): values = transaction_string.split(",") transaction = {} for i in range(len(values)): transaction[feature_names[i]] = float(values[i]) return transaction st.title("Credit Card Fraud Detection") file = st.file_uploader("Upload a CSV file containing credit card transaction data:") if file is not None: data = load_data(file) st.write("Data shape:", data.shape) model, train_acc, test_acc = train_model(data) st.write("Training accuracy:", train_acc) st.write("Test accuracy:", test_acc) # allow user to input transaction features and get a prediction st.subheader("Check a transaction") feature_names = data.drop(columns="Class", axis=1).columns transaction_string = st.text_input( "Enter transaction features (comma-separated)", "0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0")
О Кодексе:
Это проект машинного обучения для обнаружения мошенничества с кредитными картами. В проекте используется модель логистической регрессии для классификации транзакций как законных или мошеннических в зависимости от их характеристик.
Код начинается с импорта необходимых библиотек, таких как numpy, pandas, scikit-learn и Streamlit. Затем макет приложения Streamlit устанавливается с помощью функции st.set_page_config(). Функция load_data() предназначена для загрузки данных из CSV-файла, который загружается пользователем с помощью функции file_uploader(). Функция train_model() предназначена для обучения модели логистической регрессии на загруженных данных. Сначала функция разделяет законные и мошеннические транзакции, уменьшает выборку законных транзакций, чтобы сбалансировать классы, а затем разбивает данные на наборы для обучения и тестирования с помощью функции train_test_split(). Затем модель логистической регрессии обучается на данных обучения и оценивается на данных обучения и тестирования с использованием функции precision_score().
Функция parse_transaction_string() предназначена для анализа разделенной запятыми строки функций транзакций и преобразования ее в словарь с именами функций в качестве ключей и значениями функций в качестве значений.
Наконец, приложение Streamlit создается с использованием функции st.title() для установки заголовка, функции file_uploader(), позволяющей пользователю загружать CSV-файл, и функции text_input(), позволяющей пользователю вводить характеристики транзакции и получить прогноз. Загруженные данные загружаются с помощью функции load_data(), а модель обучается и оценивается с помощью функции train_model(). Точность обучения и тестирования отображается с помощью функции st.write(), а пользователь может вводить характеристики транзакции с помощью функции text_input().