Compare commits
No commits in common. "5356fa1de4abbc7e2f0d4a5ab1b8a252f252238c" and "3b6af3a31f0b29ea554efd0900c99fd0083828f4" have entirely different histories.
5356fa1de4
...
3b6af3a31f
@ -1,48 +0,0 @@
|
|||||||
#### Кондрашин Михаил ПИбд-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 является наименьшей
|
|
||||||
|
|
||||||
То есть нелинейная функция является наилучшей для задачи прогнозирования погоды
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,12 +0,0 @@
|
|||||||
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
|
|
Binary file not shown.
Before Width: | Height: | Size: 85 KiB |
@ -1,4 +0,0 @@
|
|||||||
from neuralNetwork import worker
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
|
||||||
worker()
|
|
@ -1,28 +0,0 @@
|
|||||||
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…
x
Reference in New Issue
Block a user