Merge pull request 'kondrashin_mikhail_lab_6_ready' (#207) from kondrashin_mikhail_lab_6 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/207
This commit is contained in:
commit
5356fa1de4
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