kondrashin_mikhail_lab_6_ready
This commit is contained in:
parent
a8c58683dd
commit
676cbd00c2
48
kondrashin_mikhail_lab_6/README.md
Normal file
48
kondrashin_mikhail_lab_6/README.md
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
#### Кондрашин Михаил ПИбд-41
|
||||||
|
|
||||||
|
## Лабораторная работа 6. Нейронная сеть
|
||||||
|
|
||||||
|
### Запуск лабораторной работы:
|
||||||
|
|
||||||
|
* установить `python`, `numpy`, `matplotlib`, `sklearn`
|
||||||
|
* запустить проект (стартовая точка класс `main.py`)
|
||||||
|
|
||||||
|
### Используемые технологии:
|
||||||
|
|
||||||
|
* Язык программирования `Python`,
|
||||||
|
* Библиотеки `numpy`, `matplotlib`, `sklearn`
|
||||||
|
* Среда разработки `IntelliJ IDEA` (В версии "Ultimate edition" можно писать на python)
|
||||||
|
|
||||||
|
### Задача:
|
||||||
|
Осуществить обучение модели нейронной сети для предсказания погоды относительно влияющих погодных факторов по наиболее важным признакам.
|
||||||
|
|
||||||
|
### Описание решения:
|
||||||
|
|
||||||
|
* Входные данные:
|
||||||
|
* Влияющие признаки
|
||||||
|
* D1 (угол, с которого дует ветер на самом высоком датчике мачты ветростанции)
|
||||||
|
* TI1 (показатель турбуленции на самом высоком датчике мачты ветростанции)
|
||||||
|
* V1 (Скорость ветра)
|
||||||
|
* RH (относительная влажность)
|
||||||
|
* P (атмосферное давление)
|
||||||
|
* Аппроксимирующий признак - температура
|
||||||
|
* Файл WindData.csv
|
||||||
|
* Модель классификатора состоит из двух скрытых слоев
|
||||||
|
* Задействованные функции:
|
||||||
|
* relu
|
||||||
|
* identity
|
||||||
|
* tahn
|
||||||
|
* logistic
|
||||||
|
* max_iter=4000, n_iter_no_change=10, alpha=0.01
|
||||||
|
|
||||||
|
### Результат:
|
||||||
|
|
||||||
|
* Наиболее предпочтительной функцией при данных входных параметров для MLPClassifier является relu
|
||||||
|
* tahn и logistic являются примерно одинаковыми
|
||||||
|
* identity является наименьшей
|
||||||
|
|
||||||
|
То есть нелинейная функция является наилучшей для задачи прогнозирования погоды
|
||||||
|
|
||||||
|
![Result](images/result.png)
|
||||||
|
|
||||||
|
|
49656
kondrashin_mikhail_lab_6/WindData.csv
Normal file
49656
kondrashin_mikhail_lab_6/WindData.csv
Normal file
File diff suppressed because it is too large
Load Diff
12
kondrashin_mikhail_lab_6/funcClassifier.py
Normal file
12
kondrashin_mikhail_lab_6/funcClassifier.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
from sklearn.neural_network import MLPClassifier
|
||||||
|
from sklearn.metrics import accuracy_score
|
||||||
|
|
||||||
|
|
||||||
|
def random_state_fit(i, x_train, y_train, x_test, y_test, func):
|
||||||
|
mlp = MLPClassifier(random_state=i, max_iter=4000, n_iter_no_change=10,
|
||||||
|
activation=func, alpha=0.01, hidden_layer_sizes=[100, 100])
|
||||||
|
mlp.fit(x_train, y_train)
|
||||||
|
predictions = mlp.predict(x_test)
|
||||||
|
acc_mlp = accuracy_score(y_test, predictions)
|
||||||
|
print(f"Func {func} with accuracy {acc_mlp} \n")
|
||||||
|
return acc_mlp
|
BIN
kondrashin_mikhail_lab_6/images/result.png
Normal file
BIN
kondrashin_mikhail_lab_6/images/result.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 85 KiB |
4
kondrashin_mikhail_lab_6/main.py
Normal file
4
kondrashin_mikhail_lab_6/main.py
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
from neuralNetwork import worker
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
worker()
|
28
kondrashin_mikhail_lab_6/neuralNetwork.py
Normal file
28
kondrashin_mikhail_lab_6/neuralNetwork.py
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
import statistics
|
||||||
|
|
||||||
|
import pandas as pd
|
||||||
|
from sklearn.model_selection import train_test_split
|
||||||
|
|
||||||
|
from funcClassifier import random_state_fit
|
||||||
|
|
||||||
|
names = ['D1', 'TI1', 'V1', 'RH', 'P']
|
||||||
|
|
||||||
|
|
||||||
|
def bring(data):
|
||||||
|
return data[names], data['T'].astype('int')
|
||||||
|
|
||||||
|
|
||||||
|
def worker():
|
||||||
|
data = pd.read_csv('WindData.csv')
|
||||||
|
|
||||||
|
x, y = bring(data)
|
||||||
|
|
||||||
|
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=100)
|
||||||
|
|
||||||
|
funcs = ['relu', 'identity', 'tanh', 'logistic']
|
||||||
|
acc = []
|
||||||
|
for i in range(0, len(funcs)):
|
||||||
|
acc.append(random_state_fit(i, x_train, y_train, x_test, y_test, funcs[i]))
|
||||||
|
|
||||||
|
print('\n Results: ')
|
||||||
|
print(f' Min is {min(acc)}, Median is {statistics.median(acc)}, Max is {max(acc)}')
|
Loading…
Reference in New Issue
Block a user