zavrazhnova_svetlana_lab_6 is ready
This commit is contained in:
parent
481361b7e0
commit
25acce2c79
28
zavrazhnova_svetlana_lab_6/README.md
Normal file
28
zavrazhnova_svetlana_lab_6/README.md
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
# Задание
|
||||||
|
Использовать нейронную сеть MLPClassifier для данных из файла `fraud_dataset.csv`, для задачи: Предсказать, является ли транзакция мошеннической или нет на основе имеющихся данных.
|
||||||
|
### Как запустить лабораторную работу:
|
||||||
|
ЛР запускается в файле zavrazhnova_svetlana_lab_6.py через Run, а затем в консоли должны появится вычисления
|
||||||
|
|
||||||
|
### Технологии
|
||||||
|
Библиотека sklearn.neuralnetwork содержит реализацию MLP (Multilayer Perceptron) - это алгоритм искусственного нейронного сети для классификации и регрессии.
|
||||||
|
Классификатор MLPClassifier является реализацией многослойного перцептрона для задач классификации.
|
||||||
|
|
||||||
|
Библиотека sklearn.metrics содержит различные метрики для оценки качества моделей машинного обучения. В данном случае, используются следующие метрики:
|
||||||
|
- accuracyscore - точность модели, которая показывает долю правильно классифицированных объектов.
|
||||||
|
- confusionmatrix - матрица ошибок, которая показывает количество правильно и неправильно классифицированных объектов для каждого класса.
|
||||||
|
- classificationreport - отчет о классификации, который содержит информацию о точности, полноте, F1-мере и поддержке для каждого класса.
|
||||||
|
|
||||||
|
### Что делает лабораторная:
|
||||||
|
Создает и обучает модель нейронной сети с помощью MLPClassifier. Оценивает точность модели с помощью функции accuracy_score(). Строит матрицу ошибок и выводит отчет о классификации
|
||||||
|
|
||||||
|
### Пример выходных значений:
|
||||||
|
![result.png](result.png)
|
||||||
|
|
||||||
|
### Вывод
|
||||||
|
Модель MLPClassifier, обученная на данных из файла fraud_dataset.csv, показывает высокую точность в предсказании мошеннических и не мошеннических транзакций.
|
||||||
|
Об этом говорят результаты вычислений:
|
||||||
|
- Accuracy: 1.0 - это показатель точности модели, который равен 1.0, что означает 100% точность модели в предсказании мошеннических и не мошеннических транзакций на тестовой выборке.
|
||||||
|
|
||||||
|
- Confusion Matrix: матрица ошибок, показывающая количество верно и неверно классифицированных транзакций. В данном случае, видим, что все 17 не мошеннических транзакций были правильно предсказаны, а одна мошенническая транзакция была неправильно предсказана.
|
||||||
|
|
||||||
|
- Classification Report: отчет о классификации, который содержит информацию о точности, полноте (recall), F1-мере и поддержке (support) для каждого класса. Из отчета видно, что как для класса 0 (не мошенническая транзакция), так и для класса 1 (мошенническая транзакция), точность, полнота и F1-мера равны 1.0, что говорит о идеальной предсказательной способности модели для обоих классов. Поддержка указывает на количество образцов в каждом классе в тестовой выборке.
|
BIN
zavrazhnova_svetlana_lab_6/result.png
Normal file
BIN
zavrazhnova_svetlana_lab_6/result.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
@ -1,84 +1,33 @@
|
|||||||
# import pandas as pd
|
|
||||||
# from sklearn.neural_network import MLPClassifier
|
|
||||||
# from sklearn.preprocessing import OneHotEncoder
|
|
||||||
#
|
|
||||||
# # Загрузка данных из файла
|
|
||||||
# df = pd.read_csv('fraud_dataset.csv')
|
|
||||||
#
|
|
||||||
# # Разделение признаков и целевой переменной
|
|
||||||
# # В данном случае целевая переменная - fraud_label
|
|
||||||
# X = df[['transaction_amount', 'location', 'merchant', 'age', 'gender']]
|
|
||||||
# y = df['fraud_label']
|
|
||||||
#
|
|
||||||
# X[['location', 'merchant', 'gender']] = X[['location', 'merchant', 'gender']].astype(str)
|
|
||||||
#
|
|
||||||
# # Преобразование категориальных признаков в числовые
|
|
||||||
# enc = OneHotEncoder()
|
|
||||||
# X_encoded = enc.fit_transform(X[['location', 'merchant', 'gender']]).toarray()
|
|
||||||
#
|
|
||||||
# # Объединение закодированных признаков с числовыми признаками
|
|
||||||
# X_final = pd.concat([X['transaction_amount'], pd.DataFrame(X_encoded), X['age']], axis=1)
|
|
||||||
#
|
|
||||||
# # Создание модели MLPClassifier
|
|
||||||
# model = MLPClassifier(hidden_layer_sizes=(100, 100)) # Можно настроить размеры и количество скрытых слоев
|
|
||||||
#
|
|
||||||
# # Обучение модели
|
|
||||||
# model.fit(X_final, y)
|
|
||||||
#
|
|
||||||
# # Предсказание для новых данных
|
|
||||||
# # Пример предсказания для новой транзакции
|
|
||||||
# new_transaction = pd.DataFrame([[2000.00, 'New York', 'ABC Corp', 35, 'M']],
|
|
||||||
# columns=['transaction_amount', 'location', 'merchant', 'age', 'gender'])
|
|
||||||
# new_transaction_encoded = enc.transform(new_transaction[['location', 'merchant', 'gender']]).toarray()
|
|
||||||
# new_transaction_final = pd.concat([new_transaction['transaction_amount'],
|
|
||||||
# pd.DataFrame(new_transaction_encoded),
|
|
||||||
# new_transaction['age']], axis=1)
|
|
||||||
# prediction = model.predict(new_transaction_final)
|
|
||||||
#
|
|
||||||
# # Вывод предсказания
|
|
||||||
# print(prediction)
|
|
||||||
|
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
import numpy as np
|
|
||||||
from matplotlib import pyplot as plt
|
|
||||||
from sklearn import metrics
|
|
||||||
from sklearn.model_selection import train_test_split
|
from sklearn.model_selection import train_test_split
|
||||||
from sklearn.neural_network import MLPRegressor
|
from sklearn.neural_network import MLPClassifier
|
||||||
from sklearn.preprocessing import LabelEncoder
|
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report
|
||||||
|
|
||||||
# Метод обучения нейронной сети
|
data = pd.read_csv('fraud_dataset.csv')
|
||||||
def reg_neural_net():
|
|
||||||
df = pd.read_csv('fraud_dataset.csv')
|
|
||||||
x, y = [df.drop("fraud_label", axis=1).values,
|
|
||||||
df["fraud_label"].values]
|
|
||||||
encoder = LabelEncoder()
|
|
||||||
df['location'] = encoder.fit_transform(df['location']) # Преобразование категориального столбца "location" в числовой формат
|
|
||||||
|
|
||||||
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.001, random_state=42)
|
X = data[['transaction_amount', 'location', 'merchant', 'age', 'gender']]
|
||||||
|
y = data['fraud_label']
|
||||||
|
|
||||||
mlp = MLPRegressor(hidden_layer_sizes=(100, 50), activation='tanh', solver='adam', random_state=15000)
|
# Преобразование категориальных переменных в числовые
|
||||||
mlp.fit(x_train, y_train)
|
X = pd.get_dummies(X, columns=['location', 'merchant', 'gender'])
|
||||||
y_predict = mlp.predict(x_test)
|
|
||||||
err = pred_errors(y_predict, y_test)
|
|
||||||
make_plots(y_test, y_predict, err[0], err[1], "Нейронная сеть")
|
|
||||||
|
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||||
|
|
||||||
# Метод рассчёта ошибок
|
# Обучение модели нейронной сети
|
||||||
def pred_errors(y_predict, y_test):
|
model = MLPClassifier(random_state=1, max_iter=2000, n_iter_no_change=20,
|
||||||
mid_square = np.round(np.sqrt(metrics.mean_squared_error(y_test, y_predict)),3) # Рассчёт среднеквадратичной ошибки модели
|
alpha=0.001, hidden_layer_sizes=[1280], tol=0.0000001)
|
||||||
det_kp = np.round(metrics.r2_score(y_test, y_predict), 2) # Рассчёт коэфициента детерминации модели
|
model.fit(X_train, y_train)
|
||||||
return mid_square, det_kp
|
|
||||||
|
|
||||||
|
# Предсказание на тестовой выборке
|
||||||
|
y_pred = model.predict(X_test)
|
||||||
|
|
||||||
# Метод отрисовки графиков
|
# Оценка качества модели
|
||||||
def make_plots(y_test, y_predict, mid_sqrt, det_kp, title):
|
accuracy = accuracy_score(y_test, y_pred)
|
||||||
plt.plot(y_test, c="red", label="\"y\" исходная") # Создание графика исходной функции
|
confusion = confusion_matrix(y_test, y_pred)
|
||||||
plt.plot(y_predict, c="green", label="\"y\" предсказанная \n"
|
report = classification_report(y_test, y_pred)
|
||||||
"Ср^2 = " + str(mid_sqrt) + "\n"
|
|
||||||
"Кд = " + str(det_kp)) # Создание графика предсказанной функции
|
|
||||||
plt.legend(loc='lower left')
|
|
||||||
plt.title(title)
|
|
||||||
plt.savefig('static/' + title + '.png')
|
|
||||||
plt.close()
|
|
||||||
|
|
||||||
reg_neural_net()
|
print("Accuracy:", accuracy)
|
||||||
|
print("Confusion Matrix:")
|
||||||
|
print(confusion)
|
||||||
|
print("Classification Report:")
|
||||||
|
print(report)
|
Loading…
Reference in New Issue
Block a user