Отчет о проекте:

Введение

Мошенничество с кредитными картами является серьезной проблемой как для потребителей, так и для финансовых учреждений. Мошеннические операции могут привести к финансовым потерям и ущербу для репутации финансовых учреждений. Методы машинного обучения широко используются для обнаружения мошеннических транзакций. В этом проекте мы используем логистическую регрессию, чтобы классифицировать транзакции как законные или мошеннические в зависимости от их характеристик.

Данные

Данные, используемые в этом проекте, представляют собой файл 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().