senkin_alexander_lab_6 is ready #134
1
senkin_alexander_lab_6/.gitignore
vendored
Normal file
1
senkin_alexander_lab_6/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
./idea
|
32
senkin_alexander_lab_6/README.md
Normal file
32
senkin_alexander_lab_6/README.md
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
Лабораторная работа №6
|
||||||
|
|
||||||
|
Вариант №4
|
||||||
|
|
||||||
|
Задание на лабораторную:
|
||||||
|
|
||||||
|
Использовать нейронную сеть MLPRegressor для данных из курсовой работы, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной вами задачи.
|
||||||
|
|
||||||
|
Как запустить лабораторную работу:
|
||||||
|
|
||||||
|
Чтобы увидеть работу программы, нужно запустить исполняемый питон файл senkin_alexander_lab_6.py, после чего будут результаты выведены в консоль и отрисован график, по этим данным можно сделать выводы.
|
||||||
|
|
||||||
|
Библиотеки:
|
||||||
|
|
||||||
|
Sklearn - библиотека с большим количеством алгоритмов машинного обучения.
|
||||||
|
Matplotlib - это библиотека для создания графиков и визуализации данных. Она используется для отображения данных на графиках.
|
||||||
|
|
||||||
|
Задача:
|
||||||
|
|
||||||
|
Было решено посмотреть, как зависит количество несчастных случаев(inj), от таких признаков как: магнитуда(mag) и фатальные исходы(fat)
|
||||||
|
|
||||||
|
Описание программы:
|
||||||
|
|
||||||
|
- Загружаем данные из csv файла.
|
||||||
|
- Разделяем данные на обучающее и тестовые.
|
||||||
|
- Задаем MLPRegressor и обучаем.
|
||||||
|
- Оцениваем качество модели на тестовой выборке.
|
||||||
|
- Предсказываем количество несчастных случаев.
|
||||||
|
- Вывод результаты в консоль и рисуем график:
|
||||||
|
- ![img_1.png](img_1.png)
|
||||||
|
- ![img.png](img.png)
|
||||||
|
- Анализируем и делаем выводы, что коэфициент детерминации хороший, что говорит о точности модели, также это можно увидеть по графику. Для эксперимента я взял одно из значений в своей таблице, где mag = 3, fat = 1 и inj = 14. Нейронная сеть выдала результат в 15.027.., что является неплохим результатом. Делаем вывод, что MLPRegressor - хорошо подходит для выбранных данных.
|
BIN
senkin_alexander_lab_6/img.png
Normal file
BIN
senkin_alexander_lab_6/img.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 28 KiB |
BIN
senkin_alexander_lab_6/img_1.png
Normal file
BIN
senkin_alexander_lab_6/img_1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
49
senkin_alexander_lab_6/senkin_alexander_lab_6.py
Normal file
49
senkin_alexander_lab_6/senkin_alexander_lab_6.py
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
import pandas as pd
|
||||||
|
from matplotlib import pyplot as plt
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
from sklearn.neural_network import MLPRegressor
|
||||||
|
from sklearn.metrics import mean_squared_error, mean_absolute_error
|
||||||
|
|
||||||
|
# Загрузка данных
|
||||||
|
data = pd.read_csv("us_tornado_dataset_1950_2021.csv")
|
||||||
|
|
||||||
|
# Выбор признаков и целевой переменной
|
||||||
|
features = ['mag', 'fat']
|
||||||
|
target = 'inj'
|
||||||
|
X = data[features]
|
||||||
|
y = data[target]
|
||||||
|
|
||||||
|
# Разделение данных на обучающую и тестовую выборки
|
||||||
|
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.05, random_state=42)
|
||||||
|
|
||||||
|
# Обучение модели
|
||||||
|
model = MLPRegressor(
|
||||||
|
hidden_layer_sizes=(20, 20),
|
||||||
|
activation='relu',
|
||||||
|
solver='adam',
|
||||||
|
random_state=42
|
||||||
|
)
|
||||||
|
model.fit(X_train, y_train)
|
||||||
|
|
||||||
|
# Оценка качества модели на тестовой выборке
|
||||||
|
y_pred = model.predict(X_test)
|
||||||
|
score = model.score(X_test, y_test)
|
||||||
|
print("Коэффициент детерминации R^2 на тестовой выборке:", score)
|
||||||
|
|
||||||
|
# Предсказание количества несчастных случаев
|
||||||
|
new_features = []
|
||||||
|
for feature in features:
|
||||||
|
value = float(input(f"Введите значение для {feature}: "))
|
||||||
|
new_features.append(value)
|
||||||
|
new_features = [new_features]
|
||||||
|
predicted_fat = model.predict(new_features)
|
||||||
|
print("Предсказанное количество несчастных случаев:", predicted_fat[0])
|
||||||
|
|
||||||
|
# Визуализация модели
|
||||||
|
|
||||||
|
plt.scatter(y_test, y_pred)
|
||||||
|
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], 'k--', lw=2)
|
||||||
|
plt.xlabel('Фактическое количество несчастных случаев')
|
||||||
|
plt.ylabel('Предсказанное количество несчастных случаев')
|
||||||
|
plt.title('Предсказания модели MLPRegressor')
|
||||||
|
plt.show()
|
67559
senkin_alexander_lab_6/us_tornado_dataset_1950_2021.csv
Normal file
67559
senkin_alexander_lab_6/us_tornado_dataset_1950_2021.csv
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user