Merge pull request 'kondrashin_mikhail_lab_3_ready' (#204) from kondrashin_mikhail_lab_3 into main
Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/204
This commit is contained in:
commit
f3d73b433f
26
kondrashin_mikhail_lab_3/README.md
Normal file
26
kondrashin_mikhail_lab_3/README.md
Normal file
@ -0,0 +1,26 @@
|
||||
#### Кондрашин Михаил ПИбд-41
|
||||
|
||||
## Лабораторная работа 3. Деревья решений
|
||||
|
||||
### Запуск лабораторной работы:
|
||||
|
||||
* установить `python`, `numpy`, `matplotlib`, `sklearn`
|
||||
* запустить проект (стартовая точка класс `main.py`)
|
||||
|
||||
### Используемые технологии:
|
||||
|
||||
* Язык программирования `Python`,
|
||||
* Библиотеки `numpy`, `matplotlib`, `sklearn`
|
||||
* Среда разработки `IntelliJ IDEA` (В версии "Ultimate edition" можно писать на python)
|
||||
|
||||
### Описание решения:
|
||||
|
||||
* Выполняет ранжирование признаков для регрессионной модели
|
||||
* По данным "WindData" решает задачу классификации (с помощью дерева решений), в которой необходимо определить статистические параметры ветра, влияющие на классификацию по каждому из классов интенсивности турбулентности в соответствии с международной классификацией IEC-614000-1 ed.3.
|
||||
|
||||
|
||||
### Результат:
|
||||
![Result](images/result.png)
|
||||
|
||||
Как видно из результата работы программы - для каждого класса интенсивности турбулентности ключевым является показатель скорости ветра, наиболее выражено это для класса "С", наименее - для класса "B"
|
||||
|
49656
kondrashin_mikhail_lab_3/WindData.csv
Normal file
49656
kondrashin_mikhail_lab_3/WindData.csv
Normal file
File diff suppressed because it is too large
Load Diff
BIN
kondrashin_mikhail_lab_3/images/result.png
Normal file
BIN
kondrashin_mikhail_lab_3/images/result.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 79 KiB |
41
kondrashin_mikhail_lab_3/main.py
Normal file
41
kondrashin_mikhail_lab_3/main.py
Normal file
@ -0,0 +1,41 @@
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
pd.options.mode.chained_assignment = None
|
||||
|
||||
FILE_PATH = "WindData.csv"
|
||||
REQUIRED_COLUMNS = ['TI1', 'V1']
|
||||
TARGET_COLUMN_1 = 'TurbulenceIntensityClassA'
|
||||
TARGET_COLUMN_2 = 'TurbulenceIntensityClassB'
|
||||
TARGET_COLUMN_3 = 'TurbulenceIntensityClassC'
|
||||
|
||||
|
||||
def print_classifier_info(feature_importance):
|
||||
feature_names = REQUIRED_COLUMNS
|
||||
embarked_score = feature_importance[-3:].sum()
|
||||
scores = np.append(feature_importance[:2], embarked_score)
|
||||
scores = map(lambda score: round(score, 2), scores)
|
||||
print(dict(zip(feature_names, scores)))
|
||||
|
||||
|
||||
def actions(target_column):
|
||||
data = pd.read_csv(FILE_PATH)
|
||||
|
||||
X = data[REQUIRED_COLUMNS]
|
||||
y = data[target_column]
|
||||
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=100)
|
||||
|
||||
classifier_tree = DecisionTreeClassifier(random_state=100)
|
||||
classifier_tree.fit(X_train, y_train)
|
||||
|
||||
print_classifier_info(classifier_tree.feature_importances_)
|
||||
print("Оценка качества классификации ", target_column, " - ", classifier_tree.score(X_test, y_test))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
actions(TARGET_COLUMN_1)
|
||||
actions(TARGET_COLUMN_2)
|
||||
actions(TARGET_COLUMN_3)
|
Loading…
Reference in New Issue
Block a user