Compare commits
191 Commits
podkorytov
...
kamyshov_d
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
12a435891b | ||
| bcc00fa6a5 | |||
| 6599b19d25 | |||
| b4d9dfaa00 | |||
| d734997760 | |||
| 0b0dc13465 | |||
| 8fe64134c0 | |||
| 0ce6657922 | |||
| 8b39205604 | |||
| ac83aa892a | |||
| 2648aac11a | |||
| f3d73b433f | |||
| 794389f861 | |||
| d6d9068a03 | |||
| 64d87ef5f7 | |||
| 1dca1eb91b | |||
| 7be972dbc7 | |||
| 9bcd4fdbf0 | |||
| 131cb584dd | |||
| 8241b9b429 | |||
| 2d9998d681 | |||
| 5886f99b30 | |||
| 50e0780960 | |||
| e64084bb6e | |||
| 076449fd0b | |||
| c2101d3e00 | |||
| 7e5a16e38b | |||
| cad64a19f6 | |||
| c2e32b2ef2 | |||
| 32a53d4be5 | |||
| 4748853b67 | |||
| 8a297e2542 | |||
| 23e1642819 | |||
| e943a38726 | |||
| 205e558e12 | |||
| 5fa2de6b57 | |||
| 1a80ebbe76 | |||
| a8fe7f1c3e | |||
| 3b74c70f50 | |||
| 37e90b4c6c | |||
| 44023b7305 | |||
|
|
2c7a1a1e18 | ||
|
|
b661ebcb41 | ||
|
|
5b27113150 | ||
| 3e32d676e0 | |||
| 79ae40d608 | |||
| b3c9da8f15 | |||
| 9ac110d9ab | |||
| d2627b6a38 | |||
|
|
de0a8ee5bc | ||
| a4aa458bc5 | |||
| c24c21caf3 | |||
| c47e1e3012 | |||
| 5729ed64a9 | |||
| 49d703350e | |||
| d29da45383 | |||
| 90954dfa89 | |||
|
|
4c08267e74 | ||
|
|
bc33af764d | ||
| 2b2eb9b72d | |||
| 3b1bd034a7 | |||
| 2a1d17c98f | |||
| d62368540e | |||
|
|
2dbadb666a | ||
|
|
9789f9772b | ||
|
|
2670375d98 | ||
|
|
690fd745de | ||
|
|
cc021ad78a | ||
|
|
cc1802b4f0 | ||
|
|
53818e12e5 | ||
|
|
7c63fc79f6 | ||
| 88f5268b31 | |||
| 3a316d94a1 | |||
| 481a18c68d | |||
| 27d25c8f14 | |||
| 8eb27373e0 | |||
|
|
f0334fdc44 | ||
| 7eda432471 | |||
| ebf64afcf2 | |||
| 637083470c | |||
| c3aa36cc7b | |||
| e80da1c4ce | |||
| 2506e7cd95 | |||
| a8c58683dd | |||
| 6298d561f8 | |||
| 294764b582 | |||
| 54eea76599 | |||
| 4c8da5afb3 | |||
| 21552b4c19 | |||
|
|
220b176be4 | ||
|
|
0d1e5a83f4 | ||
| b3e1e38eeb | |||
| 6de7179b7d | |||
| c0ead13d82 | |||
| 357f26d992 | |||
| f2f5d16974 | |||
| cab38b4f27 | |||
| c813e16f55 | |||
| 9142e612f8 | |||
| 7c92d143e0 | |||
| 52431a867c | |||
| 666a34b483 | |||
| 57bb7a90cd | |||
| da2b5dacb8 | |||
| 0acf59f77f | |||
| 40f7706378 | |||
| 2881070bf0 | |||
| 02422f4eff | |||
| 831912d692 | |||
| 70c0f7a0e1 | |||
| 8592ba88a4 | |||
| 4973adb1f2 | |||
| 388c9e64cf | |||
| 1f8bc49d17 | |||
| d4dbce9b09 | |||
| 931d8de854 | |||
| ec42e21a1d | |||
| 02147c3d5f | |||
| d388cd8442 | |||
| 7f45d87074 | |||
| fe77447993 | |||
| 9ce5af1aea | |||
| 278b85e66a | |||
| 2885277f6c | |||
| 58b1009367 | |||
| 9755697671 | |||
| d6bdc5893a | |||
| 28056f94bd | |||
| 1aef95a6d9 | |||
| 95519adc5a | |||
| 5746fc2084 | |||
|
|
c92f833265 | ||
|
|
1d2c86f568 | ||
|
|
b27537157a | ||
| ee70ec67ba | |||
| dde432a16b | |||
| def334a1f4 | |||
| f6a9dc6a74 | |||
| d8ea68139d | |||
| 37d75cda32 | |||
| 2383a997b1 | |||
| e8ff2392da | |||
| de79db46c0 | |||
| 82829a15a2 | |||
| c9fa1b2d60 | |||
| d5cd684a98 | |||
| a9af6c3c37 | |||
| e1bba9b13c | |||
| aa543e057e | |||
| 72b717d7ae | |||
| 3007207ade | |||
| 4838c6dbeb | |||
| 4949686542 | |||
| 4f16492ad7 | |||
| 565b4f171f | |||
| a87330830b | |||
| a8f3b6c692 | |||
| ce7cfa4365 | |||
| 462c0ea3e0 | |||
| 4eb8cfabd1 | |||
| e65543a5fc | |||
|
|
f0e16a20d4 | ||
| 08ed6413b9 | |||
| 1f35af8f8f | |||
|
|
63198665cc | ||
| 10761e96bb | |||
| f61aea2ee2 | |||
| be664b513c | |||
| 5d250948b5 | |||
|
|
c344eb7300 | ||
| 8a51aacfb2 | |||
| 017623e084 | |||
| 09b9bfc730 | |||
| fee881b4b4 | |||
| 7bd06eb002 | |||
|
|
c4bd132891 | ||
| 13a2641aa2 | |||
| 5e0058b82e | |||
| faeeecf1ef | |||
| dab82f11ee | |||
| 55b79c339e | |||
|
|
0e5a5ad282 | ||
| a9e95110c1 | |||
| 0fa8db9c5d | |||
| e8a3914840 | |||
| 63c40e202e | |||
| b8af0044a0 | |||
| e36a729776 | |||
| bbd6aea496 | |||
|
|
16b36dce9b | ||
|
|
0d865a6160 |
141
.gitignore
vendored
Normal file
@@ -0,0 +1,141 @@
|
||||
### Python template
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
# Usually these files are written by a python script from a template
|
||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
cover/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
.pybuilder/
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
# For a library or package, you might want to ignore these files since the code is
|
||||
# intended to run in multiple environments; otherwise, check them in:
|
||||
# .python-version
|
||||
|
||||
# pipenv
|
||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
||||
# install all needed dependencies.
|
||||
#Pipfile.lock
|
||||
|
||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
.idea
|
||||
39
abanin_daniil_lab_7/README.md
Normal file
@@ -0,0 +1,39 @@
|
||||
# Лабораторная работа №7
|
||||
|
||||
### Рекуррентная нейронная сеть и задача генерации текста
|
||||
|
||||
## ПИбд-41 Абанин Даниил
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
|
||||
* установить python, numpy, keras, tensorflow
|
||||
* запустить проект (стартовая точка lab7)
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
* Язык программирования `Python`, библиотеки numpy, keras, tensorflow
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает лабораторная работа:
|
||||
* На основе выбранных художественных текстов происходит обучение рекуррентной нейронной сети для решения задачи генерации.
|
||||
* Необходимо подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.
|
||||
|
||||
### Тест
|
||||
* Чтение текста из файлов .txt (eng_text.txt, rus_text.txt)
|
||||
* Вызов функция get_model_data, из которой мы получаем входные, выходные данные (X, y), размер словаря и токенайзер. Используем Tokenizer с настройкой char_level=True, что позволяет упразднить использование Embedding слоя далее
|
||||
* Создание объекта Sequential (последовательная рекуррентная нейронная сеть) и добавление двух слоёв LSTM. LSTM (Long Short-Term Memory) представляет собой разновидность рекуррентной нейронной сети, которая эффективно работает с последовательными данными. Использование нескольких слоёв даёт большую гибкость. Dropout — это метод регуляризации для нейронных сетей и моделей глубокого обучения, решение проблемы переобучения. Слой Dense с функцией активации softmax используется для предсказания следующего слова
|
||||
* Компилирование модели с использованием sparse_categorical_crossentropy
|
||||
* Обучение модели на 100 эпохах (оптимальный вариант)
|
||||
* Генерация текста
|
||||
|
||||
Сгенерированные тексты
|
||||
|
||||
* ENG: I must be getting somewhere near the centre of the earth. how funny it'll seem to come out among the people that walk with their heads downward! the antipathies, i think—' (for, you see, alice had learnt several things of this
|
||||
|
||||
* RUS: господин осматривал свою комнату, внесены были его пожитки: прежде всего чемодан из белой кожи, несколько поистасканный, показывавший, что был не в первый раз в дороге. чемодан внесли кучер селифан отправился на конюшню вози
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
По итогу, программа способна сгенерировать осмысленный текст в каждом из случаев
|
||||
7
abanin_daniil_lab_7/eng_text.txt
Normal file
@@ -0,0 +1,7 @@
|
||||
Either the well was very deep, or she fell very slowly, for she had plenty of time as she went down to look about her and to wonder what was going to happen next. First, she tried to look down and make out what she was coming to, but it was too dark to see anything; then she looked at the sides of the well, and noticed that they were filled with cupboards and book-shelves; here and there she saw maps and pictures hung upon pegs. She took down a jar from one of the shelves as she passed; it was labelled 'ORANGE MARMALADE', but to her great disappointment it was empty: she did not like to drop the jar for fear of killing somebody, so managed to put it into one of the cupboards as she fell past it.
|
||||
|
||||
'Well!' thought Alice to herself, 'after such a fall as this, I shall think nothing of tumbling down stairs! How brave they'll all think me at home! Why, I wouldn't say anything about it, even if I fell off the top of the house!' (Which was very likely true.)
|
||||
|
||||
Down, down, down. Would the fall NEVER come to an end! 'I wonder how many miles I've fallen by this time?' she said aloud. 'I must be getting somewhere near the centre of the earth. Let me see: that would be four thousand miles down, I think—' (for, you see, Alice had learnt several things of this sort in her lessons in the schoolroom, and though this was not a VERY good opportunity for showing off her knowledge, as there was no one to listen to her, still it was good practice to say it over) '—yes, that's about the right distance—but then I wonder what Latitude or Longitude I've got to?' (Alice had no idea what Latitude was, or Longitude either, but thought they were nice grand words to say.)
|
||||
|
||||
Presently she began again. 'I wonder if I shall fall right THROUGH the earth! How funny it'll seem to come out among the people that walk with their heads downward! The Antipathies, I think—' (she was rather glad there WAS no one listening, this time, as it didn't sound at all the right word) '—but I shall have to ask them what the name of the country is, you know. Please, Ma'am, is this New Zealand or Australia?' (and she tried to curtsey as she spoke—fancy CURTSEYING as you're falling through the air!
|
||||
75
abanin_daniil_lab_7/lab7.py
Normal file
@@ -0,0 +1,75 @@
|
||||
from keras import Sequential
|
||||
from keras.layers import LSTM, Dense, Dropout
|
||||
from keras.preprocessing.text import Tokenizer
|
||||
from keras.preprocessing.sequence import pad_sequences
|
||||
import numpy as np
|
||||
|
||||
with open('rus_text.txt', 'r', encoding='utf-8') as file:
|
||||
text = file.read()
|
||||
|
||||
|
||||
def create_sequences(text, seq_len):
|
||||
sequences = []
|
||||
next_chars = []
|
||||
for i in range(0, len(text) - seq_len):
|
||||
sequences.append(text[i:i + seq_len])
|
||||
next_chars.append(text[i + seq_len])
|
||||
return sequences, next_chars
|
||||
|
||||
|
||||
def get_model_data(seq_length):
|
||||
tokenizer = Tokenizer(char_level=True)
|
||||
tokenizer.fit_on_texts([text])
|
||||
|
||||
token_text = tokenizer.texts_to_sequences([text])[0]
|
||||
|
||||
sequences, next_chars = create_sequences(token_text, seq_length)
|
||||
|
||||
vocab_size = len(tokenizer.word_index) + 1
|
||||
x = pad_sequences(sequences, maxlen=seq_length)
|
||||
y = np.array(next_chars)
|
||||
|
||||
return x, y, vocab_size, tokenizer
|
||||
|
||||
|
||||
def model_build(model, vocab_size):
|
||||
model.add(LSTM(256, input_shape=(seq_length, 1), return_sequences=True))
|
||||
model.add(LSTM(128, input_shape=(seq_length, 1)))
|
||||
model.add(Dropout(0.2, input_shape=(60,)))
|
||||
model.add(Dense(vocab_size, activation='softmax'))
|
||||
|
||||
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
|
||||
|
||||
|
||||
# Функция для генерации текста
|
||||
def generate_text(seed_text, gen_length, tokenizer, model):
|
||||
generated_text = seed_text
|
||||
|
||||
for _ in range(gen_length):
|
||||
sequence = tokenizer.texts_to_sequences([seed_text])[0]
|
||||
sequence = pad_sequences([sequence], maxlen=seq_length)
|
||||
prediction = model.predict(sequence)[0]
|
||||
predicted_index = np.argmax(prediction)
|
||||
predicted_char = tokenizer.index_word[predicted_index]
|
||||
generated_text += predicted_char
|
||||
seed_text += predicted_char
|
||||
seed_text = seed_text[1:]
|
||||
|
||||
return generated_text
|
||||
|
||||
|
||||
seq_length = 10
|
||||
seed_text = "господин осматривал свою"
|
||||
|
||||
# Создание экземпляра Tokenizer и обучение на тексте
|
||||
|
||||
X, y, vocab_size, tokenizer = get_model_data(seq_length)
|
||||
|
||||
model = Sequential()
|
||||
|
||||
model_build(model, vocab_size)
|
||||
|
||||
model.fit(X, y, epochs=100, verbose=1)
|
||||
|
||||
generated_text = generate_text(seed_text, 200, tokenizer, model)
|
||||
print(generated_text)
|
||||
BIN
abanin_daniil_lab_7/result_eng.png
Normal file
|
After Width: | Height: | Size: 154 KiB |
BIN
abanin_daniil_lab_7/result_rus.png
Normal file
|
After Width: | Height: | Size: 85 KiB |
3
abanin_daniil_lab_7/rus_text.txt
Normal file
@@ -0,0 +1,3 @@
|
||||
В ворота гостиницы губернского города NN въехала довольно красивая рессорная небольшая бричка, в какой ездят холостяки: отставные подполковники, штабс-капитаны, помещики, имеющие около сотни душ крестьян, — словом, все те, которых называют господами средней руки. В бричке сидел господин, не красавец, но и не дурной наружности, ни слишком толст, ни слишком тонок; нельзя сказать, чтобы стар, однако ж и не так чтобы слишком молод. Въезд его не произвел в городе совершенно никакого шума и не был сопровожден ничем особенным; только два русские мужика, стоявшие у дверей кабака против гостиницы, сделали кое-какие замечания, относившиеся, впрочем, более к экипажу, чем к сидевшему в нем. «Вишь ты, — сказал один другому, — вон какое колесо! что ты думаешь, доедет то колесо, если б случилось, в Москву или не доедет?» — «Доедет», — отвечал другой. «А в Казань-то, я думаю, не доедет?» — «В Казань не доедет», — отвечал другой. Этим разговор и кончился. Да еще, когда бричка подъехала к гостинице, встретился молодой человек в белых канифасовых панталонах, весьма узких и коротких, во фраке с покушеньями на моду, из-под которого видна была манишка, застегнутая тульскою булавкою с бронзовым пистолетом. Молодой человек оборотился назад, посмотрел экипаж, придержал рукою картуз, чуть не слетевший от ветра, и пошел своей дорогой.
|
||||
Когда экипаж въехал на двор, господин был встречен трактирным слугою, или половым, как их называют в русских трактирах, живым и вертлявым до такой степени, что даже нельзя было рассмотреть, какое у него было лицо. Он выбежал проворно, с салфеткой в руке, весь длинный и в длинном демикотонном сюртуке со спинкою чуть не на самом затылке, встряхнул волосами и повел проворно господина вверх по всей деревянной галдарее показывать ниспосланный ему Богом покой. Покой был известного рода, ибо гостиница была тоже известного рода, то есть именно такая, как бывают гостиницы в губернских городах, где за два рубля в сутки проезжающие получают покойную комнату с тараканами, выглядывающими, как чернослив, из всех углов, и дверью в соседнее помещение, всегда заставленную комодом, где устроивается сосед, молчаливый и спокойный человек, но чрезвычайно любопытный, интересующийся знать о всех подробностях проезжающего. Наружный фасад гостиницы отвечал ее внутренности: она была очень длинна, в два этажа; нижний не был выщекатурен и оставался в темно-красных кирпичиках, еще более потемневших от лихих погодных перемен и грязноватых уже самих по себе; верхний был выкрашен вечною желтою краскою; внизу были лавочки с хомутами, веревками и баранками. В угольной из этих лавочек, или, лучше, в окне, помещался сбитенщик с самоваром из красной меди и лицом так же красным, как самовар, так что издали можно бы подумать, что на окне стояло два самовара, если б один самовар не был с черною как смоль бородою.
|
||||
Пока приезжий господин осматривал свою комнату, внесены были его пожитки: прежде всего чемодан из белой кожи, несколько поистасканный, показывавший, что был не в первый раз в дороге. Чемодан внесли кучер Селифан, низенький человек в тулупчике, и лакей Петрушка, малый лет тридцати, в просторном подержанном сюртуке, как видно с барского плеча, малый немного суровый на взгляд, с очень крупными губами и носом. Вслед за чемоданом внесен был небольшой ларчик красного дерева с штучными выкладками из карельской березы, сапожные колодки и завернутая в синюю бумагу жареная курица. Когда все это было внесено, кучер Селифан отправился на конюшню возиться около лошадей, а лакей Петрушка стал устраиваться в маленькой передней, очень темной конурке, куда уже успел притащить свою шинель и вместе с нею какой-то свой собственный запах, который был сообщен и принесенному вслед за тем мешку с разным лакейским туалетом. В этой конурке он приладил к стене узенькую трехногую кровать, накрыв ее небольшим подобием тюфяка, убитым и плоским, как блин, и, может быть, так же замаслившимся, как блин, который удалось ему вытребовать у хозяина гостиницы.
|
||||
34
abanin_danill_lab_6/README.md
Normal file
@@ -0,0 +1,34 @@
|
||||
## Лабораторная работа №6
|
||||
|
||||
### MLPClassifier
|
||||
|
||||
## Cтудент группы ПИбд-41 Абанин Даниил
|
||||
|
||||
### Как запустить лабораторную работу:
|
||||
|
||||
* установить python, numpy, matplotlib, sklearn
|
||||
* запустить проект (lab6)
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
* Язык программирования `Python`, библиотеки numpy, matplotlib, sklearn
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает лабораторная работа:
|
||||
|
||||
* По данным "Eligibility Prediction for Loan" решает задачу классификации, в которой необходимо выявить риски выдачи кредита. В качестве исходных данных используются признаки:
|
||||
Credit_History - соответствие кредитной истории стандартам банка, ApplicantIncome - доход заявителя, LoanAmount - сумма кредитаб, Self_Employed - самозанятость (Да/Нет), Education - наличие образования, Married - заявитель женат/замужем (Да/Нет).
|
||||
|
||||
### Примеры работы:
|
||||
|
||||
#### Результаты:
|
||||
* Было проведено несколько прогонов на разном количестве итераций (200, 400, 600, 800, 1000)
|
||||
|
||||

|
||||

|
||||
|
||||
Средняя точность находится в диапазоне 50-60%, что является недостаточным значением. Увеличение итераций не дало значительного улучшения результата,
|
||||
максиальный прирост составляет 10%
|
||||
|
||||
|
||||

|
||||
46
abanin_danill_lab_6/lab6.py
Normal file
@@ -0,0 +1,46 @@
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
|
||||
def test_iter(iters_num, x_train, x_test, y_train, y_test):
|
||||
|
||||
print("Количество итераций: ", iters_num)
|
||||
scores = []
|
||||
|
||||
for i in range(10):
|
||||
neuro = MLPClassifier(max_iter=iters_num)
|
||||
neuro.fit(x_train, y_train.values.ravel())
|
||||
score = neuro.score(x_test, y_test)
|
||||
print(f'Оценка №{i + 1} - {score}')
|
||||
scores.append(score)
|
||||
|
||||
mean_value = np.mean(scores)
|
||||
|
||||
print(f"Средняя оценка - {mean_value}")
|
||||
|
||||
return mean_value
|
||||
|
||||
|
||||
def start():
|
||||
data = pd.read_csv('loan.csv')
|
||||
x = data[['ApplicantIncome', 'LoanAmount', 'Credit_History', 'Self_Employed', 'Education', 'Married']]
|
||||
y = data[['Loan_Status']]
|
||||
|
||||
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.1, random_state=42)
|
||||
|
||||
iters = [200, 400, 600, 800, 1000]
|
||||
iters_means = []
|
||||
|
||||
for i in range(len(iters)):
|
||||
mean_value = test_iter(iters[i], x_train, x_test, y_train, y_test)
|
||||
iters_means.append(mean_value)
|
||||
|
||||
plt.figure(1, figsize=(16, 9))
|
||||
plt.plot(iters, iters_means, c='r')
|
||||
plt.show()
|
||||
|
||||
|
||||
start()
|
||||
615
abanin_danill_lab_6/loan.csv
Normal file
@@ -0,0 +1,615 @@
|
||||
Loan_ID,Gender,Married,Dependents,Education,Self_Employed,ApplicantIncome,CoapplicantIncome,LoanAmount,Loan_Amount_Term,Credit_History,Property_Area,Loan_Status
|
||||
LP001002,Male,0.0,0,1,0.0,5849,0.0,360.0,1.0,0,Y,0.0
|
||||
LP001003,Male,1.0,1,1,0.0,4583,1508.0,128.0,360.0,1,Rural,0.0
|
||||
LP001005,Male,1.0,0,1,1.0,3000,0.0,66.0,360.0,1,Urban,1.0
|
||||
LP001006,Male,1.0,0,0,0.0,2583,2358.0,120.0,360.0,1,Urban,1.0
|
||||
LP001008,Male,0.0,0,1,0.0,6000,0.0,141.0,360.0,1,Urban,1.0
|
||||
LP001011,Male,1.0,2,1,1.0,5417,4196.0,267.0,360.0,1,Urban,1.0
|
||||
LP001013,Male,1.0,0,0,0.0,2333,1516.0,95.0,360.0,1,Urban,1.0
|
||||
LP001014,Male,1.0,3+,1,0.0,3036,2504.0,158.0,360.0,0,Semiurban,0.0
|
||||
LP001018,Male,1.0,2,1,0.0,4006,1526.0,168.0,360.0,1,Urban,1.0
|
||||
LP001020,Male,1.0,1,1,0.0,12841,10968.0,349.0,360.0,1,Semiurban,0.0
|
||||
LP001024,Male,1.0,2,1,0.0,3200,700.0,70.0,360.0,1,Urban,1.0
|
||||
LP001027,Male,1.0,2,1,0.0,2500,1840.0,109.0,360.0,1,Urban,1.0
|
||||
LP001028,Male,1.0,2,1,0.0,3073,8106.0,200.0,360.0,1,Urban,1.0
|
||||
LP001029,Male,0.0,0,1,0.0,1853,2840.0,114.0,360.0,1,Rural,0.0
|
||||
LP001030,Male,1.0,2,1,0.0,1299,1086.0,17.0,120.0,1,Urban,1.0
|
||||
LP001032,Male,0.0,0,1,0.0,4950,0.0,125.0,360.0,1,Urban,1.0
|
||||
LP001034,Male,0.0,1,0,0.0,3596,0.0,100.0,240.0,0,Urban,1.0
|
||||
LP001036,Female,0.0,0,1,0.0,3510,0.0,76.0,360.0,0,Urban,0.0
|
||||
LP001038,Male,1.0,0,0,0.0,4887,0.0,133.0,360.0,1,Rural,0.0
|
||||
LP001041,Male,1.0,0,1,0.0,2600,3500.0,115.0,,1,Urban,1.0
|
||||
LP001043,Male,1.0,0,0,0.0,7660,0.0,104.0,360.0,0,Urban,0.0
|
||||
LP001046,Male,1.0,1,1,0.0,5955,5625.0,315.0,360.0,1,Urban,1.0
|
||||
LP001047,Male,1.0,0,0,0.0,2600,1911.0,116.0,360.0,0,Semiurban,0.0
|
||||
LP001050,,1.0,2,0,0.0,3365,1917.0,112.0,360.0,0,Rural,0.0
|
||||
LP001052,Male,1.0,1,1,0.0,3717,2925.0,151.0,360.0,0,Semiurban,0.0
|
||||
LP001066,Male,1.0,0,1,1.0,9560,0.0,191.0,360.0,1,Semiurban,1.0
|
||||
LP001068,Male,1.0,0,1,0.0,2799,2253.0,122.0,360.0,1,Semiurban,1.0
|
||||
LP001073,Male,1.0,2,0,0.0,4226,1040.0,110.0,360.0,1,Urban,1.0
|
||||
LP001086,Male,0.0,0,0,0.0,1442,0.0,35.0,360.0,1,Urban,0.0
|
||||
LP001087,Female,0.0,2,1,0.0,3750,2083.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP001091,Male,1.0,1,1,0.0,4166,3369.0,201.0,360.0,0,Urban,0.0
|
||||
LP001095,Male,0.0,0,1,0.0,3167,0.0,74.0,360.0,1,Urban,0.0
|
||||
LP001097,Male,0.0,1,1,1.0,4692,0.0,106.0,360.0,1,Rural,0.0
|
||||
LP001098,Male,1.0,0,1,0.0,3500,1667.0,114.0,360.0,1,Semiurban,1.0
|
||||
LP001100,Male,0.0,3+,1,0.0,12500,3000.0,320.0,360.0,1,Rural,0.0
|
||||
LP001106,Male,1.0,0,1,0.0,2275,2067.0,0.0,360.0,1,Urban,1.0
|
||||
LP001109,Male,1.0,0,1,0.0,1828,1330.0,100.0,,0,Urban,0.0
|
||||
LP001112,Female,1.0,0,1,0.0,3667,1459.0,144.0,360.0,1,Semiurban,1.0
|
||||
LP001114,Male,0.0,0,1,0.0,4166,7210.0,184.0,360.0,1,Urban,1.0
|
||||
LP001116,Male,0.0,0,0,0.0,3748,1668.0,110.0,360.0,1,Semiurban,1.0
|
||||
LP001119,Male,0.0,0,1,0.0,3600,0.0,80.0,360.0,1,Urban,0.0
|
||||
LP001120,Male,0.0,0,1,0.0,1800,1213.0,47.0,360.0,1,Urban,1.0
|
||||
LP001123,Male,1.0,0,1,0.0,2400,0.0,75.0,360.0,0,Urban,1.0
|
||||
LP001131,Male,1.0,0,1,0.0,3941,2336.0,134.0,360.0,1,Semiurban,1.0
|
||||
LP001136,Male,1.0,0,0,1.0,4695,0.0,96.0,,1,Urban,1.0
|
||||
LP001137,Female,0.0,0,1,0.0,3410,0.0,88.0,,1,Urban,1.0
|
||||
LP001138,Male,1.0,1,1,0.0,5649,0.0,44.0,360.0,1,Urban,1.0
|
||||
LP001144,Male,1.0,0,1,0.0,5821,0.0,144.0,360.0,1,Urban,1.0
|
||||
LP001146,Female,1.0,0,1,0.0,2645,3440.0,120.0,360.0,0,Urban,0.0
|
||||
LP001151,Female,0.0,0,1,0.0,4000,2275.0,144.0,360.0,1,Semiurban,1.0
|
||||
LP001155,Female,1.0,0,0,0.0,1928,1644.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP001157,Female,0.0,0,1,0.0,3086,0.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP001164,Female,0.0,0,1,0.0,4230,0.0,112.0,360.0,1,Semiurban,0.0
|
||||
LP001179,Male,1.0,2,1,0.0,4616,0.0,134.0,360.0,1,Urban,0.0
|
||||
LP001186,Female,1.0,1,1,1.0,11500,0.0,286.0,360.0,0,Urban,0.0
|
||||
LP001194,Male,1.0,2,1,0.0,2708,1167.0,97.0,360.0,1,Semiurban,1.0
|
||||
LP001195,Male,1.0,0,1,0.0,2132,1591.0,96.0,360.0,1,Semiurban,1.0
|
||||
LP001197,Male,1.0,0,1,0.0,3366,2200.0,135.0,360.0,1,Rural,0.0
|
||||
LP001198,Male,1.0,1,1,0.0,8080,2250.0,180.0,360.0,1,Urban,1.0
|
||||
LP001199,Male,1.0,2,0,0.0,3357,2859.0,144.0,360.0,1,Urban,1.0
|
||||
LP001205,Male,1.0,0,1,0.0,2500,3796.0,120.0,360.0,1,Urban,1.0
|
||||
LP001206,Male,1.0,3+,1,0.0,3029,0.0,99.0,360.0,1,Urban,1.0
|
||||
LP001207,Male,1.0,0,0,1.0,2609,3449.0,165.0,180.0,0,Rural,0.0
|
||||
LP001213,Male,1.0,1,1,0.0,4945,0.0,0.0,360.0,0,Rural,0.0
|
||||
LP001222,Female,0.0,0,1,0.0,4166,0.0,116.0,360.0,0,Semiurban,0.0
|
||||
LP001225,Male,1.0,0,1,0.0,5726,4595.0,258.0,360.0,1,Semiurban,0.0
|
||||
LP001228,Male,0.0,0,0,0.0,3200,2254.0,126.0,180.0,0,Urban,0.0
|
||||
LP001233,Male,1.0,1,1,0.0,10750,0.0,312.0,360.0,1,Urban,1.0
|
||||
LP001238,Male,1.0,3+,0,1.0,7100,0.0,125.0,60.0,1,Urban,1.0
|
||||
LP001241,Female,0.0,0,1,0.0,4300,0.0,136.0,360.0,0,Semiurban,0.0
|
||||
LP001243,Male,1.0,0,1,0.0,3208,3066.0,172.0,360.0,1,Urban,1.0
|
||||
LP001245,Male,1.0,2,0,1.0,1875,1875.0,97.0,360.0,1,Semiurban,1.0
|
||||
LP001248,Male,0.0,0,1,0.0,3500,0.0,81.0,300.0,1,Semiurban,1.0
|
||||
LP001250,Male,1.0,3+,0,0.0,4755,0.0,95.0,,0,Semiurban,0.0
|
||||
LP001253,Male,1.0,3+,1,1.0,5266,1774.0,187.0,360.0,1,Semiurban,1.0
|
||||
LP001255,Male,0.0,0,1,0.0,3750,0.0,113.0,480.0,1,Urban,0.0
|
||||
LP001256,Male,0.0,0,1,0.0,3750,4750.0,176.0,360.0,1,Urban,0.0
|
||||
LP001259,Male,1.0,1,1,1.0,1000,3022.0,110.0,360.0,1,Urban,0.0
|
||||
LP001263,Male,1.0,3+,1,0.0,3167,4000.0,180.0,300.0,0,Semiurban,0.0
|
||||
LP001264,Male,1.0,3+,0,1.0,3333,2166.0,130.0,360.0,0,Semiurban,1.0
|
||||
LP001265,Female,0.0,0,1,0.0,3846,0.0,111.0,360.0,1,Semiurban,1.0
|
||||
LP001266,Male,1.0,1,1,1.0,2395,0.0,0.0,360.0,1,Semiurban,1.0
|
||||
LP001267,Female,1.0,2,1,0.0,1378,1881.0,167.0,360.0,1,Urban,0.0
|
||||
LP001273,Male,1.0,0,1,0.0,6000,2250.0,265.0,360.0,0,Semiurban,0.0
|
||||
LP001275,Male,1.0,1,1,0.0,3988,0.0,50.0,240.0,1,Urban,1.0
|
||||
LP001279,Male,0.0,0,1,0.0,2366,2531.0,136.0,360.0,1,Semiurban,1.0
|
||||
LP001280,Male,1.0,2,0,0.0,3333,2000.0,99.0,360.0,0,Semiurban,1.0
|
||||
LP001282,Male,1.0,0,1,0.0,2500,2118.0,104.0,360.0,1,Semiurban,1.0
|
||||
LP001289,Male,0.0,0,1,0.0,8566,0.0,210.0,360.0,1,Urban,1.0
|
||||
LP001310,Male,1.0,0,1,0.0,5695,4167.0,175.0,360.0,1,Semiurban,1.0
|
||||
LP001316,Male,1.0,0,1,0.0,2958,2900.0,131.0,360.0,1,Semiurban,1.0
|
||||
LP001318,Male,1.0,2,1,0.0,6250,5654.0,188.0,180.0,1,Semiurban,1.0
|
||||
LP001319,Male,1.0,2,0,0.0,3273,1820.0,81.0,360.0,1,Urban,1.0
|
||||
LP001322,Male,0.0,0,1,0.0,4133,0.0,122.0,360.0,1,Semiurban,1.0
|
||||
LP001325,Male,0.0,0,0,0.0,3620,0.0,25.0,120.0,1,Semiurban,1.0
|
||||
LP001326,Male,0.0,0,1,0.0,6782,0.0,0.0,360.0,0,Urban,0.0
|
||||
LP001327,Female,1.0,0,1,0.0,2484,2302.0,137.0,360.0,1,Semiurban,1.0
|
||||
LP001333,Male,1.0,0,1,0.0,1977,997.0,50.0,360.0,1,Semiurban,1.0
|
||||
LP001334,Male,1.0,0,0,0.0,4188,0.0,115.0,180.0,1,Semiurban,1.0
|
||||
LP001343,Male,1.0,0,1,0.0,1759,3541.0,131.0,360.0,1,Semiurban,1.0
|
||||
LP001345,Male,1.0,2,0,0.0,4288,3263.0,133.0,180.0,1,Urban,1.0
|
||||
LP001349,Male,0.0,0,1,0.0,4843,3806.0,151.0,360.0,1,Semiurban,1.0
|
||||
LP001350,Male,1.0,,1,0.0,13650,0.0,0.0,360.0,1,Urban,1.0
|
||||
LP001356,Male,1.0,0,1,0.0,4652,3583.0,0.0,360.0,1,Semiurban,1.0
|
||||
LP001357,Male,0.0,,1,0.0,3816,754.0,160.0,360.0,1,Urban,1.0
|
||||
LP001367,Male,1.0,1,1,0.0,3052,1030.0,100.0,360.0,1,Urban,1.0
|
||||
LP001369,Male,1.0,2,1,0.0,11417,1126.0,225.0,360.0,1,Urban,1.0
|
||||
LP001370,Male,0.0,0,0,0.0,7333,0.0,120.0,360.0,1,Rural,0.0
|
||||
LP001379,Male,1.0,2,1,0.0,3800,3600.0,216.0,360.0,0,Urban,0.0
|
||||
LP001384,Male,1.0,3+,0,0.0,2071,754.0,94.0,480.0,1,Semiurban,1.0
|
||||
LP001385,Male,0.0,0,1,0.0,5316,0.0,136.0,360.0,1,Urban,1.0
|
||||
LP001387,Female,1.0,0,1,0.0,2929,2333.0,139.0,360.0,1,Semiurban,1.0
|
||||
LP001391,Male,1.0,0,0,0.0,3572,4114.0,152.0,,0,Rural,0.0
|
||||
LP001392,Female,0.0,1,1,1.0,7451,0.0,0.0,360.0,1,Semiurban,1.0
|
||||
LP001398,Male,0.0,0,1,0.0,5050,0.0,118.0,360.0,1,Semiurban,1.0
|
||||
LP001401,Male,1.0,1,1,0.0,14583,0.0,185.0,180.0,1,Rural,1.0
|
||||
LP001404,Female,1.0,0,1,0.0,3167,2283.0,154.0,360.0,1,Semiurban,1.0
|
||||
LP001405,Male,1.0,1,1,0.0,2214,1398.0,85.0,360.0,0,Urban,1.0
|
||||
LP001421,Male,1.0,0,1,0.0,5568,2142.0,175.0,360.0,1,Rural,0.0
|
||||
LP001422,Female,0.0,0,1,0.0,10408,0.0,259.0,360.0,1,Urban,1.0
|
||||
LP001426,Male,1.0,,1,0.0,5667,2667.0,180.0,360.0,1,Rural,1.0
|
||||
LP001430,Female,0.0,0,1,0.0,4166,0.0,44.0,360.0,1,Semiurban,1.0
|
||||
LP001431,Female,0.0,0,1,0.0,2137,8980.0,137.0,360.0,0,Semiurban,1.0
|
||||
LP001432,Male,1.0,2,1,0.0,2957,0.0,81.0,360.0,1,Semiurban,1.0
|
||||
LP001439,Male,1.0,0,0,0.0,4300,2014.0,194.0,360.0,1,Rural,1.0
|
||||
LP001443,Female,0.0,0,1,0.0,3692,0.0,93.0,360.0,0,Rural,1.0
|
||||
LP001448,,1.0,3+,1,0.0,23803,0.0,370.0,360.0,1,Rural,1.0
|
||||
LP001449,Male,0.0,0,1,0.0,3865,1640.0,0.0,360.0,1,Rural,1.0
|
||||
LP001451,Male,1.0,1,1,1.0,10513,3850.0,160.0,180.0,0,Urban,0.0
|
||||
LP001465,Male,1.0,0,1,0.0,6080,2569.0,182.0,360.0,0,Rural,0.0
|
||||
LP001469,Male,0.0,0,1,1.0,20166,0.0,650.0,480.0,0,Urban,1.0
|
||||
LP001473,Male,0.0,0,1,0.0,2014,1929.0,74.0,360.0,1,Urban,1.0
|
||||
LP001478,Male,0.0,0,1,0.0,2718,0.0,70.0,360.0,1,Semiurban,1.0
|
||||
LP001482,Male,1.0,0,1,1.0,3459,0.0,25.0,120.0,1,Semiurban,1.0
|
||||
LP001487,Male,0.0,0,1,0.0,4895,0.0,102.0,360.0,1,Semiurban,1.0
|
||||
LP001488,Male,1.0,3+,1,0.0,4000,7750.0,290.0,360.0,1,Semiurban,0.0
|
||||
LP001489,Female,1.0,0,1,0.0,4583,0.0,84.0,360.0,1,Rural,0.0
|
||||
LP001491,Male,1.0,2,1,1.0,3316,3500.0,88.0,360.0,1,Urban,1.0
|
||||
LP001492,Male,0.0,0,1,0.0,14999,0.0,242.0,360.0,0,Semiurban,0.0
|
||||
LP001493,Male,1.0,2,0,0.0,4200,1430.0,129.0,360.0,1,Rural,0.0
|
||||
LP001497,Male,1.0,2,1,0.0,5042,2083.0,185.0,360.0,1,Rural,0.0
|
||||
LP001498,Male,0.0,0,1,0.0,5417,0.0,168.0,360.0,1,Urban,1.0
|
||||
LP001504,Male,0.0,0,1,1.0,6950,0.0,175.0,180.0,1,Semiurban,1.0
|
||||
LP001507,Male,1.0,0,1,0.0,2698,2034.0,122.0,360.0,1,Semiurban,1.0
|
||||
LP001508,Male,1.0,2,1,0.0,11757,0.0,187.0,180.0,1,Urban,1.0
|
||||
LP001514,Female,1.0,0,1,0.0,2330,4486.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP001516,Female,1.0,2,1,0.0,14866,0.0,70.0,360.0,1,Urban,1.0
|
||||
LP001518,Male,1.0,1,1,0.0,1538,1425.0,30.0,360.0,1,Urban,1.0
|
||||
LP001519,Female,0.0,0,1,0.0,10000,1666.0,225.0,360.0,1,Rural,0.0
|
||||
LP001520,Male,1.0,0,1,0.0,4860,830.0,125.0,360.0,1,Semiurban,1.0
|
||||
LP001528,Male,0.0,0,1,0.0,6277,0.0,118.0,360.0,0,Rural,0.0
|
||||
LP001529,Male,1.0,0,1,1.0,2577,3750.0,152.0,360.0,1,Rural,1.0
|
||||
LP001531,Male,0.0,0,1,0.0,9166,0.0,244.0,360.0,1,Urban,0.0
|
||||
LP001532,Male,1.0,2,0,0.0,2281,0.0,113.0,360.0,1,Rural,0.0
|
||||
LP001535,Male,0.0,0,1,0.0,3254,0.0,50.0,360.0,1,Urban,1.0
|
||||
LP001536,Male,1.0,3+,1,0.0,39999,0.0,600.0,180.0,0,Semiurban,1.0
|
||||
LP001541,Male,1.0,1,1,0.0,6000,0.0,160.0,360.0,0,Rural,1.0
|
||||
LP001543,Male,1.0,1,1,0.0,9538,0.0,187.0,360.0,1,Urban,1.0
|
||||
LP001546,Male,0.0,0,1,0.0,2980,2083.0,120.0,360.0,1,Rural,1.0
|
||||
LP001552,Male,1.0,0,1,0.0,4583,5625.0,255.0,360.0,1,Semiurban,1.0
|
||||
LP001560,Male,1.0,0,0,0.0,1863,1041.0,98.0,360.0,1,Semiurban,1.0
|
||||
LP001562,Male,1.0,0,1,0.0,7933,0.0,275.0,360.0,1,Urban,0.0
|
||||
LP001565,Male,1.0,1,1,0.0,3089,1280.0,121.0,360.0,0,Semiurban,0.0
|
||||
LP001570,Male,1.0,2,1,0.0,4167,1447.0,158.0,360.0,1,Rural,1.0
|
||||
LP001572,Male,1.0,0,1,0.0,9323,0.0,75.0,180.0,1,Urban,1.0
|
||||
LP001574,Male,1.0,0,1,0.0,3707,3166.0,182.0,,1,Rural,1.0
|
||||
LP001577,Female,1.0,0,1,0.0,4583,0.0,112.0,360.0,1,Rural,0.0
|
||||
LP001578,Male,1.0,0,1,0.0,2439,3333.0,129.0,360.0,1,Rural,1.0
|
||||
LP001579,Male,0.0,0,1,0.0,2237,0.0,63.0,480.0,0,Semiurban,0.0
|
||||
LP001580,Male,1.0,2,1,0.0,8000,0.0,200.0,360.0,1,Semiurban,1.0
|
||||
LP001581,Male,1.0,0,0,0.0,1820,1769.0,95.0,360.0,1,Rural,1.0
|
||||
LP001585,,1.0,3+,1,0.0,51763,0.0,700.0,300.0,1,Urban,1.0
|
||||
LP001586,Male,1.0,3+,0,0.0,3522,0.0,81.0,180.0,1,Rural,0.0
|
||||
LP001594,Male,1.0,0,1,0.0,5708,5625.0,187.0,360.0,1,Semiurban,1.0
|
||||
LP001603,Male,1.0,0,0,1.0,4344,736.0,87.0,360.0,1,Semiurban,0.0
|
||||
LP001606,Male,1.0,0,1,0.0,3497,1964.0,116.0,360.0,1,Rural,1.0
|
||||
LP001608,Male,1.0,2,1,0.0,2045,1619.0,101.0,360.0,1,Rural,1.0
|
||||
LP001610,Male,1.0,3+,1,0.0,5516,11300.0,495.0,360.0,0,Semiurban,0.0
|
||||
LP001616,Male,1.0,1,1,0.0,3750,0.0,116.0,360.0,1,Semiurban,1.0
|
||||
LP001630,Male,0.0,0,0,0.0,2333,1451.0,102.0,480.0,0,Urban,0.0
|
||||
LP001633,Male,1.0,1,1,0.0,6400,7250.0,180.0,360.0,0,Urban,0.0
|
||||
LP001634,Male,0.0,0,1,0.0,1916,5063.0,67.0,360.0,0,Rural,0.0
|
||||
LP001636,Male,1.0,0,1,0.0,4600,0.0,73.0,180.0,1,Semiurban,1.0
|
||||
LP001637,Male,1.0,1,1,0.0,33846,0.0,260.0,360.0,1,Semiurban,0.0
|
||||
LP001639,Female,1.0,0,1,0.0,3625,0.0,108.0,360.0,1,Semiurban,1.0
|
||||
LP001640,Male,1.0,0,1,1.0,39147,4750.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP001641,Male,1.0,1,1,1.0,2178,0.0,66.0,300.0,0,Rural,0.0
|
||||
LP001643,Male,1.0,0,1,0.0,2383,2138.0,58.0,360.0,0,Rural,1.0
|
||||
LP001644,,1.0,0,1,1.0,674,5296.0,168.0,360.0,1,Rural,1.0
|
||||
LP001647,Male,1.0,0,1,0.0,9328,0.0,188.0,180.0,1,Rural,1.0
|
||||
LP001653,Male,0.0,0,0,0.0,4885,0.0,48.0,360.0,1,Rural,1.0
|
||||
LP001656,Male,0.0,0,1,0.0,12000,0.0,164.0,360.0,1,Semiurban,0.0
|
||||
LP001657,Male,1.0,0,0,0.0,6033,0.0,160.0,360.0,1,Urban,0.0
|
||||
LP001658,Male,0.0,0,1,0.0,3858,0.0,76.0,360.0,1,Semiurban,1.0
|
||||
LP001664,Male,0.0,0,1,0.0,4191,0.0,120.0,360.0,1,Rural,1.0
|
||||
LP001665,Male,1.0,1,1,0.0,3125,2583.0,170.0,360.0,1,Semiurban,0.0
|
||||
LP001666,Male,0.0,0,1,0.0,8333,3750.0,187.0,360.0,1,Rural,1.0
|
||||
LP001669,Female,0.0,0,0,0.0,1907,2365.0,120.0,,1,Urban,1.0
|
||||
LP001671,Female,1.0,0,1,0.0,3416,2816.0,113.0,360.0,0,Semiurban,1.0
|
||||
LP001673,Male,0.0,0,1,1.0,11000,0.0,83.0,360.0,1,Urban,0.0
|
||||
LP001674,Male,1.0,1,0,0.0,2600,2500.0,90.0,360.0,1,Semiurban,1.0
|
||||
LP001677,Male,0.0,2,1,0.0,4923,0.0,166.0,360.0,0,Semiurban,1.0
|
||||
LP001682,Male,1.0,3+,0,0.0,3992,0.0,0.0,180.0,1,Urban,0.0
|
||||
LP001688,Male,1.0,1,0,0.0,3500,1083.0,135.0,360.0,1,Urban,1.0
|
||||
LP001691,Male,1.0,2,0,0.0,3917,0.0,124.0,360.0,1,Semiurban,1.0
|
||||
LP001692,Female,0.0,0,0,0.0,4408,0.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP001693,Female,0.0,0,1,0.0,3244,0.0,80.0,360.0,1,Urban,1.0
|
||||
LP001698,Male,0.0,0,0,0.0,3975,2531.0,55.0,360.0,1,Rural,1.0
|
||||
LP001699,Male,0.0,0,1,0.0,2479,0.0,59.0,360.0,1,Urban,1.0
|
||||
LP001702,Male,0.0,0,1,0.0,3418,0.0,127.0,360.0,1,Semiurban,0.0
|
||||
LP001708,Female,0.0,0,1,0.0,10000,0.0,214.0,360.0,1,Semiurban,0.0
|
||||
LP001711,Male,1.0,3+,1,0.0,3430,1250.0,128.0,360.0,0,Semiurban,0.0
|
||||
LP001713,Male,1.0,1,1,1.0,7787,0.0,240.0,360.0,1,Urban,1.0
|
||||
LP001715,Male,1.0,3+,0,1.0,5703,0.0,130.0,360.0,1,Rural,1.0
|
||||
LP001716,Male,1.0,0,1,0.0,3173,3021.0,137.0,360.0,1,Urban,1.0
|
||||
LP001720,Male,1.0,3+,0,0.0,3850,983.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP001722,Male,1.0,0,1,0.0,150,1800.0,135.0,360.0,1,Rural,0.0
|
||||
LP001726,Male,1.0,0,1,0.0,3727,1775.0,131.0,360.0,1,Semiurban,1.0
|
||||
LP001732,Male,1.0,2,1,0.0,5000,0.0,72.0,360.0,0,Semiurban,0.0
|
||||
LP001734,Female,1.0,2,1,0.0,4283,2383.0,127.0,360.0,0,Semiurban,1.0
|
||||
LP001736,Male,1.0,0,1,0.0,2221,0.0,60.0,360.0,0,Urban,0.0
|
||||
LP001743,Male,1.0,2,1,0.0,4009,1717.0,116.0,360.0,1,Semiurban,1.0
|
||||
LP001744,Male,0.0,0,1,0.0,2971,2791.0,144.0,360.0,1,Semiurban,1.0
|
||||
LP001749,Male,1.0,0,1,0.0,7578,1010.0,175.0,,1,Semiurban,1.0
|
||||
LP001750,Male,1.0,0,1,0.0,6250,0.0,128.0,360.0,1,Semiurban,1.0
|
||||
LP001751,Male,1.0,0,1,0.0,3250,0.0,170.0,360.0,1,Rural,0.0
|
||||
LP001754,Male,1.0,,0,1.0,4735,0.0,138.0,360.0,1,Urban,0.0
|
||||
LP001758,Male,1.0,2,1,0.0,6250,1695.0,210.0,360.0,1,Semiurban,1.0
|
||||
LP001760,Male,0.0,,1,0.0,4758,0.0,158.0,480.0,1,Semiurban,1.0
|
||||
LP001761,Male,0.0,0,1,1.0,6400,0.0,200.0,360.0,1,Rural,1.0
|
||||
LP001765,Male,1.0,1,1,0.0,2491,2054.0,104.0,360.0,1,Semiurban,1.0
|
||||
LP001768,Male,1.0,0,1,0.0,3716,0.0,42.0,180.0,1,Rural,1.0
|
||||
LP001770,Male,0.0,0,0,0.0,3189,2598.0,120.0,,1,Rural,1.0
|
||||
LP001776,Female,0.0,0,1,0.0,8333,0.0,280.0,360.0,1,Semiurban,1.0
|
||||
LP001778,Male,1.0,1,1,0.0,3155,1779.0,140.0,360.0,1,Semiurban,1.0
|
||||
LP001784,Male,1.0,1,1,0.0,5500,1260.0,170.0,360.0,1,Rural,1.0
|
||||
LP001786,Male,1.0,0,1,0.0,5746,0.0,255.0,360.0,0,Urban,0.0
|
||||
LP001788,Female,0.0,0,1,1.0,3463,0.0,122.0,360.0,0,Urban,1.0
|
||||
LP001790,Female,0.0,1,1,0.0,3812,0.0,112.0,360.0,1,Rural,1.0
|
||||
LP001792,Male,1.0,1,1,0.0,3315,0.0,96.0,360.0,1,Semiurban,1.0
|
||||
LP001798,Male,1.0,2,1,0.0,5819,5000.0,120.0,360.0,1,Rural,1.0
|
||||
LP001800,Male,1.0,1,0,0.0,2510,1983.0,140.0,180.0,1,Urban,0.0
|
||||
LP001806,Male,0.0,0,1,0.0,2965,5701.0,155.0,60.0,1,Urban,1.0
|
||||
LP001807,Male,1.0,2,1,1.0,6250,1300.0,108.0,360.0,1,Rural,1.0
|
||||
LP001811,Male,1.0,0,0,0.0,3406,4417.0,123.0,360.0,1,Semiurban,1.0
|
||||
LP001813,Male,0.0,0,1,1.0,6050,4333.0,120.0,180.0,1,Urban,0.0
|
||||
LP001814,Male,1.0,2,1,0.0,9703,0.0,112.0,360.0,1,Urban,1.0
|
||||
LP001819,Male,1.0,1,0,0.0,6608,0.0,137.0,180.0,1,Urban,1.0
|
||||
LP001824,Male,1.0,1,1,0.0,2882,1843.0,123.0,480.0,1,Semiurban,1.0
|
||||
LP001825,Male,1.0,0,1,0.0,1809,1868.0,90.0,360.0,1,Urban,1.0
|
||||
LP001835,Male,1.0,0,0,0.0,1668,3890.0,201.0,360.0,0,Semiurban,0.0
|
||||
LP001836,Female,0.0,2,1,0.0,3427,0.0,138.0,360.0,1,Urban,0.0
|
||||
LP001841,Male,0.0,0,0,1.0,2583,2167.0,104.0,360.0,1,Rural,1.0
|
||||
LP001843,Male,1.0,1,0,0.0,2661,7101.0,279.0,180.0,1,Semiurban,1.0
|
||||
LP001844,Male,0.0,0,1,1.0,16250,0.0,192.0,360.0,0,Urban,0.0
|
||||
LP001846,Female,0.0,3+,1,0.0,3083,0.0,255.0,360.0,1,Rural,1.0
|
||||
LP001849,Male,0.0,0,0,0.0,6045,0.0,115.0,360.0,0,Rural,0.0
|
||||
LP001854,Male,1.0,3+,1,0.0,5250,0.0,94.0,360.0,1,Urban,0.0
|
||||
LP001859,Male,1.0,0,1,0.0,14683,2100.0,304.0,360.0,1,Rural,0.0
|
||||
LP001864,Male,1.0,3+,0,0.0,4931,0.0,128.0,360.0,0,Semiurban,0.0
|
||||
LP001865,Male,1.0,1,1,0.0,6083,4250.0,330.0,360.0,0,Urban,1.0
|
||||
LP001868,Male,0.0,0,1,0.0,2060,2209.0,134.0,360.0,1,Semiurban,1.0
|
||||
LP001870,Female,0.0,1,1,0.0,3481,0.0,155.0,36.0,1,Semiurban,0.0
|
||||
LP001871,Female,0.0,0,1,0.0,7200,0.0,120.0,360.0,1,Rural,1.0
|
||||
LP001872,Male,0.0,0,1,1.0,5166,0.0,128.0,360.0,1,Semiurban,1.0
|
||||
LP001875,Male,0.0,0,1,0.0,4095,3447.0,151.0,360.0,1,Rural,1.0
|
||||
LP001877,Male,1.0,2,1,0.0,4708,1387.0,150.0,360.0,1,Semiurban,1.0
|
||||
LP001882,Male,1.0,3+,1,0.0,4333,1811.0,160.0,360.0,0,Urban,1.0
|
||||
LP001883,Female,0.0,0,1,0.0,3418,0.0,135.0,360.0,1,Rural,0.0
|
||||
LP001884,Female,0.0,1,1,0.0,2876,1560.0,90.0,360.0,1,Urban,1.0
|
||||
LP001888,Female,0.0,0,1,0.0,3237,0.0,30.0,360.0,1,Urban,1.0
|
||||
LP001891,Male,1.0,0,1,0.0,11146,0.0,136.0,360.0,1,Urban,1.0
|
||||
LP001892,Male,0.0,0,1,0.0,2833,1857.0,126.0,360.0,1,Rural,1.0
|
||||
LP001894,Male,1.0,0,1,0.0,2620,2223.0,150.0,360.0,1,Semiurban,1.0
|
||||
LP001896,Male,1.0,2,1,0.0,3900,0.0,90.0,360.0,1,Semiurban,1.0
|
||||
LP001900,Male,1.0,1,1,0.0,2750,1842.0,115.0,360.0,1,Semiurban,1.0
|
||||
LP001903,Male,1.0,0,1,0.0,3993,3274.0,207.0,360.0,1,Semiurban,1.0
|
||||
LP001904,Male,1.0,0,1,0.0,3103,1300.0,80.0,360.0,1,Urban,1.0
|
||||
LP001907,Male,1.0,0,1,0.0,14583,0.0,436.0,360.0,1,Semiurban,1.0
|
||||
LP001908,Female,1.0,0,0,0.0,4100,0.0,124.0,360.0,0,Rural,1.0
|
||||
LP001910,Male,0.0,1,0,1.0,4053,2426.0,158.0,360.0,0,Urban,0.0
|
||||
LP001914,Male,1.0,0,1,0.0,3927,800.0,112.0,360.0,1,Semiurban,1.0
|
||||
LP001915,Male,1.0,2,1,0.0,2301,985.7999878,78.0,180.0,1,Urban,1.0
|
||||
LP001917,Female,0.0,0,1,0.0,1811,1666.0,54.0,360.0,1,Urban,1.0
|
||||
LP001922,Male,1.0,0,1,0.0,20667,0.0,0.0,360.0,1,Rural,0.0
|
||||
LP001924,Male,0.0,0,1,0.0,3158,3053.0,89.0,360.0,1,Rural,1.0
|
||||
LP001925,Female,0.0,0,1,1.0,2600,1717.0,99.0,300.0,1,Semiurban,0.0
|
||||
LP001926,Male,1.0,0,1,0.0,3704,2000.0,120.0,360.0,1,Rural,1.0
|
||||
LP001931,Female,0.0,0,1,0.0,4124,0.0,115.0,360.0,1,Semiurban,1.0
|
||||
LP001935,Male,0.0,0,1,0.0,9508,0.0,187.0,360.0,1,Rural,1.0
|
||||
LP001936,Male,1.0,0,1,0.0,3075,2416.0,139.0,360.0,1,Rural,1.0
|
||||
LP001938,Male,1.0,2,1,0.0,4400,0.0,127.0,360.0,0,Semiurban,0.0
|
||||
LP001940,Male,1.0,2,1,0.0,3153,1560.0,134.0,360.0,1,Urban,1.0
|
||||
LP001945,Female,0.0,,1,0.0,5417,0.0,143.0,480.0,0,Urban,0.0
|
||||
LP001947,Male,1.0,0,1,0.0,2383,3334.0,172.0,360.0,1,Semiurban,1.0
|
||||
LP001949,Male,1.0,3+,1,0.0,4416,1250.0,110.0,360.0,1,Urban,1.0
|
||||
LP001953,Male,1.0,1,1,0.0,6875,0.0,200.0,360.0,1,Semiurban,1.0
|
||||
LP001954,Female,1.0,1,1,0.0,4666,0.0,135.0,360.0,1,Urban,1.0
|
||||
LP001955,Female,0.0,0,1,0.0,5000,2541.0,151.0,480.0,1,Rural,0.0
|
||||
LP001963,Male,1.0,1,1,0.0,2014,2925.0,113.0,360.0,1,Urban,0.0
|
||||
LP001964,Male,1.0,0,0,0.0,1800,2934.0,93.0,360.0,0,Urban,0.0
|
||||
LP001972,Male,1.0,,0,0.0,2875,1750.0,105.0,360.0,1,Semiurban,1.0
|
||||
LP001974,Female,0.0,0,1,0.0,5000,0.0,132.0,360.0,1,Rural,1.0
|
||||
LP001977,Male,1.0,1,1,0.0,1625,1803.0,96.0,360.0,1,Urban,1.0
|
||||
LP001978,Male,0.0,0,1,0.0,4000,2500.0,140.0,360.0,1,Rural,1.0
|
||||
LP001990,Male,0.0,0,0,0.0,2000,0.0,0.0,360.0,1,Urban,0.0
|
||||
LP001993,Female,0.0,0,1,0.0,3762,1666.0,135.0,360.0,1,Rural,1.0
|
||||
LP001994,Female,0.0,0,1,0.0,2400,1863.0,104.0,360.0,0,Urban,0.0
|
||||
LP001996,Male,0.0,0,1,0.0,20233,0.0,480.0,360.0,1,Rural,0.0
|
||||
LP001998,Male,1.0,2,0,0.0,7667,0.0,185.0,360.0,0,Rural,1.0
|
||||
LP002002,Female,0.0,0,1,0.0,2917,0.0,84.0,360.0,1,Semiurban,1.0
|
||||
LP002004,Male,0.0,0,0,0.0,2927,2405.0,111.0,360.0,1,Semiurban,1.0
|
||||
LP002006,Female,0.0,0,1,0.0,2507,0.0,56.0,360.0,1,Rural,1.0
|
||||
LP002008,Male,1.0,2,1,1.0,5746,0.0,144.0,84.0,0,Rural,1.0
|
||||
LP002024,,1.0,0,1,0.0,2473,1843.0,159.0,360.0,1,Rural,0.0
|
||||
LP002031,Male,1.0,1,0,0.0,3399,1640.0,111.0,180.0,1,Urban,1.0
|
||||
LP002035,Male,1.0,2,1,0.0,3717,0.0,120.0,360.0,1,Semiurban,1.0
|
||||
LP002036,Male,1.0,0,1,0.0,2058,2134.0,88.0,360.0,0,Urban,1.0
|
||||
LP002043,Female,0.0,1,1,0.0,3541,0.0,112.0,360.0,0,Semiurban,1.0
|
||||
LP002050,Male,1.0,1,1,1.0,10000,0.0,155.0,360.0,1,Rural,0.0
|
||||
LP002051,Male,1.0,0,1,0.0,2400,2167.0,115.0,360.0,1,Semiurban,1.0
|
||||
LP002053,Male,1.0,3+,1,0.0,4342,189.0,124.0,360.0,1,Semiurban,1.0
|
||||
LP002054,Male,1.0,2,0,0.0,3601,1590.0,0.0,360.0,1,Rural,1.0
|
||||
LP002055,Female,0.0,0,1,0.0,3166,2985.0,132.0,360.0,0,Rural,1.0
|
||||
LP002065,Male,1.0,3+,1,0.0,15000,0.0,300.0,360.0,1,Rural,1.0
|
||||
LP002067,Male,1.0,1,1,1.0,8666,4983.0,376.0,360.0,0,Rural,0.0
|
||||
LP002068,Male,0.0,0,1,0.0,4917,0.0,130.0,360.0,0,Rural,1.0
|
||||
LP002082,Male,1.0,0,1,1.0,5818,2160.0,184.0,360.0,1,Semiurban,1.0
|
||||
LP002086,Female,1.0,0,1,0.0,4333,2451.0,110.0,360.0,1,Urban,0.0
|
||||
LP002087,Female,0.0,0,1,0.0,2500,0.0,67.0,360.0,1,Urban,1.0
|
||||
LP002097,Male,0.0,1,1,0.0,4384,1793.0,117.0,360.0,1,Urban,1.0
|
||||
LP002098,Male,0.0,0,1,0.0,2935,0.0,98.0,360.0,1,Semiurban,1.0
|
||||
LP002100,Male,0.0,,1,0.0,2833,0.0,71.0,360.0,1,Urban,1.0
|
||||
LP002101,Male,1.0,0,1,0.0,63337,0.0,490.0,180.0,1,Urban,1.0
|
||||
LP002103,,1.0,1,1,1.0,9833,1833.0,182.0,180.0,1,Urban,1.0
|
||||
LP002106,Male,1.0,,1,1.0,5503,4490.0,70.0,,1,Semiurban,1.0
|
||||
LP002110,Male,1.0,1,1,0.0,5250,688.0,160.0,360.0,1,Rural,1.0
|
||||
LP002112,Male,1.0,2,1,1.0,2500,4600.0,176.0,360.0,1,Rural,1.0
|
||||
LP002113,Female,0.0,3+,0,0.0,1830,0.0,0.0,360.0,0,Urban,0.0
|
||||
LP002114,Female,0.0,0,1,0.0,4160,0.0,71.0,360.0,1,Semiurban,1.0
|
||||
LP002115,Male,1.0,3+,0,0.0,2647,1587.0,173.0,360.0,1,Rural,0.0
|
||||
LP002116,Female,0.0,0,1,0.0,2378,0.0,46.0,360.0,1,Rural,0.0
|
||||
LP002119,Male,1.0,1,0,0.0,4554,1229.0,158.0,360.0,1,Urban,1.0
|
||||
LP002126,Male,1.0,3+,0,0.0,3173,0.0,74.0,360.0,1,Semiurban,1.0
|
||||
LP002128,Male,1.0,2,1,0.0,2583,2330.0,125.0,360.0,1,Rural,1.0
|
||||
LP002129,Male,1.0,0,1,0.0,2499,2458.0,160.0,360.0,1,Semiurban,1.0
|
||||
LP002130,Male,1.0,,0,0.0,3523,3230.0,152.0,360.0,0,Rural,0.0
|
||||
LP002131,Male,1.0,2,0,0.0,3083,2168.0,126.0,360.0,1,Urban,1.0
|
||||
LP002137,Male,1.0,0,1,0.0,6333,4583.0,259.0,360.0,0,Semiurban,1.0
|
||||
LP002138,Male,1.0,0,1,0.0,2625,6250.0,187.0,360.0,1,Rural,1.0
|
||||
LP002139,Male,1.0,0,1,0.0,9083,0.0,228.0,360.0,1,Semiurban,1.0
|
||||
LP002140,Male,0.0,0,1,0.0,8750,4167.0,308.0,360.0,1,Rural,0.0
|
||||
LP002141,Male,1.0,3+,1,0.0,2666,2083.0,95.0,360.0,1,Rural,1.0
|
||||
LP002142,Female,1.0,0,1,1.0,5500,0.0,105.0,360.0,0,Rural,0.0
|
||||
LP002143,Female,1.0,0,1,0.0,2423,505.0,130.0,360.0,1,Semiurban,1.0
|
||||
LP002144,Female,0.0,,1,0.0,3813,0.0,116.0,180.0,1,Urban,1.0
|
||||
LP002149,Male,1.0,2,1,0.0,8333,3167.0,165.0,360.0,1,Rural,1.0
|
||||
LP002151,Male,1.0,1,1,0.0,3875,0.0,67.0,360.0,1,Urban,0.0
|
||||
LP002158,Male,1.0,0,0,0.0,3000,1666.0,100.0,480.0,0,Urban,0.0
|
||||
LP002160,Male,1.0,3+,1,0.0,5167,3167.0,200.0,360.0,1,Semiurban,1.0
|
||||
LP002161,Female,0.0,1,1,0.0,4723,0.0,81.0,360.0,1,Semiurban,0.0
|
||||
LP002170,Male,1.0,2,1,0.0,5000,3667.0,236.0,360.0,1,Semiurban,1.0
|
||||
LP002175,Male,1.0,0,1,0.0,4750,2333.0,130.0,360.0,1,Urban,1.0
|
||||
LP002178,Male,1.0,0,1,0.0,3013,3033.0,95.0,300.0,0,Urban,1.0
|
||||
LP002180,Male,0.0,0,1,1.0,6822,0.0,141.0,360.0,1,Rural,1.0
|
||||
LP002181,Male,0.0,0,0,0.0,6216,0.0,133.0,360.0,1,Rural,0.0
|
||||
LP002187,Male,0.0,0,1,0.0,2500,0.0,96.0,480.0,1,Semiurban,0.0
|
||||
LP002188,Male,0.0,0,1,0.0,5124,0.0,124.0,,0,Rural,0.0
|
||||
LP002190,Male,1.0,1,1,0.0,6325,0.0,175.0,360.0,1,Semiurban,1.0
|
||||
LP002191,Male,1.0,0,1,0.0,19730,5266.0,570.0,360.0,1,Rural,0.0
|
||||
LP002194,Female,0.0,0,1,1.0,15759,0.0,55.0,360.0,1,Semiurban,1.0
|
||||
LP002197,Male,1.0,2,1,0.0,5185,0.0,155.0,360.0,1,Semiurban,1.0
|
||||
LP002201,Male,1.0,2,1,1.0,9323,7873.0,380.0,300.0,1,Rural,1.0
|
||||
LP002205,Male,0.0,1,1,0.0,3062,1987.0,111.0,180.0,0,Urban,0.0
|
||||
LP002209,Female,0.0,0,1,0.0,2764,1459.0,110.0,360.0,1,Urban,1.0
|
||||
LP002211,Male,1.0,0,1,0.0,4817,923.0,120.0,180.0,1,Urban,1.0
|
||||
LP002219,Male,1.0,3+,1,0.0,8750,4996.0,130.0,360.0,1,Rural,1.0
|
||||
LP002223,Male,1.0,0,1,0.0,4310,0.0,130.0,360.0,0,Semiurban,1.0
|
||||
LP002224,Male,0.0,0,1,0.0,3069,0.0,71.0,480.0,1,Urban,0.0
|
||||
LP002225,Male,1.0,2,1,0.0,5391,0.0,130.0,360.0,1,Urban,1.0
|
||||
LP002226,Male,1.0,0,1,0.0,3333,2500.0,128.0,360.0,1,Semiurban,1.0
|
||||
LP002229,Male,0.0,0,1,0.0,5941,4232.0,296.0,360.0,1,Semiurban,1.0
|
||||
LP002231,Female,0.0,0,1,0.0,6000,0.0,156.0,360.0,1,Urban,1.0
|
||||
LP002234,Male,0.0,0,1,1.0,7167,0.0,128.0,360.0,1,Urban,1.0
|
||||
LP002236,Male,1.0,2,1,0.0,4566,0.0,100.0,360.0,1,Urban,0.0
|
||||
LP002237,Male,0.0,1,1,0.0,3667,0.0,113.0,180.0,1,Urban,1.0
|
||||
LP002239,Male,0.0,0,0,0.0,2346,1600.0,132.0,360.0,1,Semiurban,1.0
|
||||
LP002243,Male,1.0,0,0,0.0,3010,3136.0,0.0,360.0,0,Urban,0.0
|
||||
LP002244,Male,1.0,0,1,0.0,2333,2417.0,136.0,360.0,1,Urban,1.0
|
||||
LP002250,Male,1.0,0,1,0.0,5488,0.0,125.0,360.0,1,Rural,1.0
|
||||
LP002255,Male,0.0,3+,1,0.0,9167,0.0,185.0,360.0,1,Rural,1.0
|
||||
LP002262,Male,1.0,3+,1,0.0,9504,0.0,275.0,360.0,1,Rural,1.0
|
||||
LP002263,Male,1.0,0,1,0.0,2583,2115.0,120.0,360.0,0,Urban,1.0
|
||||
LP002265,Male,1.0,2,0,0.0,1993,1625.0,113.0,180.0,1,Semiurban,1.0
|
||||
LP002266,Male,1.0,2,1,0.0,3100,1400.0,113.0,360.0,1,Urban,1.0
|
||||
LP002272,Male,1.0,2,1,0.0,3276,484.0,135.0,360.0,0,Semiurban,1.0
|
||||
LP002277,Female,0.0,0,1,0.0,3180,0.0,71.0,360.0,0,Urban,0.0
|
||||
LP002281,Male,1.0,0,1,0.0,3033,1459.0,95.0,360.0,1,Urban,1.0
|
||||
LP002284,Male,0.0,0,0,0.0,3902,1666.0,109.0,360.0,1,Rural,1.0
|
||||
LP002287,Female,0.0,0,1,0.0,1500,1800.0,103.0,360.0,0,Semiurban,0.0
|
||||
LP002288,Male,1.0,2,0,0.0,2889,0.0,45.0,180.0,0,Urban,0.0
|
||||
LP002296,Male,0.0,0,0,0.0,2755,0.0,65.0,300.0,1,Rural,0.0
|
||||
LP002297,Male,0.0,0,1,0.0,2500,20000.0,103.0,360.0,1,Semiurban,1.0
|
||||
LP002300,Female,0.0,0,0,0.0,1963,0.0,53.0,360.0,1,Semiurban,1.0
|
||||
LP002301,Female,0.0,0,1,1.0,7441,0.0,194.0,360.0,1,Rural,0.0
|
||||
LP002305,Female,0.0,0,1,0.0,4547,0.0,115.0,360.0,1,Semiurban,1.0
|
||||
LP002308,Male,1.0,0,0,0.0,2167,2400.0,115.0,360.0,1,Urban,1.0
|
||||
LP002314,Female,0.0,0,0,0.0,2213,0.0,66.0,360.0,1,Rural,1.0
|
||||
LP002315,Male,1.0,1,1,0.0,8300,0.0,152.0,300.0,0,Semiurban,0.0
|
||||
LP002317,Male,1.0,3+,1,0.0,81000,0.0,360.0,360.0,0,Rural,0.0
|
||||
LP002318,Female,0.0,1,0,1.0,3867,0.0,62.0,360.0,1,Semiurban,0.0
|
||||
LP002319,Male,1.0,0,1,0.0,6256,0.0,160.0,360.0,0,Urban,1.0
|
||||
LP002328,Male,1.0,0,0,0.0,6096,0.0,218.0,360.0,0,Rural,0.0
|
||||
LP002332,Male,1.0,0,0,0.0,2253,2033.0,110.0,360.0,1,Rural,1.0
|
||||
LP002335,Female,1.0,0,0,0.0,2149,3237.0,178.0,360.0,0,Semiurban,0.0
|
||||
LP002337,Female,0.0,0,1,0.0,2995,0.0,60.0,360.0,1,Urban,1.0
|
||||
LP002341,Female,0.0,1,1,0.0,2600,0.0,160.0,360.0,1,Urban,0.0
|
||||
LP002342,Male,1.0,2,1,1.0,1600,20000.0,239.0,360.0,1,Urban,0.0
|
||||
LP002345,Male,1.0,0,1,0.0,1025,2773.0,112.0,360.0,1,Rural,1.0
|
||||
LP002347,Male,1.0,0,1,0.0,3246,1417.0,138.0,360.0,1,Semiurban,1.0
|
||||
LP002348,Male,1.0,0,1,0.0,5829,0.0,138.0,360.0,1,Rural,1.0
|
||||
LP002357,Female,0.0,0,0,0.0,2720,0.0,80.0,,0,Urban,0.0
|
||||
LP002361,Male,1.0,0,1,0.0,1820,1719.0,100.0,360.0,1,Urban,1.0
|
||||
LP002362,Male,1.0,1,1,0.0,7250,1667.0,110.0,,0,Urban,0.0
|
||||
LP002364,Male,1.0,0,1,0.0,14880,0.0,96.0,360.0,1,Semiurban,1.0
|
||||
LP002366,Male,1.0,0,1,0.0,2666,4300.0,121.0,360.0,1,Rural,1.0
|
||||
LP002367,Female,0.0,1,0,0.0,4606,0.0,81.0,360.0,1,Rural,0.0
|
||||
LP002368,Male,1.0,2,1,0.0,5935,0.0,133.0,360.0,1,Semiurban,1.0
|
||||
LP002369,Male,1.0,0,1,0.0,2920,16.12000084,87.0,360.0,1,Rural,1.0
|
||||
LP002370,Male,0.0,0,0,0.0,2717,0.0,60.0,180.0,1,Urban,1.0
|
||||
LP002377,Female,0.0,1,1,1.0,8624,0.0,150.0,360.0,1,Semiurban,1.0
|
||||
LP002379,Male,0.0,0,1,0.0,6500,0.0,105.0,360.0,0,Rural,0.0
|
||||
LP002386,Male,0.0,0,1,0.0,12876,0.0,405.0,360.0,1,Semiurban,1.0
|
||||
LP002387,Male,1.0,0,1,0.0,2425,2340.0,143.0,360.0,1,Semiurban,1.0
|
||||
LP002390,Male,0.0,0,1,0.0,3750,0.0,100.0,360.0,1,Urban,1.0
|
||||
LP002393,Female,0.0,,1,0.0,10047,0.0,0.0,240.0,1,Semiurban,1.0
|
||||
LP002398,Male,0.0,0,1,0.0,1926,1851.0,50.0,360.0,1,Semiurban,1.0
|
||||
LP002401,Male,1.0,0,1,0.0,2213,1125.0,0.0,360.0,1,Urban,1.0
|
||||
LP002403,Male,0.0,0,1,1.0,10416,0.0,187.0,360.0,0,Urban,0.0
|
||||
LP002407,Female,1.0,0,0,1.0,7142,0.0,138.0,360.0,1,Rural,1.0
|
||||
LP002408,Male,0.0,0,1,0.0,3660,5064.0,187.0,360.0,1,Semiurban,1.0
|
||||
LP002409,Male,1.0,0,1,0.0,7901,1833.0,180.0,360.0,1,Rural,1.0
|
||||
LP002418,Male,0.0,3+,0,0.0,4707,1993.0,148.0,360.0,1,Semiurban,1.0
|
||||
LP002422,Male,0.0,1,1,0.0,37719,0.0,152.0,360.0,1,Semiurban,1.0
|
||||
LP002424,Male,1.0,0,1,0.0,7333,8333.0,175.0,300.0,0,Rural,1.0
|
||||
LP002429,Male,1.0,1,1,1.0,3466,1210.0,130.0,360.0,1,Rural,1.0
|
||||
LP002434,Male,1.0,2,0,0.0,4652,0.0,110.0,360.0,1,Rural,1.0
|
||||
LP002435,Male,1.0,0,1,0.0,3539,1376.0,55.0,360.0,1,Rural,0.0
|
||||
LP002443,Male,1.0,2,1,0.0,3340,1710.0,150.0,360.0,0,Rural,0.0
|
||||
LP002444,Male,0.0,1,0,1.0,2769,1542.0,190.0,360.0,0,Semiurban,0.0
|
||||
LP002446,Male,1.0,2,0,0.0,2309,1255.0,125.0,360.0,0,Rural,0.0
|
||||
LP002447,Male,1.0,2,0,0.0,1958,1456.0,60.0,300.0,0,Urban,1.0
|
||||
LP002448,Male,1.0,0,1,0.0,3948,1733.0,149.0,360.0,0,Rural,0.0
|
||||
LP002449,Male,1.0,0,1,0.0,2483,2466.0,90.0,180.0,0,Rural,1.0
|
||||
LP002453,Male,0.0,0,1,1.0,7085,0.0,84.0,360.0,1,Semiurban,1.0
|
||||
LP002455,Male,1.0,2,1,0.0,3859,0.0,96.0,360.0,1,Semiurban,1.0
|
||||
LP002459,Male,1.0,0,1,0.0,4301,0.0,118.0,360.0,1,Urban,1.0
|
||||
LP002467,Male,1.0,0,1,0.0,3708,2569.0,173.0,360.0,1,Urban,0.0
|
||||
LP002472,Male,0.0,2,1,0.0,4354,0.0,136.0,360.0,1,Rural,1.0
|
||||
LP002473,Male,1.0,0,1,0.0,8334,0.0,160.0,360.0,1,Semiurban,0.0
|
||||
LP002478,,1.0,0,1,1.0,2083,4083.0,160.0,360.0,0,Semiurban,1.0
|
||||
LP002484,Male,1.0,3+,1,0.0,7740,0.0,128.0,180.0,1,Urban,1.0
|
||||
LP002487,Male,1.0,0,1,0.0,3015,2188.0,153.0,360.0,1,Rural,1.0
|
||||
LP002489,Female,0.0,1,0,0.0,5191,0.0,132.0,360.0,1,Semiurban,1.0
|
||||
LP002493,Male,0.0,0,1,0.0,4166,0.0,98.0,360.0,0,Semiurban,0.0
|
||||
LP002494,Male,0.0,0,1,0.0,6000,0.0,140.0,360.0,1,Rural,1.0
|
||||
LP002500,Male,1.0,3+,0,0.0,2947,1664.0,70.0,180.0,0,Urban,0.0
|
||||
LP002501,,1.0,0,1,0.0,16692,0.0,110.0,360.0,1,Semiurban,1.0
|
||||
LP002502,Female,1.0,2,0,0.0,210,2917.0,98.0,360.0,1,Semiurban,1.0
|
||||
LP002505,Male,1.0,0,1,0.0,4333,2451.0,110.0,360.0,1,Urban,0.0
|
||||
LP002515,Male,1.0,1,1,1.0,3450,2079.0,162.0,360.0,1,Semiurban,1.0
|
||||
LP002517,Male,1.0,1,0,0.0,2653,1500.0,113.0,180.0,0,Rural,0.0
|
||||
LP002519,Male,1.0,3+,1,0.0,4691,0.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP002522,Female,0.0,0,1,1.0,2500,0.0,93.0,360.0,0,Urban,1.0
|
||||
LP002524,Male,0.0,2,1,0.0,5532,4648.0,162.0,360.0,1,Rural,1.0
|
||||
LP002527,Male,1.0,2,1,1.0,16525,1014.0,150.0,360.0,1,Rural,1.0
|
||||
LP002529,Male,1.0,2,1,0.0,6700,1750.0,230.0,300.0,1,Semiurban,1.0
|
||||
LP002530,,1.0,2,1,0.0,2873,1872.0,132.0,360.0,0,Semiurban,0.0
|
||||
LP002531,Male,1.0,1,1,1.0,16667,2250.0,86.0,360.0,1,Semiurban,1.0
|
||||
LP002533,Male,1.0,2,1,0.0,2947,1603.0,0.0,360.0,1,Urban,0.0
|
||||
LP002534,Female,0.0,0,0,0.0,4350,0.0,154.0,360.0,1,Rural,1.0
|
||||
LP002536,Male,1.0,3+,0,0.0,3095,0.0,113.0,360.0,1,Rural,1.0
|
||||
LP002537,Male,1.0,0,1,0.0,2083,3150.0,128.0,360.0,1,Semiurban,1.0
|
||||
LP002541,Male,1.0,0,1,0.0,10833,0.0,234.0,360.0,1,Semiurban,1.0
|
||||
LP002543,Male,1.0,2,1,0.0,8333,0.0,246.0,360.0,1,Semiurban,1.0
|
||||
LP002544,Male,1.0,1,0,0.0,1958,2436.0,131.0,360.0,1,Rural,1.0
|
||||
LP002545,Male,0.0,2,1,0.0,3547,0.0,80.0,360.0,0,Rural,0.0
|
||||
LP002547,Male,1.0,1,1,0.0,18333,0.0,500.0,360.0,1,Urban,0.0
|
||||
LP002555,Male,1.0,2,1,1.0,4583,2083.0,160.0,360.0,1,Semiurban,1.0
|
||||
LP002556,Male,0.0,0,1,0.0,2435,0.0,75.0,360.0,1,Urban,0.0
|
||||
LP002560,Male,0.0,0,0,0.0,2699,2785.0,96.0,360.0,0,Semiurban,1.0
|
||||
LP002562,Male,1.0,1,0,0.0,5333,1131.0,186.0,360.0,0,Urban,1.0
|
||||
LP002571,Male,0.0,0,0,0.0,3691,0.0,110.0,360.0,1,Rural,1.0
|
||||
LP002582,Female,0.0,0,0,1.0,17263,0.0,225.0,360.0,1,Semiurban,1.0
|
||||
LP002585,Male,1.0,0,1,0.0,3597,2157.0,119.0,360.0,0,Rural,0.0
|
||||
LP002586,Female,1.0,1,1,0.0,3326,913.0,105.0,84.0,1,Semiurban,1.0
|
||||
LP002587,Male,1.0,0,0,0.0,2600,1700.0,107.0,360.0,1,Rural,1.0
|
||||
LP002588,Male,1.0,0,1,0.0,4625,2857.0,111.0,12.0,0,Urban,1.0
|
||||
LP002600,Male,1.0,1,1,1.0,2895,0.0,95.0,360.0,1,Semiurban,1.0
|
||||
LP002602,Male,0.0,0,1,0.0,6283,4416.0,209.0,360.0,0,Rural,0.0
|
||||
LP002603,Female,0.0,0,1,0.0,645,3683.0,113.0,480.0,1,Rural,1.0
|
||||
LP002606,Female,0.0,0,1,0.0,3159,0.0,100.0,360.0,1,Semiurban,1.0
|
||||
LP002615,Male,1.0,2,1,0.0,4865,5624.0,208.0,360.0,1,Semiurban,1.0
|
||||
LP002618,Male,1.0,1,0,0.0,4050,5302.0,138.0,360.0,0,Rural,0.0
|
||||
LP002619,Male,1.0,0,0,0.0,3814,1483.0,124.0,300.0,1,Semiurban,1.0
|
||||
LP002622,Male,1.0,2,1,0.0,3510,4416.0,243.0,360.0,1,Rural,1.0
|
||||
LP002624,Male,1.0,0,1,0.0,20833,6667.0,480.0,360.0,0,Urban,1.0
|
||||
LP002625,,0.0,0,1,0.0,3583,0.0,96.0,360.0,1,Urban,0.0
|
||||
LP002626,Male,1.0,0,1,1.0,2479,3013.0,188.0,360.0,1,Urban,1.0
|
||||
LP002634,Female,0.0,1,1,0.0,13262,0.0,40.0,360.0,1,Urban,1.0
|
||||
LP002637,Male,0.0,0,0,0.0,3598,1287.0,100.0,360.0,1,Rural,0.0
|
||||
LP002640,Male,1.0,1,1,0.0,6065,2004.0,250.0,360.0,1,Semiurban,1.0
|
||||
LP002643,Male,1.0,2,1,0.0,3283,2035.0,148.0,360.0,1,Urban,1.0
|
||||
LP002648,Male,1.0,0,1,0.0,2130,6666.0,70.0,180.0,1,Semiurban,0.0
|
||||
LP002652,Male,0.0,0,1,0.0,5815,3666.0,311.0,360.0,1,Rural,0.0
|
||||
LP002659,Male,1.0,3+,1,0.0,3466,3428.0,150.0,360.0,1,Rural,1.0
|
||||
LP002670,Female,1.0,2,1,0.0,2031,1632.0,113.0,480.0,1,Semiurban,1.0
|
||||
LP002682,Male,1.0,,0,0.0,3074,1800.0,123.0,360.0,0,Semiurban,0.0
|
||||
LP002683,Male,0.0,0,1,0.0,4683,1915.0,185.0,360.0,1,Semiurban,0.0
|
||||
LP002684,Female,0.0,0,0,0.0,3400,0.0,95.0,360.0,1,Rural,0.0
|
||||
LP002689,Male,1.0,2,0,0.0,2192,1742.0,45.0,360.0,1,Semiurban,1.0
|
||||
LP002690,Male,0.0,0,1,0.0,2500,0.0,55.0,360.0,1,Semiurban,1.0
|
||||
LP002692,Male,1.0,3+,1,1.0,5677,1424.0,100.0,360.0,1,Rural,1.0
|
||||
LP002693,Male,1.0,2,1,1.0,7948,7166.0,480.0,360.0,1,Rural,1.0
|
||||
LP002697,Male,0.0,0,1,0.0,4680,2087.0,0.0,360.0,1,Semiurban,0.0
|
||||
LP002699,Male,1.0,2,1,1.0,17500,0.0,400.0,360.0,1,Rural,1.0
|
||||
LP002705,Male,1.0,0,1,0.0,3775,0.0,110.0,360.0,1,Semiurban,1.0
|
||||
LP002706,Male,1.0,1,0,0.0,5285,1430.0,161.0,360.0,0,Semiurban,1.0
|
||||
LP002714,Male,0.0,1,0,0.0,2679,1302.0,94.0,360.0,1,Semiurban,1.0
|
||||
LP002716,Male,0.0,0,0,0.0,6783,0.0,130.0,360.0,1,Semiurban,1.0
|
||||
LP002717,Male,1.0,0,1,0.0,1025,5500.0,216.0,360.0,0,Rural,1.0
|
||||
LP002720,Male,1.0,3+,1,0.0,4281,0.0,100.0,360.0,1,Urban,1.0
|
||||
LP002723,Male,0.0,2,1,0.0,3588,0.0,110.0,360.0,0,Rural,0.0
|
||||
LP002729,Male,0.0,1,1,0.0,11250,0.0,196.0,360.0,0,Semiurban,0.0
|
||||
LP002731,Female,0.0,0,0,1.0,18165,0.0,125.0,360.0,1,Urban,1.0
|
||||
LP002732,Male,0.0,0,0,0.0,2550,2042.0,126.0,360.0,1,Rural,1.0
|
||||
LP002734,Male,1.0,0,1,0.0,6133,3906.0,324.0,360.0,1,Urban,1.0
|
||||
LP002738,Male,0.0,2,1,0.0,3617,0.0,107.0,360.0,1,Semiurban,1.0
|
||||
LP002739,Male,1.0,0,0,0.0,2917,536.0,66.0,360.0,1,Rural,0.0
|
||||
LP002740,Male,1.0,3+,1,0.0,6417,0.0,157.0,180.0,1,Rural,1.0
|
||||
LP002741,Female,1.0,1,1,0.0,4608,2845.0,140.0,180.0,1,Semiurban,1.0
|
||||
LP002743,Female,0.0,0,1,0.0,2138,0.0,99.0,360.0,0,Semiurban,0.0
|
||||
LP002753,Female,0.0,1,1,0.0,3652,0.0,95.0,360.0,1,Semiurban,1.0
|
||||
LP002755,Male,1.0,1,0,0.0,2239,2524.0,128.0,360.0,1,Urban,1.0
|
||||
LP002757,Female,1.0,0,0,0.0,3017,663.0,102.0,360.0,0,Semiurban,1.0
|
||||
LP002767,Male,1.0,0,1,0.0,2768,1950.0,155.0,360.0,1,Rural,1.0
|
||||
LP002768,Male,0.0,0,0,0.0,3358,0.0,80.0,36.0,1,Semiurban,0.0
|
||||
LP002772,Male,0.0,0,1,0.0,2526,1783.0,145.0,360.0,1,Rural,1.0
|
||||
LP002776,Female,0.0,0,1,0.0,5000,0.0,103.0,360.0,0,Semiurban,0.0
|
||||
LP002777,Male,1.0,0,1,0.0,2785,2016.0,110.0,360.0,1,Rural,1.0
|
||||
LP002778,Male,1.0,2,1,1.0,6633,0.0,0.0,360.0,0,Rural,0.0
|
||||
LP002784,Male,1.0,1,0,0.0,2492,2375.0,0.0,360.0,1,Rural,1.0
|
||||
LP002785,Male,1.0,1,1,0.0,3333,3250.0,158.0,360.0,1,Urban,1.0
|
||||
LP002788,Male,1.0,0,0,0.0,2454,2333.0,181.0,360.0,0,Urban,0.0
|
||||
LP002789,Male,1.0,0,1,0.0,3593,4266.0,132.0,180.0,0,Rural,0.0
|
||||
LP002792,Male,1.0,1,1,0.0,5468,1032.0,26.0,360.0,1,Semiurban,1.0
|
||||
LP002794,Female,0.0,0,1,0.0,2667,1625.0,84.0,360.0,0,Urban,1.0
|
||||
LP002795,Male,1.0,3+,1,1.0,10139,0.0,260.0,360.0,1,Semiurban,1.0
|
||||
LP002798,Male,1.0,0,1,0.0,3887,2669.0,162.0,360.0,1,Semiurban,1.0
|
||||
LP002804,Female,1.0,0,1,0.0,4180,2306.0,182.0,360.0,1,Semiurban,1.0
|
||||
LP002807,Male,1.0,2,0,0.0,3675,242.0,108.0,360.0,1,Semiurban,1.0
|
||||
LP002813,Female,1.0,1,1,1.0,19484,0.0,600.0,360.0,1,Semiurban,1.0
|
||||
LP002820,Male,1.0,0,1,0.0,5923,2054.0,211.0,360.0,1,Rural,1.0
|
||||
LP002821,Male,0.0,0,0,1.0,5800,0.0,132.0,360.0,1,Semiurban,1.0
|
||||
LP002832,Male,1.0,2,1,0.0,8799,0.0,258.0,360.0,0,Urban,0.0
|
||||
LP002833,Male,1.0,0,0,0.0,4467,0.0,120.0,360.0,0,Rural,1.0
|
||||
LP002836,Male,0.0,0,1,0.0,3333,0.0,70.0,360.0,1,Urban,1.0
|
||||
LP002837,Male,1.0,3+,1,0.0,3400,2500.0,123.0,360.0,0,Rural,0.0
|
||||
LP002840,Female,0.0,0,1,0.0,2378,0.0,9.0,360.0,1,Urban,0.0
|
||||
LP002841,Male,1.0,0,1,0.0,3166,2064.0,104.0,360.0,0,Urban,0.0
|
||||
LP002842,Male,1.0,1,1,0.0,3417,1750.0,186.0,360.0,1,Urban,1.0
|
||||
LP002847,Male,1.0,,1,0.0,5116,1451.0,165.0,360.0,0,Urban,0.0
|
||||
LP002855,Male,1.0,2,1,0.0,16666,0.0,275.0,360.0,1,Urban,1.0
|
||||
LP002862,Male,1.0,2,0,0.0,6125,1625.0,187.0,480.0,1,Semiurban,0.0
|
||||
LP002863,Male,1.0,3+,1,0.0,6406,0.0,150.0,360.0,1,Semiurban,0.0
|
||||
LP002868,Male,1.0,2,1,0.0,3159,461.0,108.0,84.0,1,Urban,1.0
|
||||
LP002872,,1.0,0,1,0.0,3087,2210.0,136.0,360.0,0,Semiurban,0.0
|
||||
LP002874,Male,0.0,0,1,0.0,3229,2739.0,110.0,360.0,1,Urban,1.0
|
||||
LP002877,Male,1.0,1,1,0.0,1782,2232.0,107.0,360.0,1,Rural,1.0
|
||||
LP002888,Male,0.0,0,1,0.0,3182,2917.0,161.0,360.0,1,Urban,1.0
|
||||
LP002892,Male,1.0,2,1,0.0,6540,0.0,205.0,360.0,1,Semiurban,1.0
|
||||
LP002893,Male,0.0,0,1,0.0,1836,33837.0,90.0,360.0,1,Urban,0.0
|
||||
LP002894,Female,1.0,0,1,0.0,3166,0.0,36.0,360.0,1,Semiurban,1.0
|
||||
LP002898,Male,1.0,1,1,0.0,1880,0.0,61.0,360.0,0,Rural,0.0
|
||||
LP002911,Male,1.0,1,1,0.0,2787,1917.0,146.0,360.0,0,Rural,0.0
|
||||
LP002912,Male,1.0,1,1,0.0,4283,3000.0,172.0,84.0,1,Rural,0.0
|
||||
LP002916,Male,1.0,0,1,0.0,2297,1522.0,104.0,360.0,1,Urban,1.0
|
||||
LP002917,Female,0.0,0,0,0.0,2165,0.0,70.0,360.0,1,Semiurban,1.0
|
||||
LP002925,,0.0,0,1,0.0,4750,0.0,94.0,360.0,1,Semiurban,1.0
|
||||
LP002926,Male,1.0,2,1,1.0,2726,0.0,106.0,360.0,0,Semiurban,0.0
|
||||
LP002928,Male,1.0,0,1,0.0,3000,3416.0,56.0,180.0,1,Semiurban,1.0
|
||||
LP002931,Male,1.0,2,1,1.0,6000,0.0,205.0,240.0,1,Semiurban,0.0
|
||||
LP002933,,0.0,3+,1,1.0,9357,0.0,292.0,360.0,1,Semiurban,1.0
|
||||
LP002936,Male,1.0,0,1,0.0,3859,3300.0,142.0,180.0,1,Rural,1.0
|
||||
LP002938,Male,1.0,0,1,1.0,16120,0.0,260.0,360.0,1,Urban,1.0
|
||||
LP002940,Male,0.0,0,0,0.0,3833,0.0,110.0,360.0,1,Rural,1.0
|
||||
LP002941,Male,1.0,2,0,1.0,6383,1000.0,187.0,360.0,1,Rural,0.0
|
||||
LP002943,Male,0.0,,1,0.0,2987,0.0,88.0,360.0,0,Semiurban,0.0
|
||||
LP002945,Male,1.0,0,1,1.0,9963,0.0,180.0,360.0,1,Rural,1.0
|
||||
LP002948,Male,1.0,2,1,0.0,5780,0.0,192.0,360.0,1,Urban,1.0
|
||||
LP002949,Female,0.0,3+,1,0.0,416,41667.0,350.0,180.0,0,Urban,0.0
|
||||
LP002950,Male,1.0,0,0,0.0,2894,2792.0,155.0,360.0,1,Rural,1.0
|
||||
LP002953,Male,1.0,3+,1,0.0,5703,0.0,128.0,360.0,1,Urban,1.0
|
||||
LP002958,Male,0.0,0,1,0.0,3676,4301.0,172.0,360.0,1,Rural,1.0
|
||||
LP002959,Female,1.0,1,1,0.0,12000,0.0,496.0,360.0,1,Semiurban,1.0
|
||||
LP002960,Male,1.0,0,0,0.0,2400,3800.0,0.0,180.0,1,Urban,0.0
|
||||
LP002961,Male,1.0,1,1,0.0,3400,2500.0,173.0,360.0,1,Semiurban,1.0
|
||||
LP002964,Male,1.0,2,0,0.0,3987,1411.0,157.0,360.0,1,Rural,1.0
|
||||
LP002974,Male,1.0,0,1,0.0,3232,1950.0,108.0,360.0,1,Rural,1.0
|
||||
LP002978,Female,0.0,0,1,0.0,2900,0.0,71.0,360.0,1,Rural,1.0
|
||||
LP002979,Male,1.0,3+,1,0.0,4106,0.0,40.0,180.0,1,Rural,1.0
|
||||
LP002983,Male,1.0,1,1,0.0,8072,240.0,253.0,360.0,1,Urban,1.0
|
||||
LP002984,Male,1.0,2,1,0.0,7583,0.0,187.0,360.0,1,Urban,1.0
|
||||
LP002990,Female,0.0,0,1,1.0,4583,0.0,133.0,360.0,0,Semiurban,0.0
|
||||
|
BIN
abanin_danill_lab_6/result_mean.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
abanin_danill_lab_6/score_1.png
Normal file
|
After Width: | Height: | Size: 680 KiB |
BIN
abanin_danill_lab_6/score_2.png
Normal file
|
After Width: | Height: | Size: 452 KiB |
BIN
almukhammetov_bulat_lab_3/1.png
Normal file
|
After Width: | Height: | Size: 73 KiB |
64
almukhammetov_bulat_lab_3/README.md
Normal file
@@ -0,0 +1,64 @@
|
||||
Вариант 2
|
||||
|
||||
Задание:
|
||||
Предсказание категории возраста дома (housingMedianAge) на основе других признаков, таких как широта, долгота, общее количество комнат и т.д.
|
||||
|
||||
Данные:
|
||||
Данный набор данных использовался во второй главе недавней книги Аурелиена Жерона "Практическое машинное обучение с помощью Scikit-Learn и TensorFlow". Он служит отличным введением в реализацию алгоритмов машинного обучения, потому что требует минимальной предварительной обработки данных, содержит легко понимаемый список переменных и находится в оптимальном размере, который не слишком мал и не слишком большой.
|
||||
|
||||
Данные содержат информацию о домах в определенном районе Калифорнии и некоторую сводную статистику на основе данных переписи 1990 года. Следует отметить, что данные не прошли предварительную очистку, и для них требуются некоторые этапы предварительной обработки. Столбцы включают в себя следующие переменные, их названия весьма наглядно описывают их суть:
|
||||
|
||||
долгота longitude
|
||||
|
||||
широта latitude
|
||||
|
||||
средний возраст жилья median_house_value
|
||||
|
||||
общее количество комнат total_rooms
|
||||
|
||||
общее количество спален total_bedrooms
|
||||
|
||||
население population
|
||||
|
||||
домохозяйства households
|
||||
|
||||
медианный доход median_income
|
||||
|
||||
Запуск:
|
||||
Запустите файл lab3.py
|
||||
|
||||
Описание программы:
|
||||
|
||||
1. Загружает набор данных из файла 'housing.csv', который содержит информацию о домах в Калифорнии, включая их координаты, возраст, количество комнат, население, доход и другие характеристики.
|
||||
|
||||
2. Удаляет строки с нулевыми значениями из набора данных для чистоты анализа.
|
||||
|
||||
3. Выбирает набор признаков (features) из данных, которые будут использоваться для обучения моделей регрессии и классификации.
|
||||
|
||||
4. Определяет задачу регрессии, где целевой переменной (target) является 'housing_median_age', и задачу классификации, где целевой переменной является 'housing_median_age'.
|
||||
|
||||
5. Разделяет данные на обучающий и тестовый наборы для обеих задач с использованием функции train_test_split. Тестовый набор составляет 1% от исходных данных.
|
||||
|
||||
6. Создает и обучает дерево решений для регрессии и классификации с использованием моделей DecisionTreeRegressor и DecisionTreeClassifier.
|
||||
|
||||
7. Предсказывает значения целевой переменной на тестовых наборах для обеих задач.
|
||||
|
||||
8. Оценивает качество моделей с помощью среднеквадратичной ошибки (MSE) для регрессии и точности (accuracy) для классификации.
|
||||
|
||||
9. Выводит среднеквадратичную ошибку для регрессии и точность для классификации, а также важности признаков для обеих задач.
|
||||
|
||||
Результаты:
|
||||
|
||||

|
||||
|
||||
Выводы:
|
||||
|
||||
Для задачи регрессии, где целью было предсказать возраст жилья (housing_median_age), модель дерева решений показала среднюю ошибку (MSE) равную 117.65. Это означает, что модель регрессии вполне приемлемо предсказывает возраст жилья на основе выбранных признаков.
|
||||
|
||||
Для задачи классификации, где целью было предсказать стоимость жилья (housing_median_age), модель дерева решений показала низкую точность, всего 8.29%. Это свидетельствует о том, что модель классификации не справляется с предсказанием стоимости жилья на основе выбранных признаков. Низкая точность указывает на необходимость улучшения модели или выбора других методов для решения задачи классификации.
|
||||
|
||||
Анализ важности признаков для задачи регрессии показал, что наибольший вклад в предсказание возраста жилья вносят признаки 'longitude', 'latitude' и 'total_rooms'. Эти признаки оказывают наибольшее влияние на результаты модели.
|
||||
|
||||
Для задачи классификации наибольший вклад в предсказание стоимости жилья вносят признаки 'median_income', 'longitude' и 'latitude'. Эти признаки имеют наибольшее значение при определении классов стоимости жилья.
|
||||
|
||||
В целом, результаты указывают на успешное решение задачи регрессии с использованием модели дерева решений. Однако задача классификации требует дополнительных улучшений.
|
||||
48
almukhammetov_bulat_lab_3/lab3(old).py
Normal file
@@ -0,0 +1,48 @@
|
||||
import pandas as pd
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv('titanic.csv', index_col='PassengerId')
|
||||
|
||||
|
||||
# Функция для преобразования пола в числовое значение
|
||||
def Sex_to_bool(sex):
|
||||
if sex == "male":
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
# Преобразование пола в числовое значение
|
||||
data['Sex'] = data['Sex'].apply(Sex_to_bool)
|
||||
|
||||
# Отбор строк с непустыми значениями
|
||||
# Отбор строк с непустыми значениями
|
||||
data = data.loc[~data['Name'].isna()
|
||||
& ~data['Age'].isna()
|
||||
& ~data['Sex'].isna()
|
||||
& ~data['Survived'].isna()]
|
||||
|
||||
|
||||
# Отбор нужных столбцов
|
||||
features = data[['Name', 'Sex', 'Age']]
|
||||
|
||||
# Применение Label Encoding к столбцу 'Name'
|
||||
label_encoder = LabelEncoder()
|
||||
features['Name'] = label_encoder.fit_transform(features['Name'])
|
||||
|
||||
# Определение целевой переменной
|
||||
y = data['Survived']
|
||||
|
||||
# Создание и обучение дерева решений
|
||||
clf = DecisionTreeClassifier(random_state=241)
|
||||
clf.fit(features, y)
|
||||
|
||||
# Получение важностей признаков
|
||||
importance = clf.feature_importances_
|
||||
|
||||
# Печать важности каждого признака
|
||||
print("Важность 'Name':", importance[0])
|
||||
print("Важность 'Sex':", importance[1])
|
||||
print("Важность 'Age':", importance[2])
|
||||
|
||||
77
almukhammetov_bulat_lab_3/lab3.py
Normal file
@@ -0,0 +1,77 @@
|
||||
import pandas as pd
|
||||
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.metrics import mean_squared_error, accuracy_score
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv('housing.csv')
|
||||
data = data.dropna()
|
||||
|
||||
# Отбор нужных столбцов
|
||||
features = data[
|
||||
['longitude', 'latitude', 'total_rooms', 'total_bedrooms', 'population', 'households', 'median_income']]
|
||||
|
||||
# Задача регрессии
|
||||
target_regression = data['housing_median_age']
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы для регрессии
|
||||
X_train_regression, X_test_regression, y_train_regression, y_test_regression = train_test_split(features,
|
||||
target_regression,
|
||||
test_size=0.01,
|
||||
random_state=241)
|
||||
|
||||
# Создание и обучение дерева решений для регрессии
|
||||
clf_regression = DecisionTreeRegressor(random_state=241)
|
||||
clf_regression.fit(X_train_regression, y_train_regression)
|
||||
|
||||
# Предсказание на тестовом наборе для регрессии
|
||||
y_pred_regression = clf_regression.predict(X_test_regression)
|
||||
|
||||
# Оценка качества модели для регрессии (MSE)
|
||||
mse_regression = mean_squared_error(y_test_regression, y_pred_regression)
|
||||
print("Средняя ошибка для регрессии:", mse_regression)
|
||||
|
||||
# Задача классификации
|
||||
target_classification = data['median_house_value']
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы для классификации
|
||||
X_train_classification, X_test_classification, y_train_classification, y_test_classification = train_test_split(
|
||||
features, target_classification, test_size=0.01, random_state=241)
|
||||
|
||||
# Создание и обучение дерева классификации
|
||||
clf_classification = DecisionTreeClassifier(random_state=241)
|
||||
clf_classification.fit(X_train_classification, y_train_classification)
|
||||
|
||||
# Предсказание на тестовом наборе для классификации
|
||||
y_pred_classification = clf_classification.predict(X_test_classification)
|
||||
|
||||
# Оценка качества модели для классификации (точность)
|
||||
accuracy_classification = accuracy_score(y_test_classification, y_pred_classification)
|
||||
print("Точность для классификации: {:.2f}%".format(accuracy_classification * 100))
|
||||
|
||||
# Важности признаков для регрессии
|
||||
importance_regression = clf_regression.feature_importances_
|
||||
|
||||
print("Важность для регрессии")
|
||||
# Печать важности каждого признака для регрессии
|
||||
print("Важность 'longitude':", importance_regression[0]) # За западную долготу дома
|
||||
print("Важность 'latitude':", importance_regression[1]) # За северную широту дома
|
||||
print("Важность 'total_rooms':", importance_regression[2]) # За общее количество комнат в блоке
|
||||
print("Важность 'total_bedrooms':", importance_regression[3]) # За общее количество спален в блоке
|
||||
print("Важность 'population':", importance_regression[4]) # За общее количество проживающих в блоке
|
||||
print("Важность 'households':", importance_regression[5]) # За общее количество домохозяйств в блоке
|
||||
print("Важность 'median_income':", importance_regression[6]) # За медианный доход домохозяйств в блоке
|
||||
|
||||
# Важности признаков для классификации
|
||||
importance_classification = clf_classification.feature_importances_
|
||||
|
||||
print()
|
||||
print("Важность для классификации")
|
||||
# Печать важности каждого признака для классификации
|
||||
print("Важность 'longitude':", importance_classification[0]) # За западную долготу дома
|
||||
print("Важность 'latitude':", importance_classification[1]) # За северную широту дома
|
||||
print("Важность 'total_rooms':", importance_classification[2]) # За общее количество комнат в блоке
|
||||
print("Важность 'total_bedrooms':", importance_classification[3]) # За общее количество спален в блоке
|
||||
print("Важность 'population':", importance_classification[4]) # За общее количество проживающих в блоке
|
||||
print("Важность 'households':", importance_classification[5]) # За общее количество домохозяйств в блоке
|
||||
print("Важность 'median_income':", importance_classification[6]) # За медианный доход домохозяйств в блоке
|
||||
52
arzamaskina_milana_lab_1/README.md
Normal file
@@ -0,0 +1,52 @@
|
||||
## Задание
|
||||
Работа с типовыми наборами данных и различными моделями.
|
||||
Сгенерируйте определенный тип данных и сравните на нем 3 модели
|
||||
|
||||
Вариант №2
|
||||
|
||||
Данные: make_circles(noise=0.2, factor=0.5, random_state=1)
|
||||
|
||||
Модели:
|
||||
+ Линейная регрессия
|
||||
+ Полиномиальная регрессия (degree=3)
|
||||
+ Гребневая рекрессия (degree=3, alpha=1.0)
|
||||
|
||||
## Используемые технологии
|
||||
В лабораторной были использованы библиотеки:
|
||||
+ matplotlib - используется для создания графиков
|
||||
+ sklearn - используется для работы с моделями машинного обучения
|
||||
|
||||
## Как запустить
|
||||
Запустить файл main.py, который выполнит необходимые действия над моделями
|
||||
и выведет графики на экран.
|
||||
|
||||
## Что делает программа
|
||||
Генерирует набор данных типа circles, делит его на обучающую и тестовую выборки.
|
||||
По очереди обучает на данных обучающей выборки 3 модели:
|
||||
модель линейной регрессии, модель полиномиальной регрессии со степенью 3 и
|
||||
модель гребневой регрессии со степенью 3 и alpha=1.0.
|
||||
|
||||
После обучения предсказания моделей проверяются на тестовых данных.
|
||||
Строится 4 графика, один для отображения первоначальных тестовых и обучающих данных, где:
|
||||
`o` - точки обучающей выборки первого и второго типа.
|
||||
`x` - точки тестовой выборки первого и второго типа.
|
||||
И по одному графику для каждой модели, где:
|
||||
`o` - точки тестовой выборки первого и второго типа.
|
||||
|
||||
Далее программа выведет оценки точности моделей. Полученные оценки:
|
||||
+ Линейная регрессия - 0.268
|
||||
+ Полиномиальная регрессия со степенью 3 - 0.134
|
||||
+ Гребневая регрессия со степенью 3, alpha=1.0 - 0.131
|
||||
|
||||
## Скриншоты работы программы
|
||||
График для отображения первоначальных тестовых и обучающих данных и
|
||||
полученные графики разбиения точек на классы:
|
||||
|
||||
Линейная регрессия - Полиномиальная регрессия (со степенью 3) - Гребневая регрессия (со степенью 3, alpha=1.0)
|
||||

|
||||
|
||||
Вывод анализа точности работы моделей:
|
||||

|
||||
|
||||
## Вывод
|
||||
Исходя из этого, можно сделать вывод: лучший результат показала модель линейной регрессии.
|
||||
BIN
arzamaskina_milana_lab_1/img_screen_1.png
Normal file
|
After Width: | Height: | Size: 332 KiB |
BIN
arzamaskina_milana_lab_1/img_screen_2.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
87
arzamaskina_milana_lab_1/main.py
Normal file
@@ -0,0 +1,87 @@
|
||||
from matplotlib import pyplot as plt
|
||||
from matplotlib.colors import ListedColormap
|
||||
from sklearn.datasets import make_circles
|
||||
from sklearn.linear_model import LinearRegression, Ridge
|
||||
from sklearn.metrics import mean_squared_error
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.pipeline import make_pipeline
|
||||
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
|
||||
|
||||
# Нелинейный генератор - позволяет сгенерировать такие классы-признаки,
|
||||
# что признаки одного класса геометрически окружают признаки другого класса
|
||||
X, y = make_circles(noise=0.2, factor=0.5, random_state=1)
|
||||
X = StandardScaler().fit_transform(X)
|
||||
|
||||
# Разделение на обучающую и тестовую выборки (40% данных будет использовано для тестов)
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=42)
|
||||
|
||||
# Создание необходимых для оценки моделей
|
||||
def models():
|
||||
# Линейная регрессия
|
||||
linear_regression = LinearRegression()
|
||||
linear_regression.fit(X_train, y_train)
|
||||
|
||||
# Полиномиальная регрессия (degree=3)
|
||||
poly_regression = make_pipeline(PolynomialFeatures(degree=3), LinearRegression())
|
||||
poly_regression.fit(X_train, y_train)
|
||||
|
||||
# Гребневая рекрессия (degree=3, alpha=1.0)
|
||||
ridge_regression = make_pipeline(PolynomialFeatures(degree=3), Ridge(alpha=1.0))
|
||||
ridge_regression.fit(X_train, y_train)
|
||||
|
||||
models = [linear_regression, poly_regression, ridge_regression]
|
||||
|
||||
# Предсказанные y
|
||||
linear_predict = linear_regression.predict(X_test)
|
||||
poly_predict = poly_regression.predict(X_test)
|
||||
ridge_predict = ridge_regression.predict(X_test)
|
||||
|
||||
pred = [linear_predict, poly_predict, ridge_predict]
|
||||
|
||||
# Среднеквадратичные ошибки
|
||||
lin_mse = mean_squared_error(y_test, linear_predict)
|
||||
poly_mse = mean_squared_error(y_test, poly_predict)
|
||||
rr_mse = mean_squared_error(y_test, ridge_predict)
|
||||
|
||||
mse = [lin_mse, poly_mse, rr_mse]
|
||||
|
||||
grafics(pred, mse, models)
|
||||
|
||||
# Графики
|
||||
def grafics(pred, mse, models):
|
||||
fig, ax = plt.subplots(nrows=2, ncols=2, figsize=(8, 8))
|
||||
cm_color1 = ListedColormap(['r', 'g'])
|
||||
|
||||
plt.suptitle('Лабораторная работа 1. Вариант 2.', fontweight='bold')
|
||||
|
||||
# График данных
|
||||
plt.subplot(2, 2, 1)
|
||||
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_color1, marker='o', label='тренировочные данные')
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_color1, marker='x', label='тестовые данные')
|
||||
plt.title('Датасет circles', fontsize=10, loc='left')
|
||||
plt.legend(loc='upper left')
|
||||
|
||||
# График линейной модели
|
||||
plt.subplot(2, 2, 2)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=pred[0], cmap=cm_color1)
|
||||
plt.title('Линейная регрессия', fontsize=10, loc='left')
|
||||
|
||||
# График полиномиальной модели (degree=3)
|
||||
plt.subplot(2, 2, 3)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=pred[1], cmap=cm_color1)
|
||||
plt.title('Полиномиальная регрессия (degree=3)', fontsize=10, loc='left')
|
||||
plt.xlabel('X')
|
||||
plt.ylabel('Y')
|
||||
|
||||
# График гребневой модели (degree=3, alpha=1.0)
|
||||
plt.subplot(2, 2, 4)
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=pred[2], cmap=cm_color1)
|
||||
plt.title('Гребневая регрессия (degree=3, alpha=1.0)', fontsize=10, loc='left')
|
||||
plt.show()
|
||||
|
||||
# Сравнение качества
|
||||
print('Линейная MSE:', mse[0])
|
||||
print('Полиномиальная (degree=3) MSE:', mse[1])
|
||||
print('Гребневая (degree=3, alpha=1.0) MSE:', mse[2])
|
||||
|
||||
models()
|
||||
50
arzamaskina_milana_lab_2/README.md
Normal file
@@ -0,0 +1,50 @@
|
||||
## Лабораторная работа №2
|
||||
|
||||
### Ранжирование признаков
|
||||
|
||||
Вариант №2
|
||||
|
||||
## Задание:
|
||||
|
||||
Используя код из [1] (пункт «Решение задачи ранжирования признаков», стр. 205),
|
||||
выполните ранжирование признаков с помощью указанных по варианту моделей.
|
||||
Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку.
|
||||
Проведите анализ получившихся результатов.
|
||||
Какие четыре признака оказались самыми важными по среднему значению?
|
||||
(Названия\индексы признаков и будут ответом на задание).
|
||||
|
||||
Модели:
|
||||
+ Линейная регрессия (LinearRegression)
|
||||
+ Рекурсивное сокращение признаков (Recursive Feature Elimination –RFE),
|
||||
+ Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
Используемые библиотеки:
|
||||
* numpy
|
||||
* pandas
|
||||
* sklearn
|
||||
|
||||
### Как запустить:
|
||||
|
||||
* установить python, numpy, pandas, sklearn
|
||||
* запустить проект (стартовая точка - main.py)
|
||||
|
||||
### Что делает программа:
|
||||
|
||||
* Генерирует данные и обучает модели: LinearRegression, Recursive Feature Elimination (RFE), Random Forest Regressor
|
||||
* Производится ранжирование признаков с помощью моделей
|
||||
* Отображение получившихся результатов: значения признаков для каждой модели и 4 самых важных признака по среднему значению
|
||||
|
||||
### 4 самых важных признака по среднему значению
|
||||
* Признак №1 : 0.887
|
||||
* Признак №4 : 0.821
|
||||
* Признак №2 : 0.741
|
||||
* Признак №11 : 0.600
|
||||
|
||||
#### Результаты работы программы:
|
||||
|
||||

|
||||

|
||||

|
||||

|
||||
BIN
arzamaskina_milana_lab_2/img_result_1.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
arzamaskina_milana_lab_2/img_result_2.png
Normal file
|
After Width: | Height: | Size: 146 KiB |
BIN
arzamaskina_milana_lab_2/img_result_3.png
Normal file
|
After Width: | Height: | Size: 155 KiB |
BIN
arzamaskina_milana_lab_2/img_result_4.png
Normal file
|
After Width: | Height: | Size: 66 KiB |
84
arzamaskina_milana_lab_2/main.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.feature_selection import RFE
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
|
||||
# Используя код из [1](пункт «Решение задачи ранжирования признаков», стр. 205),
|
||||
# выполните ранжирование признаков с помощью указанных по варианту моделей.
|
||||
# Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку.
|
||||
# Проведите анализ получившихся результатов.
|
||||
# Какие четыре признака оказались самыми важными по среднему значению?
|
||||
# (Названия\индексы признаков и будут ответом на задание).
|
||||
|
||||
# Линейная регрессия (LinearRegression)
|
||||
# Рекурсивное сокращение признаков (Recursive Feature Elimination –RFE),
|
||||
# Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
|
||||
# Модели
|
||||
model_LR = LinearRegression()
|
||||
model_RFE = RFE(LinearRegression(), n_features_to_select=1)
|
||||
model_RFR = RandomForestRegressor()
|
||||
|
||||
# Оценки моделей
|
||||
model_scores = {}
|
||||
|
||||
# Cлучайные данные для регрессии
|
||||
def generation_data_and_start():
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X_ = np.random.uniform(0, 1, (size, 14))
|
||||
y_ = (10 * np.sin(np.pi * X_[:, 0] * X_[:, 1]) + 20 * (X_[:, 2] - .5) ** 2 +
|
||||
10 * X_[:, 3] + 5 * X_[:, 4] ** 5 + np.random.normal(0, 1))
|
||||
X_[:, 10:] = X_[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
|
||||
# DataFrame для данных
|
||||
data = pd.DataFrame(X_)
|
||||
data['y'] = y_
|
||||
|
||||
models_study_and_scores(data.drop('y', axis=1), data['y'])
|
||||
print_scores()
|
||||
|
||||
# Обучение и оценка моделей
|
||||
def models_study_and_scores(X, y):
|
||||
|
||||
# Линейная регрессия
|
||||
model_LR.fit(X, y)
|
||||
# Нормализация коэффициентов признаков
|
||||
norm_coef = MinMaxScaler().fit_transform(np.abs(model_LR.coef_).reshape(-1, 1))
|
||||
model_scores["Линейная регрессия"] = norm_coef.flatten()
|
||||
|
||||
# Рекурсивное сокращение признаков
|
||||
model_RFE.fit(X, y)
|
||||
# Нормализация рангов
|
||||
norm_rank = 1 - (model_RFE.ranking_ - 1) / (np.max(model_RFE.ranking_) - 1)
|
||||
model_scores["Рекурсивное сокращение признаков"] = norm_rank
|
||||
|
||||
# Сокращение признаков Случайными деревьями
|
||||
model_RFR.fit(X, y)
|
||||
# Нормализация значений важности признаков
|
||||
norm_imp = MinMaxScaler().fit_transform(model_RFR.feature_importances_.reshape(-1, 1))
|
||||
model_scores["Сокращение признаков Случайными деревьями"] = norm_imp.flatten()
|
||||
|
||||
# Вывод оценок
|
||||
def print_scores():
|
||||
print()
|
||||
print(f"---- Оценки признаков ----")
|
||||
print()
|
||||
for name, scores in model_scores.items():
|
||||
print(f"{name}:")
|
||||
for feature, score in enumerate(scores, start=1):
|
||||
print(f"Признак №{feature}: {score:.3f}")
|
||||
print(f"Средняя оценка признаков: {np.mean(scores):.3f}")
|
||||
print()
|
||||
|
||||
# 4 наиболее важных признака по среднему значению
|
||||
scores = np.mean(list(model_scores.values()), axis=0)
|
||||
sorted_f = sorted(enumerate(scores, start=1), key=lambda x: x[1], reverse=True)
|
||||
imp_features = sorted_f[:4]
|
||||
print("Четыре наиболее важных признака:")
|
||||
for f, score in imp_features:
|
||||
print(f"Признак №{f}: {score:.3f}")
|
||||
|
||||
generation_data_and_start()
|
||||
63105
arzamaskina_milana_lab_3/CO2.csv
Normal file
83
arzamaskina_milana_lab_3/README.md
Normal file
@@ -0,0 +1,83 @@
|
||||
## Лабораторная работа №3
|
||||
|
||||
### Деревья решений
|
||||
|
||||
## Задание:
|
||||
|
||||
+ Задача регресcии: предсказание общего объема выбросов СО2 (Total) страной (Country) за определённый год (Year).
|
||||
|
||||
+ Задача классификации: предсказание процента выбросов СО2 от добычи нефти (procent oil) страной (Country)
|
||||
с учётом общего объёма выбросов (Total) за определённый год (Year)
|
||||
(или: какая часть выбросов придётся на добычу нефти).
|
||||
|
||||
## Данные:
|
||||
|
||||
Этот набор данных обеспечивает углубленный анализ глобальных выбросов CO2 на уровне страны, позволяя лучше понять,
|
||||
какой вклад каждая страна вносит в глобальное совокупное воздействие человека на климат.
|
||||
Он содержит информацию об общих выбросах, а также от добычи и сжигания угля, нефти, газа, цемента и других источников.
|
||||
Данные также дают разбивку выбросов CO2 на душу населения по странам, показывая,
|
||||
какие страны лидируют по уровням загрязнения, и определяют потенциальные области,
|
||||
где следует сосредоточить усилия по сокращению выбросов.
|
||||
Этот набор данных необходим всем, кто хочет получить информацию о своем воздействии на окружающую среду
|
||||
или провести исследование тенденций международного развития.
|
||||
|
||||
Данные организованы с использованием следующих столбцов:
|
||||
|
||||
+ Country: название страны
|
||||
+ ISO 3166-1 alpha-3: трехбуквенный код страны
|
||||
+ Year: год данных исследования
|
||||
+ Total: общее количество CO2, выброшенный страной в этом году
|
||||
+ Coal: количество CO2, выброшенное углем в этом году
|
||||
+ Oil: количество выбросов нефти
|
||||
+ Gas: количество выбросов газа
|
||||
+ Cement: количество выбросов цемента
|
||||
+ Flaring: сжигание на факелах уровни выбросов
|
||||
+ Other: другие формы, такие как промышленные процессы
|
||||
+ Per Capita: столбец «на душу населения»
|
||||
|
||||
|
||||
### Какие технологии использовались:
|
||||
|
||||
Используемые библиотеки:
|
||||
* math
|
||||
* pandas
|
||||
* sklearn
|
||||
|
||||
### Как запустить:
|
||||
|
||||
* установить python, math, pandas, sklearn
|
||||
* запустить проект (стартовая точка - main.py)
|
||||
|
||||
### Что делает программа:
|
||||
|
||||
* Загружает набор данных из файла 'CO2.csv', который содержит информацию о выбросах странами CO2 в год от различной промышленной деятельности.
|
||||
* Очищает набор данных путём удаления строк с нулевыми значениями из набора.
|
||||
* Добавляет в набор столбец с хеш-кодом наименования страны.
|
||||
* Добавляет в набор столбец 'procent oil' - процент выбросов от добычи нефтепродуктов от общего объема выбросов страны за год (для возможности классификации).
|
||||
* Выбирает набор признаков (features) из данных, которые будут использоваться для обучения моделей регрессии и классификации.
|
||||
* Определяет задачу регрессии, где целевой переменной (task) является 'Total', и задачу классификации, где целевой переменной является 'procent oil'.
|
||||
* Делит данные на обучающий и тестовый наборы для обеих задач с использованием функции train_test_split. Тестовый набор составляет 1% от исходных данных.
|
||||
* Создает и обучает деревья решений для регрессии и классификации с использованием моделей DecisionTreeRegressor и DecisionTreeClassifier.
|
||||
* Предсказывает значения целевой переменной на тестовых наборах для обеих задач.
|
||||
* Оценивает качество моделей с помощью оценки точности (score) для регрессии и классификации.
|
||||
* Выводит важности признаков для обеих задач.
|
||||
|
||||
|
||||
#### Результаты работы программы:
|
||||
|
||||

|
||||
|
||||
### Вывод:
|
||||
|
||||
Для задачи регрессии, где целью было предсказание общего объема выбросов СО2 страной за определённый год, модель дерева решений показала оценку точности равную 0.99. Это очень хороший показатель, значит модель вполне приемлемо предсказывает объём выбросов определенной страной в определенный год.
|
||||
|
||||
Для задачи классификации, где целью было предсказать какая часть выбросов придётся на добычу нефти, модель дерева решений показала более низкую точность - 18%. Это означает, что модель классификации не справляется с предсказанием доли выбросов от добычи нефтепродуктов на основе выбранных признаков.
|
||||
Низкая точность указывает на необходимость улучшения модели или выбора других методов для решения задачи классификации.
|
||||
|
||||
Анализ важности признаков для задачи регрессии показал, что наибольший вклад в предсказание объёма выбросов страной за год вносит признак 'hashcode' или 'Country'.
|
||||
Наименование страны оказывает наибольшее влияние на результаты модели.
|
||||
Из этого можно сделать вывод, что количество выбросов CO2 определённой страной не сильно изменяется с течением времени
|
||||
и каждая страна ежегодно производит примерно одинаковый объём выбросов CO2, что может быть связано с наличием месторождений ископаемых.
|
||||
|
||||
Для задачи классификации наибольший вклад в предсказание стоимости жилья вносят признаки 'Year' и 'Total'.
|
||||
Эти признаки имеют наибольшее значение при определении классов по объёму выбросов от добычи нефтепродуктов.
|
||||
BIN
arzamaskina_milana_lab_3/img.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
96
arzamaskina_milana_lab_3/main.py
Normal file
@@ -0,0 +1,96 @@
|
||||
import math
|
||||
import pandas as pd
|
||||
from sklearn.tree import DecisionTreeClassifier, DecisionTreeRegressor
|
||||
from sklearn.model_selection import train_test_split
|
||||
|
||||
### Деревья решений для регрессии и классификации
|
||||
### с использованием моделей DecisionTreeRegressor и DecisionTreeClassifier
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv('CO2.csv')
|
||||
data = data.dropna()
|
||||
|
||||
# Хеширование наименований стран
|
||||
countries = {}
|
||||
for country in data['Country']:
|
||||
countries[country] = hash(country)
|
||||
hash_column = []
|
||||
for country in data['Country']:
|
||||
hash_column.append(countries[country])
|
||||
data.insert(loc=0, column='hashcode', value=hash_column)
|
||||
|
||||
# Добавление колонки "процент выбросов от добычи нефти в стране за год" для классификации
|
||||
procent_oil = []
|
||||
oils = []
|
||||
totals = []
|
||||
for oil in data['Oil']:
|
||||
oils.append(oil)
|
||||
for total in data['Total']:
|
||||
totals.append(total)
|
||||
for i in range(len(oils)):
|
||||
procent_oil.append(math.ceil(oils[i]/totals[i]*100))
|
||||
data.insert(loc=0, column='procent oil', value=procent_oil)
|
||||
|
||||
#------ Дерево решений для регрессии ------#
|
||||
|
||||
# ЗАДАЧА: предсказание общего объема выбросов СО2 страной за определённый год.
|
||||
|
||||
# Необходимые признаки для дерева регрессии
|
||||
features_for_regr = data[['Year', 'hashcode']]
|
||||
# Задача дерева регрессии
|
||||
task_regr = data['Total']
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы для регрессии
|
||||
X_train_r, X_test_r, \
|
||||
y_train_r, y_test_r = train_test_split(features_for_regr, task_regr, test_size=0.01, random_state=250)
|
||||
|
||||
# Создание и обучение дерева решений для регрессии
|
||||
model_regr = DecisionTreeRegressor(random_state=250)
|
||||
model_regr.fit(X_train_r, y_train_r)
|
||||
|
||||
# Предсказание на тестовом наборе для регрессии
|
||||
y_pred_r = model_regr.predict(X_test_r)
|
||||
|
||||
# Точечная оценка модели
|
||||
score_r = model_regr.score(X_test_r, y_test_r)
|
||||
print("\n\nТочность дерева регрессии:", score_r)
|
||||
|
||||
# Важности признаков для дерева регрессии
|
||||
imp_regr = model_regr.feature_importances_
|
||||
|
||||
print("Важность признаков для дерева регрессии: ")
|
||||
print("Важность 'Year':", imp_regr[0])
|
||||
print("Важность 'hashcode':", imp_regr[1], "\n\n")
|
||||
|
||||
#------ Дерево решений для классификации ------#
|
||||
|
||||
# ЗАДАЧА: предсказание процента выбросов СО2 от добычи нефти страной за определённый год
|
||||
# с учётом общего объёма выбросов за год (или: какая часть выбросов придётся на добычу нефти).
|
||||
|
||||
# Необходимые признаки для дерева классификации
|
||||
features_for_class = data[['Total', 'Year', 'hashcode']]
|
||||
# Задача дерева классификации
|
||||
task_class = data['procent oil']
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы для классификации
|
||||
X_train_c, X_test_c, \
|
||||
y_train_c, y_test_c = train_test_split(features_for_class, task_class, test_size=0.01, random_state=250)
|
||||
|
||||
# Создание и обучение дерева решений для классификации
|
||||
model_class = DecisionTreeClassifier(random_state=250)
|
||||
model_class.fit(X_train_c, y_train_c)
|
||||
|
||||
# Предсказание на тестовом наборе для классификации
|
||||
y_pred_c = model_class.predict(X_test_c)
|
||||
|
||||
# Точечная оценка модели
|
||||
score_c = model_class.score(X_test_c, y_test_c)
|
||||
print("Точность дерева классификации:", score_c)
|
||||
|
||||
# Важности признаков для дерева классификации
|
||||
imp_class = model_class.feature_importances_
|
||||
|
||||
print("Важность признаков для дерева классификации: ")
|
||||
print("Важность 'Total':", imp_class[0])
|
||||
print("Важность 'Year':", imp_class[1])
|
||||
print("Важность 'hashcode':", imp_class[2])
|
||||
42
basharin_sevastyan_lab_2/README.md
Normal file
@@ -0,0 +1,42 @@
|
||||
## Лабораторная работа 2. Вариант 5.
|
||||
### Задание
|
||||
Выполнить ранжирование признаков. Отобразить получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку. Провести анализ получившихся результатов. Какие четыре признака оказались самыми важными по среднему значению?
|
||||
|
||||
Модели:
|
||||
|
||||
- Гребневая регрессия `Ridge`,
|
||||
- Рекурсивное сокращение признаков `Recursive Feature Elimination – RFE`,
|
||||
- Сокращение признаков Случайными деревьями `Random Forest Regressor`
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
|
||||
### Используемые технологии
|
||||
- `numpy` (псевдоним `np`): NumPy - это библиотека для научных вычислений в Python.
|
||||
- `sklearn` (scikit-learn): Scikit-learn - это библиотека для машинного обучения и анализа данных в Python. Из данной библиотеки были использованы следующие модули:
|
||||
- `LinearRegression` - линейная регрессия - это алгоритм машинного обучения, используемый для задач бинарной классификации.
|
||||
- `Ridge` - инструмент работы с моделью "Гребневая регрессия"
|
||||
- `RFE` - инструмент оценки важности признаков "Рекурсивное сокращение признаков"
|
||||
- `RandomForestRegressor` - инструмент работы с моделью "Регрессор случайного леса"
|
||||
|
||||
### Описание работы
|
||||
1. Программа генерирует данные для обучения моделей, содержащие матрицу признаков X и вектор целевой переменной y.
|
||||
1. Создает DataFrame data, в котором столбцы представляют признаки, а последний столбец - целевую переменную.
|
||||
1. Разделяет данные на матрицу признаков X и вектор целевой переменной y
|
||||
1. Создает список обученных моделей для ранжирования признаков: гребневой регрессии, рекурсивного сокращения признаков и сокращения признаков случайными деревьями.
|
||||
1. Создает словарь model_scores для хранения оценок каждой модели.
|
||||
1. Выводит оценки признаков каждой модели и их средние оценки.
|
||||
1. Находит четыре наиболее важных признака по средней оценке и выводит их индексы и значения.
|
||||
|
||||
### Результат работы
|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
### Вывод
|
||||
Четыре наиболее важных признака, определенных на основе средних оценок, включают
|
||||
Признак 1, Признак 3, Признак 12 и Признак 6.
|
||||
67
basharin_sevastyan_lab_2/main.py
Normal file
@@ -0,0 +1,67 @@
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from sklearn.datasets import make_regression
|
||||
from sklearn.linear_model import Ridge, LinearRegression
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.feature_selection import RFE
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
|
||||
''' Задание
|
||||
Используя код из [1](пункт «Решение задачи ранжирования признаков», стр. 205), выполните ранжирование признаков с
|
||||
помощью указанных по вариантумоделей. Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и
|
||||
среднюю оценку. Проведите анализ получившихся результатов. Какие четырепризнака оказались самыми важными по среднему
|
||||
значению? (Названия\индексы признаков и будут ответом на задание).
|
||||
|
||||
Вариант 5.
|
||||
Гребневая регрессия (Ridge), Рекурсивное сокращение признаков (Recursive Feature Elimination – RFE),
|
||||
Сокращение признаков Случайными деревьями (Random Forest Regressor).
|
||||
'''
|
||||
|
||||
# создание данных
|
||||
random_state = np.random.RandomState(2)
|
||||
X, y = make_regression(n_samples=750, n_features=15, noise=0.1, random_state=random_state)
|
||||
data = pd.DataFrame(X, columns=[f'Признак {i}' for i in range(X.shape[1])])
|
||||
data['Целевая переменная'] = y
|
||||
X = data.drop('Целевая переменная', axis=1)
|
||||
y = data['Целевая переменная']
|
||||
|
||||
ridge = Ridge(alpha=1) # Гребневая регрессия
|
||||
ridge.fit(X, y)
|
||||
|
||||
recFE = RFE(LinearRegression(), n_features_to_select=1) # Рекурсивное сокращение признаков
|
||||
recFE.fit(X, y)
|
||||
|
||||
rfr = RandomForestRegressor() # Сокращение признаков Случайными деревьями
|
||||
rfr.fit(X, y)
|
||||
|
||||
models = [('Ridge', ridge),
|
||||
('RFE', recFE),
|
||||
('RFR', rfr)]
|
||||
model_scores = []
|
||||
|
||||
for name, model in models:
|
||||
if name == 'Ridge':
|
||||
coef = model.coef_
|
||||
normalized_coef = MinMaxScaler().fit_transform(coef.reshape(-1, 1))
|
||||
model_scores.append((name, normalized_coef.flatten()))
|
||||
elif name == 'RFE':
|
||||
rankings = model.ranking_
|
||||
normalized_rankings = 1 - (rankings - 1) / (np.max(rankings) - 1)
|
||||
model_scores.append((name, normalized_rankings))
|
||||
elif name == 'RFR':
|
||||
feature_importances = model.feature_importances_
|
||||
normalized_importances = MinMaxScaler().fit_transform(feature_importances.reshape(-1, 1))
|
||||
model_scores.append((name, normalized_importances.flatten()))
|
||||
|
||||
for name, scores in model_scores:
|
||||
print(f"{name} оценки признаков:")
|
||||
for feature, score in enumerate(scores, start=1):
|
||||
print(f"Признак {feature}: {score:.2f}")
|
||||
print(f"Средняя оценка: {np.mean(scores):.2f}")
|
||||
|
||||
all_feature_scores = np.mean(list(map(lambda x: x[1], model_scores)), axis=0)
|
||||
sorted_features = sorted(enumerate(all_feature_scores, start=1), key=lambda x: x[1], reverse=True)
|
||||
top_features = sorted_features[:4]
|
||||
print("Четыре наиболее важных признака:")
|
||||
for feature, score in top_features:
|
||||
print(f"Признак {feature}: {score:.2f}")
|
||||
BIN
basharin_sevastyan_lab_2/res.png
Normal file
|
After Width: | Height: | Size: 6.0 KiB |
BIN
basharin_sevastyan_lab_2/rfe.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
basharin_sevastyan_lab_2/rfr.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
basharin_sevastyan_lab_2/ridge.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
46023
basharin_sevastyan_lab_3/Data_pakwheels.csv
Normal file
93
basharin_sevastyan_lab_3/README.md
Normal file
@@ -0,0 +1,93 @@
|
||||
## Лабораторная работа 3. Вариант 4.
|
||||
### Задание
|
||||
Выполнить ранжирование признаков и решить с помощью библиотечной реализации дерева решений
|
||||
задачу классификации на 99% данных из курсовой работы. Проверить
|
||||
работу модели на оставшемся проценте, сделать вывод.
|
||||
|
||||
Модель:
|
||||
- Дерево решений `DecisionTreeClassifier`.
|
||||
|
||||
### Как запустить
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
``` python
|
||||
python main.py
|
||||
```
|
||||
|
||||
### Используемые технологии
|
||||
- Библиотека `pandas`, используемая для работы с данными для анализа scv формата.
|
||||
- `sklearn` (scikit-learn): Scikit-learn - это библиотека для машинного обучения и анализа данных в Python. Из данной библиотеки были использованы следующие модули:
|
||||
- `metrics` - набор инструменов для оценки моделей
|
||||
- `DecisionTreeClassifier` - классификатор, реализующий алгоритм дерева решений. Дерево решений - это модель машинного обучения, которая разбивает данные на рекурсивные решения на основе значений признаков. Она используется для задач классификации и регрессии.
|
||||
- `accuracy_score` -функция из scikit-learn, которая используется для оценки производительности модели классификации путем вычисления доли правильно классифицированных примеров (точности) на тестовом наборе данных.
|
||||
- `train_test_split` - это функция из scikit-learn, используемая для разделения набора данных на обучающий и тестовый наборы.
|
||||
- `LabelEncoder` - это класс из scikit-learn, используемый для преобразования категориальных признаков (например, строки) в числовые значения.
|
||||
|
||||
### Описание работы
|
||||
#### Описание набора данных
|
||||
Набор данных: набор данных о цене автомобиля в автопарке.
|
||||
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
- Id: Уникальный идентификатор для каждого автомобиля в списке.
|
||||
- Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
|
||||
- Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
|
||||
- Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
|
||||
- Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
|
||||
- Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
|
||||
- Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
|
||||
- Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
|
||||
- Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
|
||||
- Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
|
||||
- Assembly: Импорт или местный рынок.
|
||||
- Body Type: Тип кузова.
|
||||
- Transmission Type: Тип трансмиссии.
|
||||
- Registration Status: Статус регистрации.
|
||||
|
||||
Ссылка на страницу набора на kuggle: [Ultimate Car Price Prediction Dataset](https://www.kaggle.com/datasets/mohidabdulrehman/ultimate-car-price-prediction-dataset/data)
|
||||
|
||||
#### Оцифровка и нормализация данных
|
||||
Для нормальной работы с данными, необходимо исключить из них все нечисловые значения.
|
||||
После этого, представить все строковые значения параметров как числовые и очистить датасет от "мусора".
|
||||
Для удаления нечисловых значений воспользуемся функцией `.dropna()`.
|
||||
Так же мы удаляем первый столбец `Id`, так как при открытии файла в `pd` он сам нумерует строки.
|
||||
|
||||
Все нечисловые значения мы преобразуем в числовые с помощью `LabelEncoder`:
|
||||
```python
|
||||
label_encoder = LabelEncoder()
|
||||
data['Location'] = label_encoder.fit_transform(data['Location'])
|
||||
data['Company Name'] = label_encoder.fit_transform(data['Company Name'])
|
||||
data['Model Name'] = label_encoder.fit_transform(data['Model Name'])
|
||||
data['Engine Type'] = label_encoder.fit_transform(data['Engine Type'])
|
||||
data['Color'] = label_encoder.fit_transform(data['Color'])
|
||||
data['Assembly'] = label_encoder.fit_transform(data['Assembly'])
|
||||
data['Body Type'] = label_encoder.fit_transform(data['Body Type'])
|
||||
data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'])
|
||||
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])
|
||||
```
|
||||
|
||||
#### Выявление значимых параметров
|
||||
```python
|
||||
# Оценка важности признаков
|
||||
feature_importances = clf.feature_importances_
|
||||
feature_importance_df = pd.DataFrame({'Feature': X_train.columns, 'Importance': feature_importances})
|
||||
feature_importance_df = feature_importance_df.sort_values(by='Importance', ascending=False)
|
||||
```
|
||||
|
||||
#### Решение задачи кластеризации на полном наборе признаков
|
||||
Чтобы решить задачу кластеризации моделью `DecisionTreeClassifier`, воспользуемся методом `.predict()`.
|
||||
```python
|
||||
clf = DecisionTreeClassifier(max_depth=5, random_state=42)
|
||||
clf.fit(X_train, y_train)
|
||||
y_pred = clf.predict(X_test)
|
||||
```
|
||||
|
||||
#### Оценка эффективности
|
||||
Для оценки точности модели будем использовать встроенный инструмент `accuracy_score`:
|
||||
```python
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
```
|
||||
|
||||
#### Результаты
|
||||

|
||||
|
||||

|
||||
BIN
basharin_sevastyan_lab_3/accuracy.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
basharin_sevastyan_lab_3/important.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
78
basharin_sevastyan_lab_3/main.py
Normal file
@@ -0,0 +1,78 @@
|
||||
import pandas as pd
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
from sklearn.metrics import accuracy_score
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
|
||||
''' Названия столбцов набора данных и их описание:
|
||||
Id: Уникальный идентификатор для каждого автомобиля в списке.
|
||||
Price: Ценовой диапазон автомобилей с конкретными ценниками и подсчетами. (111000 - 77500000)
|
||||
Company Name: Название компании-производителя автомобилей с указанием процентной доли представительства каждой компании.
|
||||
Model Name: Название модели автомобилей с указанием процентного соотношения каждой модели.
|
||||
Model Year: Диапазон лет выпуска автомобилей с указанием количества и процентных соотношений. (1990 - 2019)
|
||||
Location: Местоположение автомобилей с указанием регионов, где они доступны для покупки, а также их процентное соотношение.
|
||||
Mileage: Информация о пробеге автомобилей с указанием диапазонов пробега, количества и процентов. (1 - 999999)
|
||||
Engine Type: Описания типов двигателей с процентными соотношениями для каждого типа.
|
||||
Engine Capacity: Мощность двигателя варьируется в зависимости от количества и процентов. (16 - 6600)
|
||||
Color: Цветовое распределение автомобилей с указанием процентных соотношений для каждого цвета.
|
||||
'''
|
||||
|
||||
|
||||
# Загрузите данные из вашей курсовой работы, предположим, что у вас есть файл CSV.
|
||||
data = pd.read_csv('Data_pakwheels.csv')
|
||||
data.pop("Id")
|
||||
|
||||
data.dropna(inplace=True) # Удаление строки с пропущенными значениями.
|
||||
|
||||
# Преобразуйте категориальные признаки в числовые. Используйте, например, one-hot encoding.
|
||||
# data = pd.get_dummies(data, columns=['Company Name', 'Model Name', 'Location', 'Engine Type', 'Color'])
|
||||
|
||||
# Создайте объект LabelEncoder
|
||||
label_encoder = LabelEncoder()
|
||||
|
||||
data['Location'] = label_encoder.fit_transform(data['Location'])
|
||||
data['Company Name'] = label_encoder.fit_transform(data['Company Name'])
|
||||
data['Model Name'] = label_encoder.fit_transform(data['Model Name'])
|
||||
data['Engine Type'] = label_encoder.fit_transform(data['Engine Type'])
|
||||
data['Color'] = label_encoder.fit_transform(data['Color'])
|
||||
data['Assembly'] = label_encoder.fit_transform(data['Assembly'])
|
||||
data['Body Type'] = label_encoder.fit_transform(data['Body Type'])
|
||||
data['Transmission Type'] = label_encoder.fit_transform(data['Transmission Type'])
|
||||
data['Registration Status'] = label_encoder.fit_transform(data['Registration Status'])
|
||||
|
||||
# Разделение данных на обучающий набор и тестовый набор. Мы будем использовать 99% данных для обучения.
|
||||
train_data, test_data = train_test_split(data, test_size=0.01, random_state=42)
|
||||
|
||||
# Определите целевую переменную (то, что вы пытаетесь предсказать, например, 'Price').
|
||||
X_train = train_data.drop(columns=['Price'])
|
||||
y_train = train_data['Price']
|
||||
X_test = test_data.drop(columns=['Price'])
|
||||
y_test = test_data['Price']
|
||||
|
||||
# Создание и обучение модели DecisionTreeClassifier
|
||||
clf = DecisionTreeClassifier(random_state=42)
|
||||
clf.fit(X_train, y_train)
|
||||
|
||||
# Оценка важности признаков
|
||||
feature_importances = clf.feature_importances_
|
||||
|
||||
# Создание DataFrame с именами признаков и их важностью
|
||||
feature_importance_df = pd.DataFrame({'Feature': X_train.columns, 'Importance': feature_importances})
|
||||
|
||||
# Сортировка признаков по убыванию важности
|
||||
feature_importance_df = feature_importance_df.sort_values(by='Importance', ascending=False)
|
||||
|
||||
# Вывод ранжированных признаков
|
||||
print(feature_importance_df)
|
||||
|
||||
clf = DecisionTreeClassifier(max_depth=5, random_state=42)
|
||||
|
||||
# Обучите модель на обучающем наборе данных
|
||||
clf.fit(X_train, y_train)
|
||||
|
||||
# Предсказание целевой переменной на тестовом наборе данных
|
||||
y_pred = clf.predict(X_test)
|
||||
|
||||
# Оцените производительность модели с помощью различных метрик
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
print(f'Точность модели: {accuracy}')
|
||||
46023
basharin_sevastyan_lab_3/norm_data.csv
Normal file
125
belyaeva_ekaterina_lab_3/Current_Pub_Meta.csv
Normal file
@@ -0,0 +1,125 @@
|
||||
,Name,Primary Attribute,Roles,Herald Picks,Herald Wins,Herald Win Rate,Guardian Picks,Guardian Wins,Guardian Win Rate,Crusader Picks,Crusader Wins,Crusader Win Rate,Archon Picks,Archon Wins,Archon Win Rate,Legend Picks,Legend Wins,Legend Win Rate,Ancient Picks,Ancient Wins,Ancient Win Rate,Divine Picks,Divine Wins,Divine Win Rate,Immortal Picks,Immortal Wins,Immortal Win Rate
|
||||
0,Abaddon,all,"Support, Carry, Durable",1111,575,51.76,6408,3309,51.64,13811,7050,51.05,16497,8530,51.71,11360,5877,51.73,5571,2893,51.93,2632,1345,51.1,991,497,50.15
|
||||
1,Alchemist,str,"Carry, Support, Durable, Disabler, Initiator, Nuker",1119,486,43.43,6370,2883,45.26,12238,5617,45.9,13028,6130,47.05,8455,4055,47.96,4120,1984,48.16,2021,1023,50.62,860,424,49.3
|
||||
2,Ancient Apparition,int,"Support, Disabler, Nuker",2146,1073,50.0,13697,7069,51.61,30673,16118,52.55,35145,18219,51.84,23114,12166,52.63,10688,5528,51.72,5035,2573,51.1,2134,1076,50.42
|
||||
3,Anti-Mage,agi,"Carry, Escape, Nuker",3765,1818,48.29,22050,10774,48.86,47371,23304,49.19,49115,24074,49.02,28599,13991,48.92,12303,5958,48.43,4866,2349,48.27,1502,751,50.0
|
||||
4,Arc Warden,agi,"Carry, Escape, Nuker",1448,704,48.62,8047,4162,51.72,14946,7982,53.41,14711,7875,53.53,9472,5167,54.55,4323,2309,53.41,2104,1148,54.56,789,435,55.13
|
||||
5,Axe,str,"Initiator, Durable, Disabler, Carry",5343,2880,53.9,32652,17719,54.27,71010,37736,53.14,77869,40559,52.09,49182,25079,50.99,22637,11353,50.15,10114,5000,49.44,3795,1837,48.41
|
||||
6,Bane,all,"Support, Disabler, Nuker, Durable",745,334,44.83,4983,2422,48.61,11332,5504,48.57,13633,6767,49.64,10132,5032,49.66,5596,2861,51.13,3028,1555,51.35,1958,1055,53.88
|
||||
7,Batrider,all,"Initiator, Disabler, Escape",349,136,38.97,1983,812,40.95,4053,1595,39.35,4725,1861,39.39,3173,1275,40.18,1678,731,43.56,802,362,45.14,497,227,45.67
|
||||
8,Beastmaster,all,"Initiator, Disabler, Durable, Nuker",402,174,43.28,2447,1060,43.32,5787,2569,44.39,6930,3092,44.62,5288,2389,45.18,2816,1274,45.24,1593,752,47.21,1176,539,45.83
|
||||
9,Bloodseeker,agi,"Carry, Disabler, Nuker, Initiator",2765,1382,49.98,12589,6270,49.81,21781,10683,49.05,20961,10420,49.71,13035,6430,49.33,6210,3006,48.41,2941,1475,50.15,1465,718,49.01
|
||||
10,Bounty Hunter,agi,"Escape, Nuker",3852,1868,48.49,19609,9535,48.63,36362,17600,48.4,37059,18314,49.42,22934,11518,50.22,10584,5276,49.85,5105,2594,50.81,2498,1325,53.04
|
||||
11,Brewmaster,all,"Carry, Initiator, Durable, Disabler, Nuker",545,280,51.38,3564,1745,48.96,8941,4388,49.08,12340,6111,49.52,11185,5623,50.27,7645,3906,51.09,4812,2478,51.5,3533,1820,51.51
|
||||
12,Bristleback,str,"Carry, Durable, Initiator, Nuker",5884,3262,55.44,27952,14587,52.19,48847,24379,49.91,46702,22927,49.09,27466,13319,48.49,12398,5969,48.14,5865,2915,49.7,2639,1304,49.41
|
||||
13,Broodmother,all,"Carry, Pusher, Escape, Nuker",456,173,37.94,2048,842,41.11,3444,1462,42.45,3392,1448,42.69,2193,1048,47.79,1203,602,50.04,795,422,53.08,453,230,50.77
|
||||
14,Centaur Warrunner,str,"Durable, Initiator, Disabler, Nuker, Escape",1721,911,52.93,11754,6266,53.31,28691,15201,52.98,35369,18741,52.99,25393,13468,53.04,12653,6607,52.22,6124,3181,51.94,2442,1243,50.9
|
||||
15,Chaos Knight,str,"Carry, Disabler, Durable, Pusher, Initiator",3032,1639,54.06,16762,8931,53.28,31892,17139,53.74,30697,16435,53.54,18217,9810,53.85,8572,4620,53.9,4230,2291,54.16,1750,943,53.89
|
||||
16,Chen,all,"Support, Pusher",284,125,44.01,1450,678,46.76,2969,1345,45.3,3258,1604,49.23,2641,1331,50.4,1488,767,51.55,970,512,52.78,770,448,58.18
|
||||
17,Clinkz,agi,"Carry, Escape, Pusher",3151,1608,51.03,13891,7141,51.41,25465,12938,50.81,27327,14066,51.47,18846,9726,51.61,9452,4890,51.74,4765,2475,51.94,2093,1052,50.26
|
||||
18,Clockwerk,all,"Initiator, Disabler, Durable, Nuker",816,397,48.65,5860,2837,48.41,14478,6929,47.86,18466,8843,47.89,13143,6301,47.94,6612,3169,47.93,3286,1581,48.11,1378,658,47.75
|
||||
19,Crystal Maiden,int,"Support, Disabler, Nuker",4821,2529,52.46,26584,13626,51.26,52168,26040,49.92,52258,25365,48.54,30690,14848,48.38,13295,6404,48.17,5602,2680,47.84,1638,771,47.07
|
||||
20,Dark Seer,all,"Initiator, Escape, Disabler",627,320,51.04,3675,1884,51.27,7881,3803,48.26,9589,4844,50.52,7186,3573,49.72,3902,1983,50.82,2145,1095,51.05,1217,593,48.73
|
||||
21,Dark Willow,all,"Support, Nuker, Disabler, Escape",2654,1293,48.72,13829,6657,48.14,28142,13480,47.9,32114,15785,49.15,23100,11331,49.05,12052,5909,49.03,6400,3182,49.72,3708,1915,51.65
|
||||
22,Dawnbreaker,str,"Carry, Durable",1746,875,50.11,12297,6105,49.65,32398,15921,49.14,44846,21936,48.91,35474,17441,49.17,19770,9832,49.73,10637,5263,49.48,6339,3173,50.06
|
||||
23,Dazzle,all,"Support, Nuker, Disabler",2827,1418,50.16,19852,9758,49.15,48236,23691,49.11,56417,27798,49.27,38159,18642,48.85,18695,9199,49.21,8530,4239,49.7,3382,1654,48.91
|
||||
24,Death Prophet,int,"Carry, Pusher, Nuker, Disabler",1372,659,48.03,6643,3145,47.34,11987,5729,47.79,12268,5856,47.73,7455,3606,48.37,3591,1698,47.28,1872,902,48.18,926,459,49.57
|
||||
25,Disruptor,int,"Support, Disabler, Nuker, Initiator",1541,757,49.12,11104,5331,48.01,27746,13542,48.81,33742,16310,48.34,23173,11096,47.88,10907,5201,47.68,4859,2255,46.41,1863,861,46.22
|
||||
26,Doom,str,"Carry, Disabler, Initiator, Durable, Nuker",1049,474,45.19,6112,2767,45.27,13700,6056,44.2,15454,6925,44.81,10727,4842,45.14,5444,2451,45.02,2979,1348,45.25,1545,731,47.31
|
||||
27,Dragon Knight,str,"Carry, Pusher, Durable, Disabler, Initiator, Nuker",1950,942,48.31,10643,5274,49.55,20451,9733,47.59,20326,9671,47.58,11674,5544,47.49,4979,2355,47.3,2024,973,48.07,725,341,47.03
|
||||
28,Drow Ranger,agi,"Carry, Disabler, Pusher",5737,2904,50.62,29675,14831,49.98,57655,28573,49.56,56682,27927,49.27,34310,16607,48.4,15050,7171,47.65,5947,2815,47.33,1768,788,44.57
|
||||
29,Earth Spirit,str,"Nuker, Escape, Disabler, Initiator, Durable",1038,465,44.8,7420,3276,44.15,20807,9432,45.33,30107,14166,47.05,25314,12148,47.99,14579,7041,48.3,7678,3802,49.52,4379,2169,49.53
|
||||
30,Earthshaker,str,"Support, Initiator, Disabler, Nuker",5012,2455,48.98,29784,14662,49.23,67050,33111,49.38,79963,39843,49.83,57108,28961,50.71,28650,14591,50.93,14186,7296,51.43,6151,3165,51.46
|
||||
31,Elder Titan,str,"Initiator, Disabler, Nuker, Durable",471,212,45.01,2551,1248,48.92,5213,2570,49.3,5572,2809,50.41,3847,1942,50.48,1964,998,50.81,1124,613,54.54,550,292,53.09
|
||||
32,Ember Spirit,agi,"Carry, Escape, Nuker, Disabler, Initiator",1514,635,41.94,9180,3836,41.79,20578,8738,42.46,25152,10844,43.11,17703,7814,44.14,8538,3793,44.42,4265,1892,44.36,2065,928,44.94
|
||||
33,Enchantress,int,"Support, Pusher, Durable, Disabler",1794,848,47.27,8050,3622,44.99,12921,5686,44.01,11673,4974,42.61,6863,2840,41.38,2948,1212,41.11,1434,654,45.61,806,318,39.45
|
||||
34,Enigma,all,"Disabler, Initiator, Pusher",1317,588,44.65,6937,3171,45.71,12908,5979,46.32,11687,5428,46.44,6194,2839,45.83,2493,1127,45.21,938,437,46.59,338,159,47.04
|
||||
35,Faceless Void,agi,"Carry, Initiator, Disabler, Escape, Durable",4323,2043,47.26,25618,11902,46.46,54581,25874,47.4,60671,28993,47.79,40137,19611,48.86,19376,9620,49.65,9579,4828,50.4,4439,2256,50.82
|
||||
36,Grimstroke,int,"Support, Nuker, Disabler, Escape",1455,694,47.7,9714,4789,49.3,24688,12430,50.35,32027,16094,50.25,23193,11795,50.86,12102,6100,50.4,6191,3047,49.22,3449,1666,48.3
|
||||
37,Gyrocopter,agi,"Carry, Nuker, Disabler",2560,1213,47.38,16589,7882,47.51,42072,20358,48.39,54200,26229,48.39,39414,19053,48.34,20164,9781,48.51,10164,4937,48.57,5241,2507,47.83
|
||||
38,Hoodwink,agi,"Support, Nuker, Escape, Disabler",2420,1126,46.53,14034,6800,48.45,31382,14964,47.68,35684,16966,47.55,22626,10651,47.07,9949,4690,47.14,4349,2089,48.03,1533,703,45.86
|
||||
39,Huskar,str,"Carry, Durable, Initiator",3501,1603,45.79,14234,6639,46.64,22794,10912,47.87,21801,10763,49.37,13811,6919,50.1,6769,3535,52.22,3556,1822,51.24,1936,993,51.29
|
||||
40,Invoker,all,"Carry, Nuker, Disabler, Escape, Pusher",4330,2042,47.16,27625,13176,47.7,69035,33863,49.05,86745,43479,50.12,61821,31510,50.97,31459,16321,51.88,15431,8195,53.11,7852,4148,52.83
|
||||
41,Io,all,"Support, Escape, Nuker",1274,615,48.27,6158,2999,48.7,12762,6247,48.95,14216,7024,49.41,9564,4843,50.64,5301,2685,50.65,2789,1463,52.46,1464,773,52.8
|
||||
42,Jakiro,int,"Support, Nuker, Pusher, Disabler",3147,1708,54.27,22718,12413,54.64,56736,30984,54.61,70038,37473,53.5,46389,24997,53.89,22084,11639,52.7,9838,5103,51.87,3282,1729,52.68
|
||||
43,Juggernaut,agi,"Carry, Pusher, Escape",5585,2711,48.54,30394,14800,48.69,62313,30581,49.08,65590,32344,49.31,39235,19326,49.26,16334,8012,49.05,6419,3066,47.76,1576,731,46.38
|
||||
44,Keeper of the Light,int,"Support, Nuker, Disabler",896,353,39.4,5051,2216,43.87,10452,4579,43.81,11614,5322,45.82,7870,3627,46.09,4268,2001,46.88,2147,1043,48.58,1333,588,44.11
|
||||
45,Kunkka,str,"Carry, Support, Disabler, Initiator, Durable, Nuker",2251,1124,49.93,13474,6828,50.68,31210,16196,51.89,39691,21293,53.65,30314,16458,54.29,15706,8793,55.98,7884,4339,55.04,3458,1898,54.89
|
||||
46,Legion Commander,str,"Carry, Disabler, Initiator, Durable, Nuker",6263,3264,52.12,37100,19157,51.64,81491,41557,51.0,91431,46558,50.92,59383,29917,50.38,27945,13917,49.8,13193,6587,49.93,5601,2745,49.01
|
||||
47,Leshrac,int,"Carry, Support, Nuker, Pusher, Disabler",674,316,46.88,3872,1799,46.46,7490,3433,45.83,7903,3604,45.6,5322,2526,47.46,2687,1298,48.31,1325,647,48.83,721,357,49.51
|
||||
48,Lich,int,"Support, Nuker",2700,1412,52.3,16646,8820,52.99,37785,19685,52.1,45471,23554,51.8,31203,16108,51.62,15530,7821,50.36,7243,3597,49.66,2520,1258,49.92
|
||||
49,Lifestealer,str,"Carry, Durable, Escape, Disabler",2515,1213,48.23,14131,6978,49.38,29724,14627,49.21,31211,15581,49.92,18970,9481,49.98,8689,4400,50.64,3630,1821,50.17,1229,617,50.2
|
||||
50,Lina,int,"Support, Carry, Nuker, Disabler",4512,2030,44.99,21927,10156,46.32,45301,21210,46.82,54229,25956,47.86,40016,19138,47.83,21072,10112,47.99,10481,5031,48.0,4369,2138,48.94
|
||||
51,Lion,int,"Support, Disabler, Nuker, Initiator",6204,2855,46.02,37869,17465,46.12,80124,36649,45.74,84390,38176,45.24,50720,22914,45.18,21698,9784,45.09,9308,4280,45.98,3220,1496,46.46
|
||||
52,Lone Druid,all,"Carry, Pusher, Durable",909,483,53.14,4714,2421,51.36,10987,5858,53.32,14580,7968,54.65,11810,6490,54.95,7241,3971,54.84,4024,2240,55.67,2303,1259,54.67
|
||||
53,Luna,agi,"Carry, Nuker, Pusher",1927,904,46.91,9091,4271,46.98,16571,7922,47.81,16035,7615,47.49,9728,4634,47.64,4463,2103,47.12,1912,911,47.65,719,322,44.78
|
||||
54,Lycan,all,"Carry, Pusher, Durable, Escape",374,174,46.52,1894,915,48.31,3691,1744,47.25,3824,1905,49.82,2694,1332,49.44,1460,753,51.58,827,411,49.7,532,289,54.32
|
||||
55,Magnus,all,"Initiator, Disabler, Nuker, Escape",770,339,44.03,5789,2651,45.79,17837,7954,44.59,26126,12058,46.15,20634,9592,46.49,10574,5056,47.82,4565,2073,45.41,1606,751,46.76
|
||||
56,Marci,all,"Support, Carry, Initiator, Disabler, Escape",1370,620,45.26,7092,3252,45.85,15199,7240,47.63,18485,8874,48.01,13308,6305,47.38,7176,3476,48.44,3689,1882,51.02,1746,883,50.57
|
||||
57,Mars,str,"Carry, Initiator, Disabler, Durable",862,375,43.5,5719,2529,44.22,15156,6756,44.58,20719,9369,45.22,16419,7387,44.99,9044,4052,44.8,4536,2093,46.14,1926,868,45.07
|
||||
58,Medusa,agi,"Carry, Disabler, Durable",1898,902,47.52,9289,4512,48.57,16504,7818,47.37,14796,6886,46.54,7488,3449,46.06,2775,1270,45.77,1073,482,44.92,394,184,46.7
|
||||
59,Meepo,agi,"Carry, Escape, Nuker, Disabler, Initiator, Pusher",1004,523,52.09,3970,1990,50.13,6904,3587,51.96,7166,3646,50.88,4906,2563,52.24,2383,1282,53.8,1139,588,51.62,585,300,51.28
|
||||
60,Mirana,all,"Carry, Support, Escape, Nuker, Disabler",2499,1193,47.74,16954,8135,47.98,39985,19097,47.76,45169,21554,47.72,28467,13456,47.27,12800,6047,47.24,5272,2500,47.42,1824,874,47.92
|
||||
61,Monkey King,agi,"Carry, Escape, Disabler, Initiator",3191,1384,43.37,17306,7544,43.59,35734,16113,45.09,40778,18322,44.93,27558,12630,45.83,14034,6433,45.84,6650,3152,47.4,3040,1440,47.37
|
||||
62,Morphling,agi,"Carry, Escape, Durable, Nuker, Disabler",1521,690,45.36,8620,4006,46.47,18075,8161,45.15,20414,9235,45.24,14395,6530,45.36,7697,3551,46.13,4432,2050,46.25,2560,1190,46.48
|
||||
63,Muerta,int,"Carry, Nuker, Disabler",2130,1089,51.13,10787,5740,53.21,22602,11898,52.64,27609,14495,52.5,20175,10465,51.87,10662,5518,51.75,5462,2759,50.51,2948,1517,51.46
|
||||
64,Naga Siren,agi,"Carry, Support, Pusher, Disabler, Initiator, Escape",1502,804,53.53,6495,3356,51.67,10423,5234,50.22,9830,4929,50.14,6057,2971,49.05,3216,1675,52.08,1855,933,50.3,1242,634,51.05
|
||||
65,Nature's Prophet,int,"Carry, Pusher, Escape, Nuker",5991,3029,50.56,36433,18143,49.8,83118,42095,50.64,100341,51268,51.09,69436,35870,51.66,34256,17858,52.13,16585,8745,52.73,7182,3755,52.28
|
||||
66,Necrophos,int,"Carry, Nuker, Durable, Disabler",4776,2702,56.57,28535,15771,55.27,62186,34285,55.13,70212,38163,54.35,46539,24708,53.09,21607,11302,52.31,9677,4994,51.61,3418,1733,50.7
|
||||
67,Night Stalker,str,"Carry, Initiator, Durable, Disabler, Nuker",1189,594,49.96,7868,3892,49.47,19446,10004,51.45,25524,13506,52.91,20138,10828,53.77,10767,5651,52.48,5499,2889,52.54,2415,1257,52.05
|
||||
68,Nyx Assassin,all,"Disabler, Nuker, Initiator, Escape",1718,867,50.47,10925,5525,50.57,27207,14073,51.73,34684,18059,52.07,25736,13572,52.74,13313,7093,53.28,6485,3444,53.11,2852,1468,51.47
|
||||
69,Ogre Magi,str,"Support, Nuker, Disabler, Durable, Initiator",5331,2845,53.37,31507,16299,51.73,62954,32248,51.22,61758,31373,50.8,33746,16988,50.34,13262,6654,50.17,4861,2420,49.78,1271,654,51.46
|
||||
70,Omniknight,str,"Support, Durable, Nuker",975,479,49.13,6426,3109,48.38,14641,7319,49.99,17258,8731,50.59,11695,5916,50.59,5746,2993,52.09,2870,1469,51.18,1333,656,49.21
|
||||
71,Oracle,int,"Support, Nuker, Disabler, Escape",796,384,48.24,4857,2417,49.76,13141,6645,50.57,18944,9853,52.01,15221,7964,52.32,8356,4458,53.35,4475,2380,53.18,1905,1018,53.44
|
||||
72,Outworld Destroyer,int,"Carry, Nuker, Disabler",2226,1118,50.22,13388,6864,51.27,33284,17362,52.16,43991,23377,53.14,32021,16994,53.07,16655,8724,52.38,8123,4218,51.93,3176,1649,51.92
|
||||
73,Pangolier,all,"Carry, Nuker, Disabler, Durable, Escape, Initiator",1156,534,46.19,7189,3209,44.64,17802,7937,44.58,25785,11677,45.29,21727,10144,46.69,13064,6351,48.61,7567,3737,49.39,5275,2734,51.83
|
||||
74,Phantom Assassin,agi,"Carry, Escape",8553,4426,51.75,48549,25553,52.63,104756,54881,52.39,119332,62511,52.38,79140,41143,51.99,37399,19325,51.67,17774,9077,51.07,7819,3856,49.32
|
||||
75,Phantom Lancer,agi,"Carry, Escape, Pusher, Nuker",3641,1960,53.83,19550,10374,53.06,38576,20633,53.49,41505,22310,53.75,26401,14268,54.04,12437,6590,52.99,5708,2985,52.3,2383,1243,52.16
|
||||
76,Phoenix,all,"Support, Nuker, Initiator, Escape, Disabler",743,315,42.4,5231,2471,47.24,13950,6633,47.55,18350,8864,48.31,13972,6715,48.06,7787,3761,48.3,4322,2132,49.33,2610,1325,50.77
|
||||
77,Primal Beast,str,"Initiator, Durable, Disabler",1455,701,48.18,9333,4448,47.66,22800,11058,48.5,30084,14643,48.67,24307,11993,49.34,13970,6991,50.04,7742,3890,50.25,4625,2407,52.04
|
||||
78,Puck,int,"Initiator, Disabler, Escape, Nuker",871,399,45.81,5773,2628,45.52,16596,7578,45.66,24480,11315,46.22,20070,9497,47.32,11023,5298,48.06,5656,2714,47.98,2555,1200,46.97
|
||||
79,Pudge,str,"Disabler, Initiator, Durable, Nuker",7677,3796,49.45,50891,24776,48.68,114784,56289,49.04,129604,63097,48.68,85800,41542,48.42,41730,20239,48.5,19823,9530,48.08,7112,3431,48.24
|
||||
80,Pugna,int,"Nuker, Pusher",2075,944,45.49,9998,4695,46.96,18962,8958,47.24,20240,9965,49.23,12807,6199,48.4,5825,2855,49.01,2758,1387,50.29,1195,592,49.54
|
||||
81,Queen of Pain,int,"Carry, Nuker, Escape",2287,1100,48.1,15119,7354,48.64,37137,18118,48.79,47706,23657,49.59,35500,18018,50.75,18405,9289,50.47,9243,4689,50.73,4227,2113,49.99
|
||||
82,Razor,agi,"Carry, Durable, Nuker, Pusher",2470,1231,49.84,12000,5964,49.7,24666,12142,49.23,30334,14844,48.94,21832,10558,48.36,11917,5679,47.65,6092,2912,47.8,3144,1551,49.33
|
||||
83,Riki,agi,"Carry, Escape, Disabler",3684,1929,52.36,19022,9891,52.0,35638,18582,52.14,33908,17415,51.36,20194,10312,51.06,8726,4377,50.16,3735,1855,49.67,1160,559,48.19
|
||||
84,Rubick,int,"Support, Disabler, Nuker",3090,1404,45.44,21639,9303,42.99,57417,24590,42.83,74874,32603,43.54,55186,24219,43.89,28206,12568,44.56,13732,6106,44.47,5764,2642,45.84
|
||||
85,Sand King,all,"Initiator, Disabler, Support, Nuker, Escape",2633,1513,57.46,13097,7323,55.91,25271,13807,54.64,26724,14323,53.6,17384,9144,52.6,7907,4104,51.9,3394,1719,50.65,1211,611,50.45
|
||||
86,Shadow Demon,int,"Support, Disabler, Initiator, Nuker",547,236,43.14,3252,1426,43.85,7920,3524,44.49,9752,4551,46.67,7404,3467,46.83,3956,1876,47.42,2076,1004,48.36,1054,497,47.15
|
||||
87,Shadow Fiend,agi,"Carry, Nuker",5051,2544,50.37,27255,14064,51.6,58589,29830,50.91,65429,33097,50.58,41810,21189,50.68,18766,9401,50.1,8232,4000,48.59,3016,1430,47.41
|
||||
88,Shadow Shaman,int,"Support, Pusher, Disabler, Nuker, Initiator",5323,2795,52.51,29733,15606,52.49,58894,31236,53.04,58765,30895,52.57,34475,18242,52.91,15166,7986,52.66,6377,3323,52.11,2413,1253,51.93
|
||||
89,Silencer,int,"Carry, Support, Disabler, Initiator, Nuker",4229,2324,54.95,27878,14960,53.66,61698,33081,53.62,65256,34458,52.8,38589,19853,51.45,16889,8653,51.23,6836,3416,49.97,2236,1105,49.42
|
||||
90,Skywrath Mage,int,"Support, Nuker, Disabler",4000,2030,50.75,22783,11675,51.24,46512,23624,50.79,51329,25706,50.08,34167,17364,50.82,16693,8415,50.41,8496,4208,49.53,4389,2069,47.14
|
||||
91,Slardar,str,"Carry, Durable, Initiator, Disabler, Escape",3935,2129,54.1,21523,11602,53.91,43947,23701,53.93,47721,25633,53.71,29887,16132,53.98,14233,7722,54.25,6530,3467,53.09,2322,1205,51.89
|
||||
92,Slark,agi,"Carry, Escape, Disabler, Nuker",4815,2521,52.36,29413,14762,50.19,64004,31771,49.64,70173,34411,49.04,44780,21926,48.96,20864,10270,49.22,9969,4962,49.77,4565,2394,52.44
|
||||
93,Snapfire,all,"Support, Nuker, Disabler, Escape",1524,682,44.75,10646,4576,42.98,27103,12120,44.72,34711,15412,44.4,24351,10786,44.29,11723,5131,43.77,5227,2294,43.89,1987,868,43.68
|
||||
94,Sniper,agi,"Carry, Nuker",8022,4079,50.85,44508,22727,51.06,88690,45223,50.99,87190,44086,50.56,47411,23648,49.88,18092,8924,49.33,6130,3040,49.59,1370,662,48.32
|
||||
95,Spectre,agi,"Carry, Durable, Escape",3454,2008,58.14,22097,12356,55.92,49157,26961,54.85,55914,30100,53.83,36321,19338,53.24,16946,8960,52.87,7921,4163,52.56,2568,1370,53.35
|
||||
96,Spirit Breaker,str,"Carry, Initiator, Disabler, Durable, Escape",4788,2423,50.61,26662,13530,50.75,56535,28908,51.13,63991,32249,50.4,42512,21357,50.24,20119,9926,49.34,9499,4814,50.68,3761,1884,50.09
|
||||
97,Storm Spirit,int,"Carry, Escape, Nuker, Initiator, Disabler",2202,1001,45.46,11656,5197,44.59,25644,11806,46.04,30968,14210,45.89,21680,10197,47.03,10810,5025,46.48,5278,2382,45.13,2363,1122,47.48
|
||||
98,Sven,str,"Carry, Disabler, Initiator, Durable, Nuker",3552,1761,49.58,19792,9744,49.23,41296,20478,49.59,48709,24228,49.74,35460,17828,50.28,19795,10065,50.85,11014,5655,51.34,6701,3387,50.54
|
||||
99,Techies,all,"Nuker, Disabler",2356,1131,48.01,13105,6245,47.65,27293,12893,47.24,29180,13507,46.29,18216,8407,46.15,8266,3771,45.62,3459,1644,47.53,1319,591,44.81
|
||||
100,Templar Assassin,agi,"Carry, Escape",2142,955,44.58,10932,4758,43.52,21211,9445,44.53,23928,10909,45.59,17399,8242,47.37,9567,4656,48.67,5525,2708,49.01,3524,1775,50.37
|
||||
101,Terrorblade,agi,"Carry, Pusher, Nuker",1115,484,43.41,5686,2430,42.74,10856,4638,42.72,11518,5041,43.77,8059,3540,43.93,4192,1827,43.58,2419,1082,44.73,1621,700,43.18
|
||||
102,Tidehunter,str,"Initiator, Durable, Disabler, Nuker, Carry",1835,855,46.59,11159,5369,48.11,26222,12699,48.43,30735,14879,48.41,20523,9727,47.4,9731,4740,48.71,4426,2079,46.97,1998,936,46.85
|
||||
103,Timbersaw,all,"Nuker, Durable, Escape",1050,448,42.67,5854,2584,44.14,12301,5391,43.83,14295,6097,42.65,9697,4217,43.49,4992,2163,43.33,2419,1021,42.21,1139,471,41.35
|
||||
104,Tinker,int,"Carry, Nuker, Pusher",2106,944,44.82,11058,5200,47.02,24263,11826,48.74,27531,13614,49.45,19017,9732,51.18,9416,4875,51.77,4700,2466,52.47,1951,1036,53.1
|
||||
105,Tiny,str,"Carry, Nuker, Pusher, Initiator, Durable, Disabler",1434,654,45.61,7742,3452,44.59,15936,6950,43.61,17139,7468,43.57,11269,4991,44.29,5485,2491,45.41,2599,1216,46.79,1058,519,49.05
|
||||
106,Treant Protector,str,"Support, Initiator, Durable, Disabler, Escape",1646,899,54.62,11430,5881,51.45,28752,15124,52.6,36093,19344,53.59,28762,15532,54.0,16751,9227,55.08,9870,5468,55.4,6801,3855,56.68
|
||||
107,Troll Warlord,agi,"Carry, Pusher, Disabler, Durable",3176,1720,54.16,14007,7445,53.15,24729,13022,52.66,25424,13228,52.03,17362,9030,52.01,9427,4913,52.12,4767,2499,52.42,2341,1242,53.05
|
||||
108,Tusk,str,"Initiator, Disabler, Nuker",1263,565,44.73,8338,3777,45.3,19642,8869,45.15,25308,11520,45.52,18927,8853,46.77,10100,4820,47.72,5220,2502,47.93,2350,1157,49.23
|
||||
109,Underlord,str,"Support, Nuker, Disabler, Durable, Escape",797,405,50.82,4583,2341,51.08,10067,5057,50.23,11650,5786,49.67,7224,3561,49.29,3310,1591,48.07,1368,673,49.2,395,190,48.1
|
||||
110,Undying,str,"Support, Durable, Disabler, Nuker",3170,1620,51.1,19403,10116,52.14,40582,21110,52.02,40850,21182,51.85,23985,12454,51.92,10395,5389,51.84,4541,2336,51.44,2064,1012,49.03
|
||||
111,Ursa,agi,"Carry, Durable, Disabler",2801,1273,45.45,15132,7038,46.51,33269,15478,46.52,40822,19264,47.19,29348,14011,47.74,15262,7375,48.32,7507,3622,48.25,3004,1473,49.03
|
||||
112,Vengeful Spirit,all,"Support, Initiator, Disabler, Nuker, Escape",2186,1108,50.69,15817,8285,52.38,41843,21809,52.12,57524,30476,52.98,45512,24120,53.0,25581,13382,52.31,13758,7121,51.76,8276,4303,51.99
|
||||
113,Venomancer,all,"Support, Nuker, Initiator, Pusher, Disabler",2309,1187,51.41,14669,7463,50.88,34787,18020,51.8,41797,21690,51.89,28706,15085,52.55,13974,7338,52.51,6538,3495,53.46,2794,1459,52.22
|
||||
114,Viper,agi,"Carry, Durable, Initiator, Disabler",4100,2057,50.17,18991,9510,50.08,33517,16923,50.49,32728,16677,50.96,18537,9427,50.86,7851,3928,50.03,3260,1652,50.67,1176,610,51.87
|
||||
115,Visage,all,"Support, Nuker, Durable, Disabler, Pusher",331,171,51.66,1638,813,49.63,3240,1577,48.67,3840,1986,51.72,3108,1609,51.77,1995,1055,52.88,1309,702,53.63,858,457,53.26
|
||||
116,Void Spirit,all,"Carry, Escape, Nuker, Disabler",1565,727,46.45,8672,4096,47.23,20010,9694,48.45,25213,12376,49.09,18817,9231,49.06,10026,4920,49.07,4788,2319,48.43,2006,964,48.06
|
||||
117,Warlock,int,"Support, Initiator, Disabler",2547,1369,53.75,18931,10331,54.57,49795,26999,54.22,66697,36220,54.31,48401,25668,53.03,24999,12942,51.77,12575,6356,50.54,6183,2934,47.45
|
||||
118,Weaver,agi,"Carry, Escape",2818,1389,49.29,13873,6770,48.8,23493,11571,49.25,21545,10694,49.64,12911,6427,49.78,5809,2928,50.4,2960,1455,49.16,1303,719,55.18
|
||||
119,Windranger,all,"Carry, Support, Disabler, Escape, Nuker",3861,1814,46.98,19934,9223,46.27,40644,18807,46.27,44476,20652,46.43,28952,13508,46.66,13418,6297,46.93,5898,2782,47.17,2374,1142,48.1
|
||||
120,Winter Wyvern,all,"Support, Disabler, Nuker",821,371,45.19,5168,2424,46.9,10544,5014,47.55,11184,5308,47.46,7426,3512,47.29,3730,1854,49.71,1862,934,50.16,944,464,49.15
|
||||
121,Witch Doctor,int,"Support, Nuker, Disabler",7504,4173,55.61,45501,25616,56.3,99664,54963,55.15,111382,60421,54.25,71830,37860,52.71,33164,17334,52.27,14610,7442,50.94,4196,2076,49.48
|
||||
122,Wraith King,str,"Carry, Support, Durable, Disabler, Initiator",4175,2266,54.28,26362,14516,55.06,58733,32403,55.17,66283,36503,55.07,42360,23083,54.49,19084,10251,53.72,8334,4315,51.78,2707,1376,50.83
|
||||
123,Zeus,int,"Nuker, Carry",4132,2106,50.97,23721,12487,52.64,51568,27475,53.28,58333,31078,53.28,37821,20047,53.0,17901,9504,53.09,8539,4459,52.22,3400,1791,52.68
|
||||
|
35
belyaeva_ekaterina_lab_3/README.md
Normal file
@@ -0,0 +1,35 @@
|
||||
## Задание
|
||||
|
||||
Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта»на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод
|
||||
|
||||
|
||||
## Как запустить лабораторную
|
||||
Запустить файл main.py
|
||||
## Используемые технологии
|
||||
Библиотеки pandas, scikit-learn, их компоненты
|
||||
## Описание лабораторной (программы)
|
||||
Данный код берет данные из датасета о персонажах Dota 2, где описаны атрибуты персонажей, их роли, название, и как часто их пикают и какой у них винрейт на каждом звании в Доте, от реркута до титана.
|
||||
|
||||
В моем случае была поставлена задача определить винрейт персонажа на ранге рекрут в зависимости от его атрибута, роли (я взяла 2 - саппорт или керри), и того, как часто его берут на рекрутах.
|
||||
|
||||
Программа берет столбцы Herald Win Rate, Primary Attribute, Herald Picks и Roles, далее проводит фильтрацию столбца Roles и выбирает тех персонажей, у которых есть роль support или carry. Затем создает
|
||||
два новых столбца - isCarry и isSupport, так как в столбце Roles несколько значений и его нужно удалить.
|
||||
|
||||
Затем данные делятся на обучающую и тестовую выборки и выясняется зависимость винрейта от остальных признаков.
|
||||
|
||||
В конце программа выводит, насколько важны были выбранные признаки при определении винрейта и точность модели.
|
||||
|
||||
|
||||
## Результат
|
||||
|
||||
В результате получаем следующее:
|
||||
|
||||
Feature Importances: [0.08035262 0.82893841 0.00453277 0.08617619]
|
||||
Score: 0.23055568233652535
|
||||
|
||||
Вывод: самым значимым признаком при определении винрейта стал признак Primary Attribute. На фоне других признаков его значимость сильно выделяется, все остальные признаки уже играют очень маленькую роль.
|
||||
|
||||
Точность модели вышла относительно низкой, но это легко объясняется тем, что в Доте невозможно точно предсказать винрейт персонажа, основываясь на подобных признаках. Винрейт предсказывается только лишь тем, какие персонажи сильны в данной мете, что зависит от их скиллов и изменений патча, не описанных в датасете (но и нет такого датасета, где они могли бы быть описаны).
|
||||
|
||||
Тем не менее, данная программа дала понять, что на рекрутах на винрейт персонажа сильно влияет его главный атрибут.
|
||||
|
||||
47
belyaeva_ekaterina_lab_3/main.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import pandas as pd
|
||||
from sklearn.tree import DecisionTreeRegressor
|
||||
from sklearn.model_selection import train_test_split
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv("Current_Pub_Meta.csv")
|
||||
|
||||
# Отбор нужных столбцов
|
||||
selected_columns = ['Herald Win Rate', 'Primary Attribute', 'Herald Picks', 'Roles']
|
||||
data = data[selected_columns]
|
||||
|
||||
# Фильтрация по ролям Carry и Support
|
||||
data = data[data['Roles'].apply(lambda x: 'Carry' in x or 'Support' in x)]
|
||||
|
||||
# Создание столбцов для каждой роли и заполнение их значениями 1 или 0
|
||||
data['IsCarry'] = data['Roles'].apply(lambda x: 1 if 'Carry' in x else 0)
|
||||
data['IsSupport'] = data['Roles'].apply(lambda x: 1 if 'Support' in x else 0)
|
||||
|
||||
# Удаление столбца Roles
|
||||
data.drop('Roles', axis=1, inplace=True)
|
||||
|
||||
# Замена категориальных переменных на числовые
|
||||
data['Primary Attribute'] = data['Primary Attribute'].map({'str': 0, 'all': 1, 'int': 2, 'agi': 3})
|
||||
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
X = data.drop('Herald Win Rate', axis=1)
|
||||
y = data['Herald Win Rate']
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||
|
||||
# Обучение модели
|
||||
model = DecisionTreeRegressor()
|
||||
model.fit(X_train, y_train)
|
||||
|
||||
# Прогноз на тестовой выборке
|
||||
y_pred = model.predict(X_test)
|
||||
|
||||
# Вывод обработанных данных
|
||||
print("Обработанные данные:")
|
||||
print(data)
|
||||
|
||||
# Оценка значимости признаков
|
||||
feature_importances = model.feature_importances_
|
||||
print("Feature Importances:", feature_importances)
|
||||
|
||||
# Оценка score модели
|
||||
score = model.score(X_test, y_test)
|
||||
print("Score:", score)
|
||||
125
belyaeva_ekaterina_lab_4/Current_Pub_Meta.csv
Normal file
@@ -0,0 +1,125 @@
|
||||
,Name,Primary Attribute,Roles,Herald Picks,Herald Wins,Herald Win Rate,Guardian Picks,Guardian Wins,Guardian Win Rate,Crusader Picks,Crusader Wins,Crusader Win Rate,Archon Picks,Archon Wins,Archon Win Rate,Legend Picks,Legend Wins,Legend Win Rate,Ancient Picks,Ancient Wins,Ancient Win Rate,Divine Picks,Divine Wins,Divine Win Rate,Immortal Picks,Immortal Wins,Immortal Win Rate
|
||||
0,Abaddon,all,"Support, Carry, Durable",1111,575,51.76,6408,3309,51.64,13811,7050,51.05,16497,8530,51.71,11360,5877,51.73,5571,2893,51.93,2632,1345,51.1,991,497,50.15
|
||||
1,Alchemist,str,"Carry, Support, Durable, Disabler, Initiator, Nuker",1119,486,43.43,6370,2883,45.26,12238,5617,45.9,13028,6130,47.05,8455,4055,47.96,4120,1984,48.16,2021,1023,50.62,860,424,49.3
|
||||
2,Ancient Apparition,int,"Support, Disabler, Nuker",2146,1073,50.0,13697,7069,51.61,30673,16118,52.55,35145,18219,51.84,23114,12166,52.63,10688,5528,51.72,5035,2573,51.1,2134,1076,50.42
|
||||
3,Anti-Mage,agi,"Carry, Escape, Nuker",3765,1818,48.29,22050,10774,48.86,47371,23304,49.19,49115,24074,49.02,28599,13991,48.92,12303,5958,48.43,4866,2349,48.27,1502,751,50.0
|
||||
4,Arc Warden,agi,"Carry, Escape, Nuker",1448,704,48.62,8047,4162,51.72,14946,7982,53.41,14711,7875,53.53,9472,5167,54.55,4323,2309,53.41,2104,1148,54.56,789,435,55.13
|
||||
5,Axe,str,"Initiator, Durable, Disabler, Carry",5343,2880,53.9,32652,17719,54.27,71010,37736,53.14,77869,40559,52.09,49182,25079,50.99,22637,11353,50.15,10114,5000,49.44,3795,1837,48.41
|
||||
6,Bane,all,"Support, Disabler, Nuker, Durable",745,334,44.83,4983,2422,48.61,11332,5504,48.57,13633,6767,49.64,10132,5032,49.66,5596,2861,51.13,3028,1555,51.35,1958,1055,53.88
|
||||
7,Batrider,all,"Initiator, Disabler, Escape",349,136,38.97,1983,812,40.95,4053,1595,39.35,4725,1861,39.39,3173,1275,40.18,1678,731,43.56,802,362,45.14,497,227,45.67
|
||||
8,Beastmaster,all,"Initiator, Disabler, Durable, Nuker",402,174,43.28,2447,1060,43.32,5787,2569,44.39,6930,3092,44.62,5288,2389,45.18,2816,1274,45.24,1593,752,47.21,1176,539,45.83
|
||||
9,Bloodseeker,agi,"Carry, Disabler, Nuker, Initiator",2765,1382,49.98,12589,6270,49.81,21781,10683,49.05,20961,10420,49.71,13035,6430,49.33,6210,3006,48.41,2941,1475,50.15,1465,718,49.01
|
||||
10,Bounty Hunter,agi,"Escape, Nuker",3852,1868,48.49,19609,9535,48.63,36362,17600,48.4,37059,18314,49.42,22934,11518,50.22,10584,5276,49.85,5105,2594,50.81,2498,1325,53.04
|
||||
11,Brewmaster,all,"Carry, Initiator, Durable, Disabler, Nuker",545,280,51.38,3564,1745,48.96,8941,4388,49.08,12340,6111,49.52,11185,5623,50.27,7645,3906,51.09,4812,2478,51.5,3533,1820,51.51
|
||||
12,Bristleback,str,"Carry, Durable, Initiator, Nuker",5884,3262,55.44,27952,14587,52.19,48847,24379,49.91,46702,22927,49.09,27466,13319,48.49,12398,5969,48.14,5865,2915,49.7,2639,1304,49.41
|
||||
13,Broodmother,all,"Carry, Pusher, Escape, Nuker",456,173,37.94,2048,842,41.11,3444,1462,42.45,3392,1448,42.69,2193,1048,47.79,1203,602,50.04,795,422,53.08,453,230,50.77
|
||||
14,Centaur Warrunner,str,"Durable, Initiator, Disabler, Nuker, Escape",1721,911,52.93,11754,6266,53.31,28691,15201,52.98,35369,18741,52.99,25393,13468,53.04,12653,6607,52.22,6124,3181,51.94,2442,1243,50.9
|
||||
15,Chaos Knight,str,"Carry, Disabler, Durable, Pusher, Initiator",3032,1639,54.06,16762,8931,53.28,31892,17139,53.74,30697,16435,53.54,18217,9810,53.85,8572,4620,53.9,4230,2291,54.16,1750,943,53.89
|
||||
16,Chen,all,"Support, Pusher",284,125,44.01,1450,678,46.76,2969,1345,45.3,3258,1604,49.23,2641,1331,50.4,1488,767,51.55,970,512,52.78,770,448,58.18
|
||||
17,Clinkz,agi,"Carry, Escape, Pusher",3151,1608,51.03,13891,7141,51.41,25465,12938,50.81,27327,14066,51.47,18846,9726,51.61,9452,4890,51.74,4765,2475,51.94,2093,1052,50.26
|
||||
18,Clockwerk,all,"Initiator, Disabler, Durable, Nuker",816,397,48.65,5860,2837,48.41,14478,6929,47.86,18466,8843,47.89,13143,6301,47.94,6612,3169,47.93,3286,1581,48.11,1378,658,47.75
|
||||
19,Crystal Maiden,int,"Support, Disabler, Nuker",4821,2529,52.46,26584,13626,51.26,52168,26040,49.92,52258,25365,48.54,30690,14848,48.38,13295,6404,48.17,5602,2680,47.84,1638,771,47.07
|
||||
20,Dark Seer,all,"Initiator, Escape, Disabler",627,320,51.04,3675,1884,51.27,7881,3803,48.26,9589,4844,50.52,7186,3573,49.72,3902,1983,50.82,2145,1095,51.05,1217,593,48.73
|
||||
21,Dark Willow,all,"Support, Nuker, Disabler, Escape",2654,1293,48.72,13829,6657,48.14,28142,13480,47.9,32114,15785,49.15,23100,11331,49.05,12052,5909,49.03,6400,3182,49.72,3708,1915,51.65
|
||||
22,Dawnbreaker,str,"Carry, Durable",1746,875,50.11,12297,6105,49.65,32398,15921,49.14,44846,21936,48.91,35474,17441,49.17,19770,9832,49.73,10637,5263,49.48,6339,3173,50.06
|
||||
23,Dazzle,all,"Support, Nuker, Disabler",2827,1418,50.16,19852,9758,49.15,48236,23691,49.11,56417,27798,49.27,38159,18642,48.85,18695,9199,49.21,8530,4239,49.7,3382,1654,48.91
|
||||
24,Death Prophet,int,"Carry, Pusher, Nuker, Disabler",1372,659,48.03,6643,3145,47.34,11987,5729,47.79,12268,5856,47.73,7455,3606,48.37,3591,1698,47.28,1872,902,48.18,926,459,49.57
|
||||
25,Disruptor,int,"Support, Disabler, Nuker, Initiator",1541,757,49.12,11104,5331,48.01,27746,13542,48.81,33742,16310,48.34,23173,11096,47.88,10907,5201,47.68,4859,2255,46.41,1863,861,46.22
|
||||
26,Doom,str,"Carry, Disabler, Initiator, Durable, Nuker",1049,474,45.19,6112,2767,45.27,13700,6056,44.2,15454,6925,44.81,10727,4842,45.14,5444,2451,45.02,2979,1348,45.25,1545,731,47.31
|
||||
27,Dragon Knight,str,"Carry, Pusher, Durable, Disabler, Initiator, Nuker",1950,942,48.31,10643,5274,49.55,20451,9733,47.59,20326,9671,47.58,11674,5544,47.49,4979,2355,47.3,2024,973,48.07,725,341,47.03
|
||||
28,Drow Ranger,agi,"Carry, Disabler, Pusher",5737,2904,50.62,29675,14831,49.98,57655,28573,49.56,56682,27927,49.27,34310,16607,48.4,15050,7171,47.65,5947,2815,47.33,1768,788,44.57
|
||||
29,Earth Spirit,str,"Nuker, Escape, Disabler, Initiator, Durable",1038,465,44.8,7420,3276,44.15,20807,9432,45.33,30107,14166,47.05,25314,12148,47.99,14579,7041,48.3,7678,3802,49.52,4379,2169,49.53
|
||||
30,Earthshaker,str,"Support, Initiator, Disabler, Nuker",5012,2455,48.98,29784,14662,49.23,67050,33111,49.38,79963,39843,49.83,57108,28961,50.71,28650,14591,50.93,14186,7296,51.43,6151,3165,51.46
|
||||
31,Elder Titan,str,"Initiator, Disabler, Nuker, Durable",471,212,45.01,2551,1248,48.92,5213,2570,49.3,5572,2809,50.41,3847,1942,50.48,1964,998,50.81,1124,613,54.54,550,292,53.09
|
||||
32,Ember Spirit,agi,"Carry, Escape, Nuker, Disabler, Initiator",1514,635,41.94,9180,3836,41.79,20578,8738,42.46,25152,10844,43.11,17703,7814,44.14,8538,3793,44.42,4265,1892,44.36,2065,928,44.94
|
||||
33,Enchantress,int,"Support, Pusher, Durable, Disabler",1794,848,47.27,8050,3622,44.99,12921,5686,44.01,11673,4974,42.61,6863,2840,41.38,2948,1212,41.11,1434,654,45.61,806,318,39.45
|
||||
34,Enigma,all,"Disabler, Initiator, Pusher",1317,588,44.65,6937,3171,45.71,12908,5979,46.32,11687,5428,46.44,6194,2839,45.83,2493,1127,45.21,938,437,46.59,338,159,47.04
|
||||
35,Faceless Void,agi,"Carry, Initiator, Disabler, Escape, Durable",4323,2043,47.26,25618,11902,46.46,54581,25874,47.4,60671,28993,47.79,40137,19611,48.86,19376,9620,49.65,9579,4828,50.4,4439,2256,50.82
|
||||
36,Grimstroke,int,"Support, Nuker, Disabler, Escape",1455,694,47.7,9714,4789,49.3,24688,12430,50.35,32027,16094,50.25,23193,11795,50.86,12102,6100,50.4,6191,3047,49.22,3449,1666,48.3
|
||||
37,Gyrocopter,agi,"Carry, Nuker, Disabler",2560,1213,47.38,16589,7882,47.51,42072,20358,48.39,54200,26229,48.39,39414,19053,48.34,20164,9781,48.51,10164,4937,48.57,5241,2507,47.83
|
||||
38,Hoodwink,agi,"Support, Nuker, Escape, Disabler",2420,1126,46.53,14034,6800,48.45,31382,14964,47.68,35684,16966,47.55,22626,10651,47.07,9949,4690,47.14,4349,2089,48.03,1533,703,45.86
|
||||
39,Huskar,str,"Carry, Durable, Initiator",3501,1603,45.79,14234,6639,46.64,22794,10912,47.87,21801,10763,49.37,13811,6919,50.1,6769,3535,52.22,3556,1822,51.24,1936,993,51.29
|
||||
40,Invoker,all,"Carry, Nuker, Disabler, Escape, Pusher",4330,2042,47.16,27625,13176,47.7,69035,33863,49.05,86745,43479,50.12,61821,31510,50.97,31459,16321,51.88,15431,8195,53.11,7852,4148,52.83
|
||||
41,Io,all,"Support, Escape, Nuker",1274,615,48.27,6158,2999,48.7,12762,6247,48.95,14216,7024,49.41,9564,4843,50.64,5301,2685,50.65,2789,1463,52.46,1464,773,52.8
|
||||
42,Jakiro,int,"Support, Nuker, Pusher, Disabler",3147,1708,54.27,22718,12413,54.64,56736,30984,54.61,70038,37473,53.5,46389,24997,53.89,22084,11639,52.7,9838,5103,51.87,3282,1729,52.68
|
||||
43,Juggernaut,agi,"Carry, Pusher, Escape",5585,2711,48.54,30394,14800,48.69,62313,30581,49.08,65590,32344,49.31,39235,19326,49.26,16334,8012,49.05,6419,3066,47.76,1576,731,46.38
|
||||
44,Keeper of the Light,int,"Support, Nuker, Disabler",896,353,39.4,5051,2216,43.87,10452,4579,43.81,11614,5322,45.82,7870,3627,46.09,4268,2001,46.88,2147,1043,48.58,1333,588,44.11
|
||||
45,Kunkka,str,"Carry, Support, Disabler, Initiator, Durable, Nuker",2251,1124,49.93,13474,6828,50.68,31210,16196,51.89,39691,21293,53.65,30314,16458,54.29,15706,8793,55.98,7884,4339,55.04,3458,1898,54.89
|
||||
46,Legion Commander,str,"Carry, Disabler, Initiator, Durable, Nuker",6263,3264,52.12,37100,19157,51.64,81491,41557,51.0,91431,46558,50.92,59383,29917,50.38,27945,13917,49.8,13193,6587,49.93,5601,2745,49.01
|
||||
47,Leshrac,int,"Carry, Support, Nuker, Pusher, Disabler",674,316,46.88,3872,1799,46.46,7490,3433,45.83,7903,3604,45.6,5322,2526,47.46,2687,1298,48.31,1325,647,48.83,721,357,49.51
|
||||
48,Lich,int,"Support, Nuker",2700,1412,52.3,16646,8820,52.99,37785,19685,52.1,45471,23554,51.8,31203,16108,51.62,15530,7821,50.36,7243,3597,49.66,2520,1258,49.92
|
||||
49,Lifestealer,str,"Carry, Durable, Escape, Disabler",2515,1213,48.23,14131,6978,49.38,29724,14627,49.21,31211,15581,49.92,18970,9481,49.98,8689,4400,50.64,3630,1821,50.17,1229,617,50.2
|
||||
50,Lina,int,"Support, Carry, Nuker, Disabler",4512,2030,44.99,21927,10156,46.32,45301,21210,46.82,54229,25956,47.86,40016,19138,47.83,21072,10112,47.99,10481,5031,48.0,4369,2138,48.94
|
||||
51,Lion,int,"Support, Disabler, Nuker, Initiator",6204,2855,46.02,37869,17465,46.12,80124,36649,45.74,84390,38176,45.24,50720,22914,45.18,21698,9784,45.09,9308,4280,45.98,3220,1496,46.46
|
||||
52,Lone Druid,all,"Carry, Pusher, Durable",909,483,53.14,4714,2421,51.36,10987,5858,53.32,14580,7968,54.65,11810,6490,54.95,7241,3971,54.84,4024,2240,55.67,2303,1259,54.67
|
||||
53,Luna,agi,"Carry, Nuker, Pusher",1927,904,46.91,9091,4271,46.98,16571,7922,47.81,16035,7615,47.49,9728,4634,47.64,4463,2103,47.12,1912,911,47.65,719,322,44.78
|
||||
54,Lycan,all,"Carry, Pusher, Durable, Escape",374,174,46.52,1894,915,48.31,3691,1744,47.25,3824,1905,49.82,2694,1332,49.44,1460,753,51.58,827,411,49.7,532,289,54.32
|
||||
55,Magnus,all,"Initiator, Disabler, Nuker, Escape",770,339,44.03,5789,2651,45.79,17837,7954,44.59,26126,12058,46.15,20634,9592,46.49,10574,5056,47.82,4565,2073,45.41,1606,751,46.76
|
||||
56,Marci,all,"Support, Carry, Initiator, Disabler, Escape",1370,620,45.26,7092,3252,45.85,15199,7240,47.63,18485,8874,48.01,13308,6305,47.38,7176,3476,48.44,3689,1882,51.02,1746,883,50.57
|
||||
57,Mars,str,"Carry, Initiator, Disabler, Durable",862,375,43.5,5719,2529,44.22,15156,6756,44.58,20719,9369,45.22,16419,7387,44.99,9044,4052,44.8,4536,2093,46.14,1926,868,45.07
|
||||
58,Medusa,agi,"Carry, Disabler, Durable",1898,902,47.52,9289,4512,48.57,16504,7818,47.37,14796,6886,46.54,7488,3449,46.06,2775,1270,45.77,1073,482,44.92,394,184,46.7
|
||||
59,Meepo,agi,"Carry, Escape, Nuker, Disabler, Initiator, Pusher",1004,523,52.09,3970,1990,50.13,6904,3587,51.96,7166,3646,50.88,4906,2563,52.24,2383,1282,53.8,1139,588,51.62,585,300,51.28
|
||||
60,Mirana,all,"Carry, Support, Escape, Nuker, Disabler",2499,1193,47.74,16954,8135,47.98,39985,19097,47.76,45169,21554,47.72,28467,13456,47.27,12800,6047,47.24,5272,2500,47.42,1824,874,47.92
|
||||
61,Monkey King,agi,"Carry, Escape, Disabler, Initiator",3191,1384,43.37,17306,7544,43.59,35734,16113,45.09,40778,18322,44.93,27558,12630,45.83,14034,6433,45.84,6650,3152,47.4,3040,1440,47.37
|
||||
62,Morphling,agi,"Carry, Escape, Durable, Nuker, Disabler",1521,690,45.36,8620,4006,46.47,18075,8161,45.15,20414,9235,45.24,14395,6530,45.36,7697,3551,46.13,4432,2050,46.25,2560,1190,46.48
|
||||
63,Muerta,int,"Carry, Nuker, Disabler",2130,1089,51.13,10787,5740,53.21,22602,11898,52.64,27609,14495,52.5,20175,10465,51.87,10662,5518,51.75,5462,2759,50.51,2948,1517,51.46
|
||||
64,Naga Siren,agi,"Carry, Support, Pusher, Disabler, Initiator, Escape",1502,804,53.53,6495,3356,51.67,10423,5234,50.22,9830,4929,50.14,6057,2971,49.05,3216,1675,52.08,1855,933,50.3,1242,634,51.05
|
||||
65,Nature's Prophet,int,"Carry, Pusher, Escape, Nuker",5991,3029,50.56,36433,18143,49.8,83118,42095,50.64,100341,51268,51.09,69436,35870,51.66,34256,17858,52.13,16585,8745,52.73,7182,3755,52.28
|
||||
66,Necrophos,int,"Carry, Nuker, Durable, Disabler",4776,2702,56.57,28535,15771,55.27,62186,34285,55.13,70212,38163,54.35,46539,24708,53.09,21607,11302,52.31,9677,4994,51.61,3418,1733,50.7
|
||||
67,Night Stalker,str,"Carry, Initiator, Durable, Disabler, Nuker",1189,594,49.96,7868,3892,49.47,19446,10004,51.45,25524,13506,52.91,20138,10828,53.77,10767,5651,52.48,5499,2889,52.54,2415,1257,52.05
|
||||
68,Nyx Assassin,all,"Disabler, Nuker, Initiator, Escape",1718,867,50.47,10925,5525,50.57,27207,14073,51.73,34684,18059,52.07,25736,13572,52.74,13313,7093,53.28,6485,3444,53.11,2852,1468,51.47
|
||||
69,Ogre Magi,str,"Support, Nuker, Disabler, Durable, Initiator",5331,2845,53.37,31507,16299,51.73,62954,32248,51.22,61758,31373,50.8,33746,16988,50.34,13262,6654,50.17,4861,2420,49.78,1271,654,51.46
|
||||
70,Omniknight,str,"Support, Durable, Nuker",975,479,49.13,6426,3109,48.38,14641,7319,49.99,17258,8731,50.59,11695,5916,50.59,5746,2993,52.09,2870,1469,51.18,1333,656,49.21
|
||||
71,Oracle,int,"Support, Nuker, Disabler, Escape",796,384,48.24,4857,2417,49.76,13141,6645,50.57,18944,9853,52.01,15221,7964,52.32,8356,4458,53.35,4475,2380,53.18,1905,1018,53.44
|
||||
72,Outworld Destroyer,int,"Carry, Nuker, Disabler",2226,1118,50.22,13388,6864,51.27,33284,17362,52.16,43991,23377,53.14,32021,16994,53.07,16655,8724,52.38,8123,4218,51.93,3176,1649,51.92
|
||||
73,Pangolier,all,"Carry, Nuker, Disabler, Durable, Escape, Initiator",1156,534,46.19,7189,3209,44.64,17802,7937,44.58,25785,11677,45.29,21727,10144,46.69,13064,6351,48.61,7567,3737,49.39,5275,2734,51.83
|
||||
74,Phantom Assassin,agi,"Carry, Escape",8553,4426,51.75,48549,25553,52.63,104756,54881,52.39,119332,62511,52.38,79140,41143,51.99,37399,19325,51.67,17774,9077,51.07,7819,3856,49.32
|
||||
75,Phantom Lancer,agi,"Carry, Escape, Pusher, Nuker",3641,1960,53.83,19550,10374,53.06,38576,20633,53.49,41505,22310,53.75,26401,14268,54.04,12437,6590,52.99,5708,2985,52.3,2383,1243,52.16
|
||||
76,Phoenix,all,"Support, Nuker, Initiator, Escape, Disabler",743,315,42.4,5231,2471,47.24,13950,6633,47.55,18350,8864,48.31,13972,6715,48.06,7787,3761,48.3,4322,2132,49.33,2610,1325,50.77
|
||||
77,Primal Beast,str,"Initiator, Durable, Disabler",1455,701,48.18,9333,4448,47.66,22800,11058,48.5,30084,14643,48.67,24307,11993,49.34,13970,6991,50.04,7742,3890,50.25,4625,2407,52.04
|
||||
78,Puck,int,"Initiator, Disabler, Escape, Nuker",871,399,45.81,5773,2628,45.52,16596,7578,45.66,24480,11315,46.22,20070,9497,47.32,11023,5298,48.06,5656,2714,47.98,2555,1200,46.97
|
||||
79,Pudge,str,"Disabler, Initiator, Durable, Nuker",7677,3796,49.45,50891,24776,48.68,114784,56289,49.04,129604,63097,48.68,85800,41542,48.42,41730,20239,48.5,19823,9530,48.08,7112,3431,48.24
|
||||
80,Pugna,int,"Nuker, Pusher",2075,944,45.49,9998,4695,46.96,18962,8958,47.24,20240,9965,49.23,12807,6199,48.4,5825,2855,49.01,2758,1387,50.29,1195,592,49.54
|
||||
81,Queen of Pain,int,"Carry, Nuker, Escape",2287,1100,48.1,15119,7354,48.64,37137,18118,48.79,47706,23657,49.59,35500,18018,50.75,18405,9289,50.47,9243,4689,50.73,4227,2113,49.99
|
||||
82,Razor,agi,"Carry, Durable, Nuker, Pusher",2470,1231,49.84,12000,5964,49.7,24666,12142,49.23,30334,14844,48.94,21832,10558,48.36,11917,5679,47.65,6092,2912,47.8,3144,1551,49.33
|
||||
83,Riki,agi,"Carry, Escape, Disabler",3684,1929,52.36,19022,9891,52.0,35638,18582,52.14,33908,17415,51.36,20194,10312,51.06,8726,4377,50.16,3735,1855,49.67,1160,559,48.19
|
||||
84,Rubick,int,"Support, Disabler, Nuker",3090,1404,45.44,21639,9303,42.99,57417,24590,42.83,74874,32603,43.54,55186,24219,43.89,28206,12568,44.56,13732,6106,44.47,5764,2642,45.84
|
||||
85,Sand King,all,"Initiator, Disabler, Support, Nuker, Escape",2633,1513,57.46,13097,7323,55.91,25271,13807,54.64,26724,14323,53.6,17384,9144,52.6,7907,4104,51.9,3394,1719,50.65,1211,611,50.45
|
||||
86,Shadow Demon,int,"Support, Disabler, Initiator, Nuker",547,236,43.14,3252,1426,43.85,7920,3524,44.49,9752,4551,46.67,7404,3467,46.83,3956,1876,47.42,2076,1004,48.36,1054,497,47.15
|
||||
87,Shadow Fiend,agi,"Carry, Nuker",5051,2544,50.37,27255,14064,51.6,58589,29830,50.91,65429,33097,50.58,41810,21189,50.68,18766,9401,50.1,8232,4000,48.59,3016,1430,47.41
|
||||
88,Shadow Shaman,int,"Support, Pusher, Disabler, Nuker, Initiator",5323,2795,52.51,29733,15606,52.49,58894,31236,53.04,58765,30895,52.57,34475,18242,52.91,15166,7986,52.66,6377,3323,52.11,2413,1253,51.93
|
||||
89,Silencer,int,"Carry, Support, Disabler, Initiator, Nuker",4229,2324,54.95,27878,14960,53.66,61698,33081,53.62,65256,34458,52.8,38589,19853,51.45,16889,8653,51.23,6836,3416,49.97,2236,1105,49.42
|
||||
90,Skywrath Mage,int,"Support, Nuker, Disabler",4000,2030,50.75,22783,11675,51.24,46512,23624,50.79,51329,25706,50.08,34167,17364,50.82,16693,8415,50.41,8496,4208,49.53,4389,2069,47.14
|
||||
91,Slardar,str,"Carry, Durable, Initiator, Disabler, Escape",3935,2129,54.1,21523,11602,53.91,43947,23701,53.93,47721,25633,53.71,29887,16132,53.98,14233,7722,54.25,6530,3467,53.09,2322,1205,51.89
|
||||
92,Slark,agi,"Carry, Escape, Disabler, Nuker",4815,2521,52.36,29413,14762,50.19,64004,31771,49.64,70173,34411,49.04,44780,21926,48.96,20864,10270,49.22,9969,4962,49.77,4565,2394,52.44
|
||||
93,Snapfire,all,"Support, Nuker, Disabler, Escape",1524,682,44.75,10646,4576,42.98,27103,12120,44.72,34711,15412,44.4,24351,10786,44.29,11723,5131,43.77,5227,2294,43.89,1987,868,43.68
|
||||
94,Sniper,agi,"Carry, Nuker",8022,4079,50.85,44508,22727,51.06,88690,45223,50.99,87190,44086,50.56,47411,23648,49.88,18092,8924,49.33,6130,3040,49.59,1370,662,48.32
|
||||
95,Spectre,agi,"Carry, Durable, Escape",3454,2008,58.14,22097,12356,55.92,49157,26961,54.85,55914,30100,53.83,36321,19338,53.24,16946,8960,52.87,7921,4163,52.56,2568,1370,53.35
|
||||
96,Spirit Breaker,str,"Carry, Initiator, Disabler, Durable, Escape",4788,2423,50.61,26662,13530,50.75,56535,28908,51.13,63991,32249,50.4,42512,21357,50.24,20119,9926,49.34,9499,4814,50.68,3761,1884,50.09
|
||||
97,Storm Spirit,int,"Carry, Escape, Nuker, Initiator, Disabler",2202,1001,45.46,11656,5197,44.59,25644,11806,46.04,30968,14210,45.89,21680,10197,47.03,10810,5025,46.48,5278,2382,45.13,2363,1122,47.48
|
||||
98,Sven,str,"Carry, Disabler, Initiator, Durable, Nuker",3552,1761,49.58,19792,9744,49.23,41296,20478,49.59,48709,24228,49.74,35460,17828,50.28,19795,10065,50.85,11014,5655,51.34,6701,3387,50.54
|
||||
99,Techies,all,"Nuker, Disabler",2356,1131,48.01,13105,6245,47.65,27293,12893,47.24,29180,13507,46.29,18216,8407,46.15,8266,3771,45.62,3459,1644,47.53,1319,591,44.81
|
||||
100,Templar Assassin,agi,"Carry, Escape",2142,955,44.58,10932,4758,43.52,21211,9445,44.53,23928,10909,45.59,17399,8242,47.37,9567,4656,48.67,5525,2708,49.01,3524,1775,50.37
|
||||
101,Terrorblade,agi,"Carry, Pusher, Nuker",1115,484,43.41,5686,2430,42.74,10856,4638,42.72,11518,5041,43.77,8059,3540,43.93,4192,1827,43.58,2419,1082,44.73,1621,700,43.18
|
||||
102,Tidehunter,str,"Initiator, Durable, Disabler, Nuker, Carry",1835,855,46.59,11159,5369,48.11,26222,12699,48.43,30735,14879,48.41,20523,9727,47.4,9731,4740,48.71,4426,2079,46.97,1998,936,46.85
|
||||
103,Timbersaw,all,"Nuker, Durable, Escape",1050,448,42.67,5854,2584,44.14,12301,5391,43.83,14295,6097,42.65,9697,4217,43.49,4992,2163,43.33,2419,1021,42.21,1139,471,41.35
|
||||
104,Tinker,int,"Carry, Nuker, Pusher",2106,944,44.82,11058,5200,47.02,24263,11826,48.74,27531,13614,49.45,19017,9732,51.18,9416,4875,51.77,4700,2466,52.47,1951,1036,53.1
|
||||
105,Tiny,str,"Carry, Nuker, Pusher, Initiator, Durable, Disabler",1434,654,45.61,7742,3452,44.59,15936,6950,43.61,17139,7468,43.57,11269,4991,44.29,5485,2491,45.41,2599,1216,46.79,1058,519,49.05
|
||||
106,Treant Protector,str,"Support, Initiator, Durable, Disabler, Escape",1646,899,54.62,11430,5881,51.45,28752,15124,52.6,36093,19344,53.59,28762,15532,54.0,16751,9227,55.08,9870,5468,55.4,6801,3855,56.68
|
||||
107,Troll Warlord,agi,"Carry, Pusher, Disabler, Durable",3176,1720,54.16,14007,7445,53.15,24729,13022,52.66,25424,13228,52.03,17362,9030,52.01,9427,4913,52.12,4767,2499,52.42,2341,1242,53.05
|
||||
108,Tusk,str,"Initiator, Disabler, Nuker",1263,565,44.73,8338,3777,45.3,19642,8869,45.15,25308,11520,45.52,18927,8853,46.77,10100,4820,47.72,5220,2502,47.93,2350,1157,49.23
|
||||
109,Underlord,str,"Support, Nuker, Disabler, Durable, Escape",797,405,50.82,4583,2341,51.08,10067,5057,50.23,11650,5786,49.67,7224,3561,49.29,3310,1591,48.07,1368,673,49.2,395,190,48.1
|
||||
110,Undying,str,"Support, Durable, Disabler, Nuker",3170,1620,51.1,19403,10116,52.14,40582,21110,52.02,40850,21182,51.85,23985,12454,51.92,10395,5389,51.84,4541,2336,51.44,2064,1012,49.03
|
||||
111,Ursa,agi,"Carry, Durable, Disabler",2801,1273,45.45,15132,7038,46.51,33269,15478,46.52,40822,19264,47.19,29348,14011,47.74,15262,7375,48.32,7507,3622,48.25,3004,1473,49.03
|
||||
112,Vengeful Spirit,all,"Support, Initiator, Disabler, Nuker, Escape",2186,1108,50.69,15817,8285,52.38,41843,21809,52.12,57524,30476,52.98,45512,24120,53.0,25581,13382,52.31,13758,7121,51.76,8276,4303,51.99
|
||||
113,Venomancer,all,"Support, Nuker, Initiator, Pusher, Disabler",2309,1187,51.41,14669,7463,50.88,34787,18020,51.8,41797,21690,51.89,28706,15085,52.55,13974,7338,52.51,6538,3495,53.46,2794,1459,52.22
|
||||
114,Viper,agi,"Carry, Durable, Initiator, Disabler",4100,2057,50.17,18991,9510,50.08,33517,16923,50.49,32728,16677,50.96,18537,9427,50.86,7851,3928,50.03,3260,1652,50.67,1176,610,51.87
|
||||
115,Visage,all,"Support, Nuker, Durable, Disabler, Pusher",331,171,51.66,1638,813,49.63,3240,1577,48.67,3840,1986,51.72,3108,1609,51.77,1995,1055,52.88,1309,702,53.63,858,457,53.26
|
||||
116,Void Spirit,all,"Carry, Escape, Nuker, Disabler",1565,727,46.45,8672,4096,47.23,20010,9694,48.45,25213,12376,49.09,18817,9231,49.06,10026,4920,49.07,4788,2319,48.43,2006,964,48.06
|
||||
117,Warlock,int,"Support, Initiator, Disabler",2547,1369,53.75,18931,10331,54.57,49795,26999,54.22,66697,36220,54.31,48401,25668,53.03,24999,12942,51.77,12575,6356,50.54,6183,2934,47.45
|
||||
118,Weaver,agi,"Carry, Escape",2818,1389,49.29,13873,6770,48.8,23493,11571,49.25,21545,10694,49.64,12911,6427,49.78,5809,2928,50.4,2960,1455,49.16,1303,719,55.18
|
||||
119,Windranger,all,"Carry, Support, Disabler, Escape, Nuker",3861,1814,46.98,19934,9223,46.27,40644,18807,46.27,44476,20652,46.43,28952,13508,46.66,13418,6297,46.93,5898,2782,47.17,2374,1142,48.1
|
||||
120,Winter Wyvern,all,"Support, Disabler, Nuker",821,371,45.19,5168,2424,46.9,10544,5014,47.55,11184,5308,47.46,7426,3512,47.29,3730,1854,49.71,1862,934,50.16,944,464,49.15
|
||||
121,Witch Doctor,int,"Support, Nuker, Disabler",7504,4173,55.61,45501,25616,56.3,99664,54963,55.15,111382,60421,54.25,71830,37860,52.71,33164,17334,52.27,14610,7442,50.94,4196,2076,49.48
|
||||
122,Wraith King,str,"Carry, Support, Durable, Disabler, Initiator",4175,2266,54.28,26362,14516,55.06,58733,32403,55.17,66283,36503,55.07,42360,23083,54.49,19084,10251,53.72,8334,4315,51.78,2707,1376,50.83
|
||||
123,Zeus,int,"Nuker, Carry",4132,2106,50.97,23721,12487,52.64,51568,27475,53.28,58333,31078,53.28,37821,20047,53.0,17901,9504,53.09,8539,4459,52.22,3400,1791,52.68
|
||||
|
BIN
belyaeva_ekaterina_lab_4/ImmortalInfo.png
Normal file
|
After Width: | Height: | Size: 197 KiB |
31
belyaeva_ekaterina_lab_4/README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
## Задание
|
||||
|
||||
Использовать метод кластеризациипо варианту для данных из таблицы 1 по варианту(таблица 9),самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи
|
||||
Вариант 6 - dendogram
|
||||
|
||||
## Как запустить лабораторную
|
||||
Запустить файл main.py
|
||||
## Используемые технологии
|
||||
Библиотеки pandas, matplotlib, scipy, их компоненты
|
||||
## Описание лабораторной (программы)
|
||||
Данный код берет данные из датасета о персонажах Dota 2, где описаны атрибуты персонажей, их роли, название, и как часто их пикают и какой у них винрейт на каждом звании в Доте, от реркута до титана.
|
||||
|
||||
В моем случае была поставлена задача сгруппировать персонажей по их винрейту и частоте их пиков на определенных рангах.
|
||||
|
||||
Программа берет столбцы Name, Herald Win Rate, Herald Picks, создает матрицу для анализа и вычисляет матрицу связей, а затем выводит дендограмму, где персонажи объединены по тому, как часто их пикают и какой у них винрейт.
|
||||
|
||||
## Результат
|
||||
|
||||
В результате получаем дендограмму, где персонажи сгруппированы по частоте пиков и винрейту. Наглядное представление оказалось очень точным и такой способ решения поставленной задачи выполнил свою работу хорошо.
|
||||
|
||||
Например, на диаграмме ниже можно обратить внимание на то, что на ранге рекрут персонажи Phantom Asassin, Witch Doctor, Sniper и Pudge стоят вместе в правом нижнем углу. Такое наблюдение говорит о том, что датасет очень приближен к реальным данным и составлен правильно, а так же о том, что программа работает верно и выдает правильный, приближенный к реальности, результат.
|
||||
|
||||

|
||||
|
||||
Если же посмотреть на результат по данным для ранга титан, можно увидеть других героев, объединенных друг с другом по тому же приципу.
|
||||
|
||||

|
||||
|
||||
Сначала я хотела объединить героев по их винрейту на всех рангах, но такая информация не несет в себе много смысла, поэтому задача, которую я описала выше, сформулирована правильно, несет в себе смысл и решается заданным способом.
|
||||
|
||||
Такую статистику можно посмотреть по любому из рангов, заменив в коде слово Herald на интересующий ранг.
|
||||
BIN
belyaeva_ekaterina_lab_4/heraldInfo.png
Normal file
|
After Width: | Height: | Size: 160 KiB |
29
belyaeva_ekaterina_lab_4/main.py
Normal file
@@ -0,0 +1,29 @@
|
||||
import pandas as pd
|
||||
import matplotlib.pyplot as plt
|
||||
from scipy.cluster.hierarchy import dendrogram, linkage
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv('Current_Pub_Meta.csv')
|
||||
|
||||
# Выбор нужных столбцов
|
||||
selected_columns = ['Name', 'Herald Picks', 'Herald Win Rate']
|
||||
data = data[selected_columns]
|
||||
|
||||
# Создание матрицы для анализа
|
||||
matrix = data.drop('Name', axis=1).values
|
||||
|
||||
# Вычисление матрицы связей
|
||||
linked = linkage(matrix, 'ward')
|
||||
|
||||
# Рисование дендрограммы
|
||||
plt.figure(figsize=(10, 6))
|
||||
dendrogram(linked,
|
||||
orientation='top',
|
||||
labels=data['Name'].tolist(),
|
||||
distance_sort='descending',
|
||||
show_leaf_counts=True)
|
||||
plt.title('Dendrogram of Hero Win Percentage')
|
||||
plt.xlabel('Heroes')
|
||||
plt.ylabel('Distance')
|
||||
plt.xticks(rotation=90)
|
||||
plt.show()
|
||||
125
belyaeva_ekaterina_lab_5/Current_Pub_Meta.csv
Normal file
@@ -0,0 +1,125 @@
|
||||
,Name,Primary Attribute,Roles,Herald Picks,Herald Wins,Herald Win Rate,Guardian Picks,Guardian Wins,Guardian Win Rate,Crusader Picks,Crusader Wins,Crusader Win Rate,Archon Picks,Archon Wins,Archon Win Rate,Legend Picks,Legend Wins,Legend Win Rate,Ancient Picks,Ancient Wins,Ancient Win Rate,Divine Picks,Divine Wins,Divine Win Rate,Immortal Picks,Immortal Wins,Immortal Win Rate
|
||||
0,Abaddon,all,"Support, Carry, Durable",1111,575,51.76,6408,3309,51.64,13811,7050,51.05,16497,8530,51.71,11360,5877,51.73,5571,2893,51.93,2632,1345,51.1,991,497,50.15
|
||||
1,Alchemist,str,"Carry, Support, Durable, Disabler, Initiator, Nuker",1119,486,43.43,6370,2883,45.26,12238,5617,45.9,13028,6130,47.05,8455,4055,47.96,4120,1984,48.16,2021,1023,50.62,860,424,49.3
|
||||
2,Ancient Apparition,int,"Support, Disabler, Nuker",2146,1073,50.0,13697,7069,51.61,30673,16118,52.55,35145,18219,51.84,23114,12166,52.63,10688,5528,51.72,5035,2573,51.1,2134,1076,50.42
|
||||
3,Anti-Mage,agi,"Carry, Escape, Nuker",3765,1818,48.29,22050,10774,48.86,47371,23304,49.19,49115,24074,49.02,28599,13991,48.92,12303,5958,48.43,4866,2349,48.27,1502,751,50.0
|
||||
4,Arc Warden,agi,"Carry, Escape, Nuker",1448,704,48.62,8047,4162,51.72,14946,7982,53.41,14711,7875,53.53,9472,5167,54.55,4323,2309,53.41,2104,1148,54.56,789,435,55.13
|
||||
5,Axe,str,"Initiator, Durable, Disabler, Carry",5343,2880,53.9,32652,17719,54.27,71010,37736,53.14,77869,40559,52.09,49182,25079,50.99,22637,11353,50.15,10114,5000,49.44,3795,1837,48.41
|
||||
6,Bane,all,"Support, Disabler, Nuker, Durable",745,334,44.83,4983,2422,48.61,11332,5504,48.57,13633,6767,49.64,10132,5032,49.66,5596,2861,51.13,3028,1555,51.35,1958,1055,53.88
|
||||
7,Batrider,all,"Initiator, Disabler, Escape",349,136,38.97,1983,812,40.95,4053,1595,39.35,4725,1861,39.39,3173,1275,40.18,1678,731,43.56,802,362,45.14,497,227,45.67
|
||||
8,Beastmaster,all,"Initiator, Disabler, Durable, Nuker",402,174,43.28,2447,1060,43.32,5787,2569,44.39,6930,3092,44.62,5288,2389,45.18,2816,1274,45.24,1593,752,47.21,1176,539,45.83
|
||||
9,Bloodseeker,agi,"Carry, Disabler, Nuker, Initiator",2765,1382,49.98,12589,6270,49.81,21781,10683,49.05,20961,10420,49.71,13035,6430,49.33,6210,3006,48.41,2941,1475,50.15,1465,718,49.01
|
||||
10,Bounty Hunter,agi,"Escape, Nuker",3852,1868,48.49,19609,9535,48.63,36362,17600,48.4,37059,18314,49.42,22934,11518,50.22,10584,5276,49.85,5105,2594,50.81,2498,1325,53.04
|
||||
11,Brewmaster,all,"Carry, Initiator, Durable, Disabler, Nuker",545,280,51.38,3564,1745,48.96,8941,4388,49.08,12340,6111,49.52,11185,5623,50.27,7645,3906,51.09,4812,2478,51.5,3533,1820,51.51
|
||||
12,Bristleback,str,"Carry, Durable, Initiator, Nuker",5884,3262,55.44,27952,14587,52.19,48847,24379,49.91,46702,22927,49.09,27466,13319,48.49,12398,5969,48.14,5865,2915,49.7,2639,1304,49.41
|
||||
13,Broodmother,all,"Carry, Pusher, Escape, Nuker",456,173,37.94,2048,842,41.11,3444,1462,42.45,3392,1448,42.69,2193,1048,47.79,1203,602,50.04,795,422,53.08,453,230,50.77
|
||||
14,Centaur Warrunner,str,"Durable, Initiator, Disabler, Nuker, Escape",1721,911,52.93,11754,6266,53.31,28691,15201,52.98,35369,18741,52.99,25393,13468,53.04,12653,6607,52.22,6124,3181,51.94,2442,1243,50.9
|
||||
15,Chaos Knight,str,"Carry, Disabler, Durable, Pusher, Initiator",3032,1639,54.06,16762,8931,53.28,31892,17139,53.74,30697,16435,53.54,18217,9810,53.85,8572,4620,53.9,4230,2291,54.16,1750,943,53.89
|
||||
16,Chen,all,"Support, Pusher",284,125,44.01,1450,678,46.76,2969,1345,45.3,3258,1604,49.23,2641,1331,50.4,1488,767,51.55,970,512,52.78,770,448,58.18
|
||||
17,Clinkz,agi,"Carry, Escape, Pusher",3151,1608,51.03,13891,7141,51.41,25465,12938,50.81,27327,14066,51.47,18846,9726,51.61,9452,4890,51.74,4765,2475,51.94,2093,1052,50.26
|
||||
18,Clockwerk,all,"Initiator, Disabler, Durable, Nuker",816,397,48.65,5860,2837,48.41,14478,6929,47.86,18466,8843,47.89,13143,6301,47.94,6612,3169,47.93,3286,1581,48.11,1378,658,47.75
|
||||
19,Crystal Maiden,int,"Support, Disabler, Nuker",4821,2529,52.46,26584,13626,51.26,52168,26040,49.92,52258,25365,48.54,30690,14848,48.38,13295,6404,48.17,5602,2680,47.84,1638,771,47.07
|
||||
20,Dark Seer,all,"Initiator, Escape, Disabler",627,320,51.04,3675,1884,51.27,7881,3803,48.26,9589,4844,50.52,7186,3573,49.72,3902,1983,50.82,2145,1095,51.05,1217,593,48.73
|
||||
21,Dark Willow,all,"Support, Nuker, Disabler, Escape",2654,1293,48.72,13829,6657,48.14,28142,13480,47.9,32114,15785,49.15,23100,11331,49.05,12052,5909,49.03,6400,3182,49.72,3708,1915,51.65
|
||||
22,Dawnbreaker,str,"Carry, Durable",1746,875,50.11,12297,6105,49.65,32398,15921,49.14,44846,21936,48.91,35474,17441,49.17,19770,9832,49.73,10637,5263,49.48,6339,3173,50.06
|
||||
23,Dazzle,all,"Support, Nuker, Disabler",2827,1418,50.16,19852,9758,49.15,48236,23691,49.11,56417,27798,49.27,38159,18642,48.85,18695,9199,49.21,8530,4239,49.7,3382,1654,48.91
|
||||
24,Death Prophet,int,"Carry, Pusher, Nuker, Disabler",1372,659,48.03,6643,3145,47.34,11987,5729,47.79,12268,5856,47.73,7455,3606,48.37,3591,1698,47.28,1872,902,48.18,926,459,49.57
|
||||
25,Disruptor,int,"Support, Disabler, Nuker, Initiator",1541,757,49.12,11104,5331,48.01,27746,13542,48.81,33742,16310,48.34,23173,11096,47.88,10907,5201,47.68,4859,2255,46.41,1863,861,46.22
|
||||
26,Doom,str,"Carry, Disabler, Initiator, Durable, Nuker",1049,474,45.19,6112,2767,45.27,13700,6056,44.2,15454,6925,44.81,10727,4842,45.14,5444,2451,45.02,2979,1348,45.25,1545,731,47.31
|
||||
27,Dragon Knight,str,"Carry, Pusher, Durable, Disabler, Initiator, Nuker",1950,942,48.31,10643,5274,49.55,20451,9733,47.59,20326,9671,47.58,11674,5544,47.49,4979,2355,47.3,2024,973,48.07,725,341,47.03
|
||||
28,Drow Ranger,agi,"Carry, Disabler, Pusher",5737,2904,50.62,29675,14831,49.98,57655,28573,49.56,56682,27927,49.27,34310,16607,48.4,15050,7171,47.65,5947,2815,47.33,1768,788,44.57
|
||||
29,Earth Spirit,str,"Nuker, Escape, Disabler, Initiator, Durable",1038,465,44.8,7420,3276,44.15,20807,9432,45.33,30107,14166,47.05,25314,12148,47.99,14579,7041,48.3,7678,3802,49.52,4379,2169,49.53
|
||||
30,Earthshaker,str,"Support, Initiator, Disabler, Nuker",5012,2455,48.98,29784,14662,49.23,67050,33111,49.38,79963,39843,49.83,57108,28961,50.71,28650,14591,50.93,14186,7296,51.43,6151,3165,51.46
|
||||
31,Elder Titan,str,"Initiator, Disabler, Nuker, Durable",471,212,45.01,2551,1248,48.92,5213,2570,49.3,5572,2809,50.41,3847,1942,50.48,1964,998,50.81,1124,613,54.54,550,292,53.09
|
||||
32,Ember Spirit,agi,"Carry, Escape, Nuker, Disabler, Initiator",1514,635,41.94,9180,3836,41.79,20578,8738,42.46,25152,10844,43.11,17703,7814,44.14,8538,3793,44.42,4265,1892,44.36,2065,928,44.94
|
||||
33,Enchantress,int,"Support, Pusher, Durable, Disabler",1794,848,47.27,8050,3622,44.99,12921,5686,44.01,11673,4974,42.61,6863,2840,41.38,2948,1212,41.11,1434,654,45.61,806,318,39.45
|
||||
34,Enigma,all,"Disabler, Initiator, Pusher",1317,588,44.65,6937,3171,45.71,12908,5979,46.32,11687,5428,46.44,6194,2839,45.83,2493,1127,45.21,938,437,46.59,338,159,47.04
|
||||
35,Faceless Void,agi,"Carry, Initiator, Disabler, Escape, Durable",4323,2043,47.26,25618,11902,46.46,54581,25874,47.4,60671,28993,47.79,40137,19611,48.86,19376,9620,49.65,9579,4828,50.4,4439,2256,50.82
|
||||
36,Grimstroke,int,"Support, Nuker, Disabler, Escape",1455,694,47.7,9714,4789,49.3,24688,12430,50.35,32027,16094,50.25,23193,11795,50.86,12102,6100,50.4,6191,3047,49.22,3449,1666,48.3
|
||||
37,Gyrocopter,agi,"Carry, Nuker, Disabler",2560,1213,47.38,16589,7882,47.51,42072,20358,48.39,54200,26229,48.39,39414,19053,48.34,20164,9781,48.51,10164,4937,48.57,5241,2507,47.83
|
||||
38,Hoodwink,agi,"Support, Nuker, Escape, Disabler",2420,1126,46.53,14034,6800,48.45,31382,14964,47.68,35684,16966,47.55,22626,10651,47.07,9949,4690,47.14,4349,2089,48.03,1533,703,45.86
|
||||
39,Huskar,str,"Carry, Durable, Initiator",3501,1603,45.79,14234,6639,46.64,22794,10912,47.87,21801,10763,49.37,13811,6919,50.1,6769,3535,52.22,3556,1822,51.24,1936,993,51.29
|
||||
40,Invoker,all,"Carry, Nuker, Disabler, Escape, Pusher",4330,2042,47.16,27625,13176,47.7,69035,33863,49.05,86745,43479,50.12,61821,31510,50.97,31459,16321,51.88,15431,8195,53.11,7852,4148,52.83
|
||||
41,Io,all,"Support, Escape, Nuker",1274,615,48.27,6158,2999,48.7,12762,6247,48.95,14216,7024,49.41,9564,4843,50.64,5301,2685,50.65,2789,1463,52.46,1464,773,52.8
|
||||
42,Jakiro,int,"Support, Nuker, Pusher, Disabler",3147,1708,54.27,22718,12413,54.64,56736,30984,54.61,70038,37473,53.5,46389,24997,53.89,22084,11639,52.7,9838,5103,51.87,3282,1729,52.68
|
||||
43,Juggernaut,agi,"Carry, Pusher, Escape",5585,2711,48.54,30394,14800,48.69,62313,30581,49.08,65590,32344,49.31,39235,19326,49.26,16334,8012,49.05,6419,3066,47.76,1576,731,46.38
|
||||
44,Keeper of the Light,int,"Support, Nuker, Disabler",896,353,39.4,5051,2216,43.87,10452,4579,43.81,11614,5322,45.82,7870,3627,46.09,4268,2001,46.88,2147,1043,48.58,1333,588,44.11
|
||||
45,Kunkka,str,"Carry, Support, Disabler, Initiator, Durable, Nuker",2251,1124,49.93,13474,6828,50.68,31210,16196,51.89,39691,21293,53.65,30314,16458,54.29,15706,8793,55.98,7884,4339,55.04,3458,1898,54.89
|
||||
46,Legion Commander,str,"Carry, Disabler, Initiator, Durable, Nuker",6263,3264,52.12,37100,19157,51.64,81491,41557,51.0,91431,46558,50.92,59383,29917,50.38,27945,13917,49.8,13193,6587,49.93,5601,2745,49.01
|
||||
47,Leshrac,int,"Carry, Support, Nuker, Pusher, Disabler",674,316,46.88,3872,1799,46.46,7490,3433,45.83,7903,3604,45.6,5322,2526,47.46,2687,1298,48.31,1325,647,48.83,721,357,49.51
|
||||
48,Lich,int,"Support, Nuker",2700,1412,52.3,16646,8820,52.99,37785,19685,52.1,45471,23554,51.8,31203,16108,51.62,15530,7821,50.36,7243,3597,49.66,2520,1258,49.92
|
||||
49,Lifestealer,str,"Carry, Durable, Escape, Disabler",2515,1213,48.23,14131,6978,49.38,29724,14627,49.21,31211,15581,49.92,18970,9481,49.98,8689,4400,50.64,3630,1821,50.17,1229,617,50.2
|
||||
50,Lina,int,"Support, Carry, Nuker, Disabler",4512,2030,44.99,21927,10156,46.32,45301,21210,46.82,54229,25956,47.86,40016,19138,47.83,21072,10112,47.99,10481,5031,48.0,4369,2138,48.94
|
||||
51,Lion,int,"Support, Disabler, Nuker, Initiator",6204,2855,46.02,37869,17465,46.12,80124,36649,45.74,84390,38176,45.24,50720,22914,45.18,21698,9784,45.09,9308,4280,45.98,3220,1496,46.46
|
||||
52,Lone Druid,all,"Carry, Pusher, Durable",909,483,53.14,4714,2421,51.36,10987,5858,53.32,14580,7968,54.65,11810,6490,54.95,7241,3971,54.84,4024,2240,55.67,2303,1259,54.67
|
||||
53,Luna,agi,"Carry, Nuker, Pusher",1927,904,46.91,9091,4271,46.98,16571,7922,47.81,16035,7615,47.49,9728,4634,47.64,4463,2103,47.12,1912,911,47.65,719,322,44.78
|
||||
54,Lycan,all,"Carry, Pusher, Durable, Escape",374,174,46.52,1894,915,48.31,3691,1744,47.25,3824,1905,49.82,2694,1332,49.44,1460,753,51.58,827,411,49.7,532,289,54.32
|
||||
55,Magnus,all,"Initiator, Disabler, Nuker, Escape",770,339,44.03,5789,2651,45.79,17837,7954,44.59,26126,12058,46.15,20634,9592,46.49,10574,5056,47.82,4565,2073,45.41,1606,751,46.76
|
||||
56,Marci,all,"Support, Carry, Initiator, Disabler, Escape",1370,620,45.26,7092,3252,45.85,15199,7240,47.63,18485,8874,48.01,13308,6305,47.38,7176,3476,48.44,3689,1882,51.02,1746,883,50.57
|
||||
57,Mars,str,"Carry, Initiator, Disabler, Durable",862,375,43.5,5719,2529,44.22,15156,6756,44.58,20719,9369,45.22,16419,7387,44.99,9044,4052,44.8,4536,2093,46.14,1926,868,45.07
|
||||
58,Medusa,agi,"Carry, Disabler, Durable",1898,902,47.52,9289,4512,48.57,16504,7818,47.37,14796,6886,46.54,7488,3449,46.06,2775,1270,45.77,1073,482,44.92,394,184,46.7
|
||||
59,Meepo,agi,"Carry, Escape, Nuker, Disabler, Initiator, Pusher",1004,523,52.09,3970,1990,50.13,6904,3587,51.96,7166,3646,50.88,4906,2563,52.24,2383,1282,53.8,1139,588,51.62,585,300,51.28
|
||||
60,Mirana,all,"Carry, Support, Escape, Nuker, Disabler",2499,1193,47.74,16954,8135,47.98,39985,19097,47.76,45169,21554,47.72,28467,13456,47.27,12800,6047,47.24,5272,2500,47.42,1824,874,47.92
|
||||
61,Monkey King,agi,"Carry, Escape, Disabler, Initiator",3191,1384,43.37,17306,7544,43.59,35734,16113,45.09,40778,18322,44.93,27558,12630,45.83,14034,6433,45.84,6650,3152,47.4,3040,1440,47.37
|
||||
62,Morphling,agi,"Carry, Escape, Durable, Nuker, Disabler",1521,690,45.36,8620,4006,46.47,18075,8161,45.15,20414,9235,45.24,14395,6530,45.36,7697,3551,46.13,4432,2050,46.25,2560,1190,46.48
|
||||
63,Muerta,int,"Carry, Nuker, Disabler",2130,1089,51.13,10787,5740,53.21,22602,11898,52.64,27609,14495,52.5,20175,10465,51.87,10662,5518,51.75,5462,2759,50.51,2948,1517,51.46
|
||||
64,Naga Siren,agi,"Carry, Support, Pusher, Disabler, Initiator, Escape",1502,804,53.53,6495,3356,51.67,10423,5234,50.22,9830,4929,50.14,6057,2971,49.05,3216,1675,52.08,1855,933,50.3,1242,634,51.05
|
||||
65,Nature's Prophet,int,"Carry, Pusher, Escape, Nuker",5991,3029,50.56,36433,18143,49.8,83118,42095,50.64,100341,51268,51.09,69436,35870,51.66,34256,17858,52.13,16585,8745,52.73,7182,3755,52.28
|
||||
66,Necrophos,int,"Carry, Nuker, Durable, Disabler",4776,2702,56.57,28535,15771,55.27,62186,34285,55.13,70212,38163,54.35,46539,24708,53.09,21607,11302,52.31,9677,4994,51.61,3418,1733,50.7
|
||||
67,Night Stalker,str,"Carry, Initiator, Durable, Disabler, Nuker",1189,594,49.96,7868,3892,49.47,19446,10004,51.45,25524,13506,52.91,20138,10828,53.77,10767,5651,52.48,5499,2889,52.54,2415,1257,52.05
|
||||
68,Nyx Assassin,all,"Disabler, Nuker, Initiator, Escape",1718,867,50.47,10925,5525,50.57,27207,14073,51.73,34684,18059,52.07,25736,13572,52.74,13313,7093,53.28,6485,3444,53.11,2852,1468,51.47
|
||||
69,Ogre Magi,str,"Support, Nuker, Disabler, Durable, Initiator",5331,2845,53.37,31507,16299,51.73,62954,32248,51.22,61758,31373,50.8,33746,16988,50.34,13262,6654,50.17,4861,2420,49.78,1271,654,51.46
|
||||
70,Omniknight,str,"Support, Durable, Nuker",975,479,49.13,6426,3109,48.38,14641,7319,49.99,17258,8731,50.59,11695,5916,50.59,5746,2993,52.09,2870,1469,51.18,1333,656,49.21
|
||||
71,Oracle,int,"Support, Nuker, Disabler, Escape",796,384,48.24,4857,2417,49.76,13141,6645,50.57,18944,9853,52.01,15221,7964,52.32,8356,4458,53.35,4475,2380,53.18,1905,1018,53.44
|
||||
72,Outworld Destroyer,int,"Carry, Nuker, Disabler",2226,1118,50.22,13388,6864,51.27,33284,17362,52.16,43991,23377,53.14,32021,16994,53.07,16655,8724,52.38,8123,4218,51.93,3176,1649,51.92
|
||||
73,Pangolier,all,"Carry, Nuker, Disabler, Durable, Escape, Initiator",1156,534,46.19,7189,3209,44.64,17802,7937,44.58,25785,11677,45.29,21727,10144,46.69,13064,6351,48.61,7567,3737,49.39,5275,2734,51.83
|
||||
74,Phantom Assassin,agi,"Carry, Escape",8553,4426,51.75,48549,25553,52.63,104756,54881,52.39,119332,62511,52.38,79140,41143,51.99,37399,19325,51.67,17774,9077,51.07,7819,3856,49.32
|
||||
75,Phantom Lancer,agi,"Carry, Escape, Pusher, Nuker",3641,1960,53.83,19550,10374,53.06,38576,20633,53.49,41505,22310,53.75,26401,14268,54.04,12437,6590,52.99,5708,2985,52.3,2383,1243,52.16
|
||||
76,Phoenix,all,"Support, Nuker, Initiator, Escape, Disabler",743,315,42.4,5231,2471,47.24,13950,6633,47.55,18350,8864,48.31,13972,6715,48.06,7787,3761,48.3,4322,2132,49.33,2610,1325,50.77
|
||||
77,Primal Beast,str,"Initiator, Durable, Disabler",1455,701,48.18,9333,4448,47.66,22800,11058,48.5,30084,14643,48.67,24307,11993,49.34,13970,6991,50.04,7742,3890,50.25,4625,2407,52.04
|
||||
78,Puck,int,"Initiator, Disabler, Escape, Nuker",871,399,45.81,5773,2628,45.52,16596,7578,45.66,24480,11315,46.22,20070,9497,47.32,11023,5298,48.06,5656,2714,47.98,2555,1200,46.97
|
||||
79,Pudge,str,"Disabler, Initiator, Durable, Nuker",7677,3796,49.45,50891,24776,48.68,114784,56289,49.04,129604,63097,48.68,85800,41542,48.42,41730,20239,48.5,19823,9530,48.08,7112,3431,48.24
|
||||
80,Pugna,int,"Nuker, Pusher",2075,944,45.49,9998,4695,46.96,18962,8958,47.24,20240,9965,49.23,12807,6199,48.4,5825,2855,49.01,2758,1387,50.29,1195,592,49.54
|
||||
81,Queen of Pain,int,"Carry, Nuker, Escape",2287,1100,48.1,15119,7354,48.64,37137,18118,48.79,47706,23657,49.59,35500,18018,50.75,18405,9289,50.47,9243,4689,50.73,4227,2113,49.99
|
||||
82,Razor,agi,"Carry, Durable, Nuker, Pusher",2470,1231,49.84,12000,5964,49.7,24666,12142,49.23,30334,14844,48.94,21832,10558,48.36,11917,5679,47.65,6092,2912,47.8,3144,1551,49.33
|
||||
83,Riki,agi,"Carry, Escape, Disabler",3684,1929,52.36,19022,9891,52.0,35638,18582,52.14,33908,17415,51.36,20194,10312,51.06,8726,4377,50.16,3735,1855,49.67,1160,559,48.19
|
||||
84,Rubick,int,"Support, Disabler, Nuker",3090,1404,45.44,21639,9303,42.99,57417,24590,42.83,74874,32603,43.54,55186,24219,43.89,28206,12568,44.56,13732,6106,44.47,5764,2642,45.84
|
||||
85,Sand King,all,"Initiator, Disabler, Support, Nuker, Escape",2633,1513,57.46,13097,7323,55.91,25271,13807,54.64,26724,14323,53.6,17384,9144,52.6,7907,4104,51.9,3394,1719,50.65,1211,611,50.45
|
||||
86,Shadow Demon,int,"Support, Disabler, Initiator, Nuker",547,236,43.14,3252,1426,43.85,7920,3524,44.49,9752,4551,46.67,7404,3467,46.83,3956,1876,47.42,2076,1004,48.36,1054,497,47.15
|
||||
87,Shadow Fiend,agi,"Carry, Nuker",5051,2544,50.37,27255,14064,51.6,58589,29830,50.91,65429,33097,50.58,41810,21189,50.68,18766,9401,50.1,8232,4000,48.59,3016,1430,47.41
|
||||
88,Shadow Shaman,int,"Support, Pusher, Disabler, Nuker, Initiator",5323,2795,52.51,29733,15606,52.49,58894,31236,53.04,58765,30895,52.57,34475,18242,52.91,15166,7986,52.66,6377,3323,52.11,2413,1253,51.93
|
||||
89,Silencer,int,"Carry, Support, Disabler, Initiator, Nuker",4229,2324,54.95,27878,14960,53.66,61698,33081,53.62,65256,34458,52.8,38589,19853,51.45,16889,8653,51.23,6836,3416,49.97,2236,1105,49.42
|
||||
90,Skywrath Mage,int,"Support, Nuker, Disabler",4000,2030,50.75,22783,11675,51.24,46512,23624,50.79,51329,25706,50.08,34167,17364,50.82,16693,8415,50.41,8496,4208,49.53,4389,2069,47.14
|
||||
91,Slardar,str,"Carry, Durable, Initiator, Disabler, Escape",3935,2129,54.1,21523,11602,53.91,43947,23701,53.93,47721,25633,53.71,29887,16132,53.98,14233,7722,54.25,6530,3467,53.09,2322,1205,51.89
|
||||
92,Slark,agi,"Carry, Escape, Disabler, Nuker",4815,2521,52.36,29413,14762,50.19,64004,31771,49.64,70173,34411,49.04,44780,21926,48.96,20864,10270,49.22,9969,4962,49.77,4565,2394,52.44
|
||||
93,Snapfire,all,"Support, Nuker, Disabler, Escape",1524,682,44.75,10646,4576,42.98,27103,12120,44.72,34711,15412,44.4,24351,10786,44.29,11723,5131,43.77,5227,2294,43.89,1987,868,43.68
|
||||
94,Sniper,agi,"Carry, Nuker",8022,4079,50.85,44508,22727,51.06,88690,45223,50.99,87190,44086,50.56,47411,23648,49.88,18092,8924,49.33,6130,3040,49.59,1370,662,48.32
|
||||
95,Spectre,agi,"Carry, Durable, Escape",3454,2008,58.14,22097,12356,55.92,49157,26961,54.85,55914,30100,53.83,36321,19338,53.24,16946,8960,52.87,7921,4163,52.56,2568,1370,53.35
|
||||
96,Spirit Breaker,str,"Carry, Initiator, Disabler, Durable, Escape",4788,2423,50.61,26662,13530,50.75,56535,28908,51.13,63991,32249,50.4,42512,21357,50.24,20119,9926,49.34,9499,4814,50.68,3761,1884,50.09
|
||||
97,Storm Spirit,int,"Carry, Escape, Nuker, Initiator, Disabler",2202,1001,45.46,11656,5197,44.59,25644,11806,46.04,30968,14210,45.89,21680,10197,47.03,10810,5025,46.48,5278,2382,45.13,2363,1122,47.48
|
||||
98,Sven,str,"Carry, Disabler, Initiator, Durable, Nuker",3552,1761,49.58,19792,9744,49.23,41296,20478,49.59,48709,24228,49.74,35460,17828,50.28,19795,10065,50.85,11014,5655,51.34,6701,3387,50.54
|
||||
99,Techies,all,"Nuker, Disabler",2356,1131,48.01,13105,6245,47.65,27293,12893,47.24,29180,13507,46.29,18216,8407,46.15,8266,3771,45.62,3459,1644,47.53,1319,591,44.81
|
||||
100,Templar Assassin,agi,"Carry, Escape",2142,955,44.58,10932,4758,43.52,21211,9445,44.53,23928,10909,45.59,17399,8242,47.37,9567,4656,48.67,5525,2708,49.01,3524,1775,50.37
|
||||
101,Terrorblade,agi,"Carry, Pusher, Nuker",1115,484,43.41,5686,2430,42.74,10856,4638,42.72,11518,5041,43.77,8059,3540,43.93,4192,1827,43.58,2419,1082,44.73,1621,700,43.18
|
||||
102,Tidehunter,str,"Initiator, Durable, Disabler, Nuker, Carry",1835,855,46.59,11159,5369,48.11,26222,12699,48.43,30735,14879,48.41,20523,9727,47.4,9731,4740,48.71,4426,2079,46.97,1998,936,46.85
|
||||
103,Timbersaw,all,"Nuker, Durable, Escape",1050,448,42.67,5854,2584,44.14,12301,5391,43.83,14295,6097,42.65,9697,4217,43.49,4992,2163,43.33,2419,1021,42.21,1139,471,41.35
|
||||
104,Tinker,int,"Carry, Nuker, Pusher",2106,944,44.82,11058,5200,47.02,24263,11826,48.74,27531,13614,49.45,19017,9732,51.18,9416,4875,51.77,4700,2466,52.47,1951,1036,53.1
|
||||
105,Tiny,str,"Carry, Nuker, Pusher, Initiator, Durable, Disabler",1434,654,45.61,7742,3452,44.59,15936,6950,43.61,17139,7468,43.57,11269,4991,44.29,5485,2491,45.41,2599,1216,46.79,1058,519,49.05
|
||||
106,Treant Protector,str,"Support, Initiator, Durable, Disabler, Escape",1646,899,54.62,11430,5881,51.45,28752,15124,52.6,36093,19344,53.59,28762,15532,54.0,16751,9227,55.08,9870,5468,55.4,6801,3855,56.68
|
||||
107,Troll Warlord,agi,"Carry, Pusher, Disabler, Durable",3176,1720,54.16,14007,7445,53.15,24729,13022,52.66,25424,13228,52.03,17362,9030,52.01,9427,4913,52.12,4767,2499,52.42,2341,1242,53.05
|
||||
108,Tusk,str,"Initiator, Disabler, Nuker",1263,565,44.73,8338,3777,45.3,19642,8869,45.15,25308,11520,45.52,18927,8853,46.77,10100,4820,47.72,5220,2502,47.93,2350,1157,49.23
|
||||
109,Underlord,str,"Support, Nuker, Disabler, Durable, Escape",797,405,50.82,4583,2341,51.08,10067,5057,50.23,11650,5786,49.67,7224,3561,49.29,3310,1591,48.07,1368,673,49.2,395,190,48.1
|
||||
110,Undying,str,"Support, Durable, Disabler, Nuker",3170,1620,51.1,19403,10116,52.14,40582,21110,52.02,40850,21182,51.85,23985,12454,51.92,10395,5389,51.84,4541,2336,51.44,2064,1012,49.03
|
||||
111,Ursa,agi,"Carry, Durable, Disabler",2801,1273,45.45,15132,7038,46.51,33269,15478,46.52,40822,19264,47.19,29348,14011,47.74,15262,7375,48.32,7507,3622,48.25,3004,1473,49.03
|
||||
112,Vengeful Spirit,all,"Support, Initiator, Disabler, Nuker, Escape",2186,1108,50.69,15817,8285,52.38,41843,21809,52.12,57524,30476,52.98,45512,24120,53.0,25581,13382,52.31,13758,7121,51.76,8276,4303,51.99
|
||||
113,Venomancer,all,"Support, Nuker, Initiator, Pusher, Disabler",2309,1187,51.41,14669,7463,50.88,34787,18020,51.8,41797,21690,51.89,28706,15085,52.55,13974,7338,52.51,6538,3495,53.46,2794,1459,52.22
|
||||
114,Viper,agi,"Carry, Durable, Initiator, Disabler",4100,2057,50.17,18991,9510,50.08,33517,16923,50.49,32728,16677,50.96,18537,9427,50.86,7851,3928,50.03,3260,1652,50.67,1176,610,51.87
|
||||
115,Visage,all,"Support, Nuker, Durable, Disabler, Pusher",331,171,51.66,1638,813,49.63,3240,1577,48.67,3840,1986,51.72,3108,1609,51.77,1995,1055,52.88,1309,702,53.63,858,457,53.26
|
||||
116,Void Spirit,all,"Carry, Escape, Nuker, Disabler",1565,727,46.45,8672,4096,47.23,20010,9694,48.45,25213,12376,49.09,18817,9231,49.06,10026,4920,49.07,4788,2319,48.43,2006,964,48.06
|
||||
117,Warlock,int,"Support, Initiator, Disabler",2547,1369,53.75,18931,10331,54.57,49795,26999,54.22,66697,36220,54.31,48401,25668,53.03,24999,12942,51.77,12575,6356,50.54,6183,2934,47.45
|
||||
118,Weaver,agi,"Carry, Escape",2818,1389,49.29,13873,6770,48.8,23493,11571,49.25,21545,10694,49.64,12911,6427,49.78,5809,2928,50.4,2960,1455,49.16,1303,719,55.18
|
||||
119,Windranger,all,"Carry, Support, Disabler, Escape, Nuker",3861,1814,46.98,19934,9223,46.27,40644,18807,46.27,44476,20652,46.43,28952,13508,46.66,13418,6297,46.93,5898,2782,47.17,2374,1142,48.1
|
||||
120,Winter Wyvern,all,"Support, Disabler, Nuker",821,371,45.19,5168,2424,46.9,10544,5014,47.55,11184,5308,47.46,7426,3512,47.29,3730,1854,49.71,1862,934,50.16,944,464,49.15
|
||||
121,Witch Doctor,int,"Support, Nuker, Disabler",7504,4173,55.61,45501,25616,56.3,99664,54963,55.15,111382,60421,54.25,71830,37860,52.71,33164,17334,52.27,14610,7442,50.94,4196,2076,49.48
|
||||
122,Wraith King,str,"Carry, Support, Durable, Disabler, Initiator",4175,2266,54.28,26362,14516,55.06,58733,32403,55.17,66283,36503,55.07,42360,23083,54.49,19084,10251,53.72,8334,4315,51.78,2707,1376,50.83
|
||||
123,Zeus,int,"Nuker, Carry",4132,2106,50.97,23721,12487,52.64,51568,27475,53.28,58333,31078,53.28,37821,20047,53.0,17901,9504,53.09,8539,4459,52.22,3400,1791,52.68
|
||||
|
BIN
belyaeva_ekaterina_lab_5/R2Score.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
42
belyaeva_ekaterina_lab_5/README.md
Normal file
@@ -0,0 +1,42 @@
|
||||
## Задание
|
||||
|
||||
Использовать регрессию по варианту для данных из таблицы 1 по варианту(таблица 10),самостоятельно сформулировав задачу. Оценить, насколько хорошо она подходит для решения сформулированной вами задачи
|
||||
Вариант 6 - полиномиальная регрессия
|
||||
|
||||
## Как запустить лабораторную
|
||||
Запустить файл main.py
|
||||
## Используемые технологии
|
||||
Библиотеки pandas, matplotlib, scikit-learn, их компоненты
|
||||
## Описание лабораторной (программы)
|
||||
Данный код берет данные из датасета о персонажах Dota 2, где описаны атрибуты персонажей, их роли, название, и как часто их пикают и какой у них винрейт на каждом звании в Доте, от реркута до титана.
|
||||
|
||||
В моем случае была поставлена задача предсказать винрейт персонажа по тому, как часто его берут и по его винрейту на
|
||||
смежных рангах (просто предсказать винрейт по тому, как часто его берут, нельзя, потому что винрейт зависит от текущей меты)
|
||||
|
||||
Программа берет столбцы Name, Archon Picks, Archon Win Rate, Legend Picks, Legend Win Rate, Ancient Picks, Ancient Win Rate.
|
||||
Все столбцы, кроме Name и Legend Win Rate, нужны для того чтобы обучить модель. Legend Win Rate -
|
||||
данные, которые нужно предсказать. Name - столбец для вывода результатов.
|
||||
|
||||
Дальше все по дефолту - программа делит данные на обучающую и тестовые выборки, просиходит
|
||||
применение данных для обучения, затем обучаем модель. После этого происходит то же самое с тестовыми данными и затем выводится
|
||||
оценка качества модели.
|
||||
|
||||
В конце программа строит график, где показывает точки обучающей и тестовой выборки, но к тестовой выборки я решила добавить названия
|
||||
персонажей, чтобы график был более наглядным, но в то же время не перегруженным.
|
||||
|
||||
## Результат
|
||||
|
||||
В результате получаем график, который показывает результаты обучающей и тестовой выборок.
|
||||

|
||||
|
||||
Помимо этого, программа вводит оценку качества модели:
|
||||

|
||||
|
||||
Из чего можно сделать вывод, что модель работает очень хорошо и успешно решает поставленную задачу.
|
||||
|
||||
Это объясняется тем, что модели было предоставлено достаточно большое количество признаков, по которым можно предсказать
|
||||
интересующие нас данные. Кроме того, винрейт персонажей взят со смежных рангов.
|
||||
|
||||
Если взять винрейт персонажей на рангах, которые
|
||||
находятся далеко от целевого, модель будет работать хуже, потому что чем больше разница в рангах, тем более разный винрейт у персонажей.
|
||||
Также, если бы было взято меньше признаков, оценка качества модели так же была бы ниже.
|
||||
BIN
belyaeva_ekaterina_lab_5/diagram.png
Normal file
|
After Width: | Height: | Size: 81 KiB |
47
belyaeva_ekaterina_lab_5/main.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import pandas as pd
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.model_selection import train_test_split
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
# Загрузка данных
|
||||
data = pd.read_csv('Current_Pub_Meta.csv')
|
||||
|
||||
X = data[['Archon Picks', 'Archon Win Rate', 'Legend Picks', 'Ancient Picks', 'Ancient Win Rate']]
|
||||
y = data['Legend Win Rate']
|
||||
names = data['Name']
|
||||
|
||||
# Разбиваем данные на обучающую и тестовую выборки
|
||||
X_train, X_test, y_train, y_test, names_train, names_test = train_test_split(X, y, names, test_size=0.1, random_state=42)
|
||||
|
||||
# Применяем полиномиальные признаки к обучающим данным
|
||||
poly_features = PolynomialFeatures(degree=2)
|
||||
X_train_poly = poly_features.fit_transform(X_train)
|
||||
|
||||
# Создаем и обучаем модель полиномиальной регрессии
|
||||
poly_model = LinearRegression()
|
||||
poly_model.fit(X_train_poly, y_train)
|
||||
|
||||
# Применяем полиномиальные признаки к тестовым данным и делаем предсказания
|
||||
X_test_poly = poly_features.transform(X_test)
|
||||
y_pred = poly_model.predict(X_test_poly)
|
||||
|
||||
# Оценка качества модели на тестовых данных
|
||||
r2 = poly_model.score(X_test_poly, y_test)
|
||||
print(f"R-квадрат: {r2}")
|
||||
|
||||
# Построение графика с именами персонажей
|
||||
plt.figure(figsize=(10, 6))
|
||||
plt.title('Корреляция между выбором персонажей и победами в ранге "Legend"')
|
||||
plt.grid(True)
|
||||
plt.scatter(X_train['Legend Picks'], y_train, color='blue', alpha=0.5, label='Обучающая выборка')
|
||||
plt.scatter(X_test['Legend Picks'], y_test, color='red', alpha=0.5, label='Тестовая выборка')
|
||||
|
||||
# Добавляем имена персонажей на график
|
||||
for i, name in enumerate(names_test):
|
||||
plt.annotate(name, (X_test['Legend Picks'].iloc[i], y_pred[i]), fontsize=8, alpha=0.7, color='black')
|
||||
|
||||
plt.xlabel('Legend Picks')
|
||||
plt.ylabel('Legend Win Rate')
|
||||
plt.legend()
|
||||
plt.show()
|
||||
125
belyaeva_ekaterina_lab_6/Current_Pub_Meta.csv
Normal file
@@ -0,0 +1,125 @@
|
||||
,Name,Primary Attribute,Roles,Herald Picks,Herald Wins,Herald Win Rate,Guardian Picks,Guardian Wins,Guardian Win Rate,Crusader Picks,Crusader Wins,Crusader Win Rate,Archon Picks,Archon Wins,Archon Win Rate,Legend Picks,Legend Wins,Legend Win Rate,Ancient Picks,Ancient Wins,Ancient Win Rate,Divine Picks,Divine Wins,Divine Win Rate,Immortal Picks,Immortal Wins,Immortal Win Rate
|
||||
0,Abaddon,all,"Support, Carry, Durable",1111,575,51.76,6408,3309,51.64,13811,7050,51.05,16497,8530,51.71,11360,5877,51.73,5571,2893,51.93,2632,1345,51.1,991,497,50.15
|
||||
1,Alchemist,str,"Carry, Support, Durable, Disabler, Initiator, Nuker",1119,486,43.43,6370,2883,45.26,12238,5617,45.9,13028,6130,47.05,8455,4055,47.96,4120,1984,48.16,2021,1023,50.62,860,424,49.3
|
||||
2,Ancient Apparition,int,"Support, Disabler, Nuker",2146,1073,50.0,13697,7069,51.61,30673,16118,52.55,35145,18219,51.84,23114,12166,52.63,10688,5528,51.72,5035,2573,51.1,2134,1076,50.42
|
||||
3,Anti-Mage,agi,"Carry, Escape, Nuker",3765,1818,48.29,22050,10774,48.86,47371,23304,49.19,49115,24074,49.02,28599,13991,48.92,12303,5958,48.43,4866,2349,48.27,1502,751,50.0
|
||||
4,Arc Warden,agi,"Carry, Escape, Nuker",1448,704,48.62,8047,4162,51.72,14946,7982,53.41,14711,7875,53.53,9472,5167,54.55,4323,2309,53.41,2104,1148,54.56,789,435,55.13
|
||||
5,Axe,str,"Initiator, Durable, Disabler, Carry",5343,2880,53.9,32652,17719,54.27,71010,37736,53.14,77869,40559,52.09,49182,25079,50.99,22637,11353,50.15,10114,5000,49.44,3795,1837,48.41
|
||||
6,Bane,all,"Support, Disabler, Nuker, Durable",745,334,44.83,4983,2422,48.61,11332,5504,48.57,13633,6767,49.64,10132,5032,49.66,5596,2861,51.13,3028,1555,51.35,1958,1055,53.88
|
||||
7,Batrider,all,"Initiator, Disabler, Escape",349,136,38.97,1983,812,40.95,4053,1595,39.35,4725,1861,39.39,3173,1275,40.18,1678,731,43.56,802,362,45.14,497,227,45.67
|
||||
8,Beastmaster,all,"Initiator, Disabler, Durable, Nuker",402,174,43.28,2447,1060,43.32,5787,2569,44.39,6930,3092,44.62,5288,2389,45.18,2816,1274,45.24,1593,752,47.21,1176,539,45.83
|
||||
9,Bloodseeker,agi,"Carry, Disabler, Nuker, Initiator",2765,1382,49.98,12589,6270,49.81,21781,10683,49.05,20961,10420,49.71,13035,6430,49.33,6210,3006,48.41,2941,1475,50.15,1465,718,49.01
|
||||
10,Bounty Hunter,agi,"Escape, Nuker",3852,1868,48.49,19609,9535,48.63,36362,17600,48.4,37059,18314,49.42,22934,11518,50.22,10584,5276,49.85,5105,2594,50.81,2498,1325,53.04
|
||||
11,Brewmaster,all,"Carry, Initiator, Durable, Disabler, Nuker",545,280,51.38,3564,1745,48.96,8941,4388,49.08,12340,6111,49.52,11185,5623,50.27,7645,3906,51.09,4812,2478,51.5,3533,1820,51.51
|
||||
12,Bristleback,str,"Carry, Durable, Initiator, Nuker",5884,3262,55.44,27952,14587,52.19,48847,24379,49.91,46702,22927,49.09,27466,13319,48.49,12398,5969,48.14,5865,2915,49.7,2639,1304,49.41
|
||||
13,Broodmother,all,"Carry, Pusher, Escape, Nuker",456,173,37.94,2048,842,41.11,3444,1462,42.45,3392,1448,42.69,2193,1048,47.79,1203,602,50.04,795,422,53.08,453,230,50.77
|
||||
14,Centaur Warrunner,str,"Durable, Initiator, Disabler, Nuker, Escape",1721,911,52.93,11754,6266,53.31,28691,15201,52.98,35369,18741,52.99,25393,13468,53.04,12653,6607,52.22,6124,3181,51.94,2442,1243,50.9
|
||||
15,Chaos Knight,str,"Carry, Disabler, Durable, Pusher, Initiator",3032,1639,54.06,16762,8931,53.28,31892,17139,53.74,30697,16435,53.54,18217,9810,53.85,8572,4620,53.9,4230,2291,54.16,1750,943,53.89
|
||||
16,Chen,all,"Support, Pusher",284,125,44.01,1450,678,46.76,2969,1345,45.3,3258,1604,49.23,2641,1331,50.4,1488,767,51.55,970,512,52.78,770,448,58.18
|
||||
17,Clinkz,agi,"Carry, Escape, Pusher",3151,1608,51.03,13891,7141,51.41,25465,12938,50.81,27327,14066,51.47,18846,9726,51.61,9452,4890,51.74,4765,2475,51.94,2093,1052,50.26
|
||||
18,Clockwerk,all,"Initiator, Disabler, Durable, Nuker",816,397,48.65,5860,2837,48.41,14478,6929,47.86,18466,8843,47.89,13143,6301,47.94,6612,3169,47.93,3286,1581,48.11,1378,658,47.75
|
||||
19,Crystal Maiden,int,"Support, Disabler, Nuker",4821,2529,52.46,26584,13626,51.26,52168,26040,49.92,52258,25365,48.54,30690,14848,48.38,13295,6404,48.17,5602,2680,47.84,1638,771,47.07
|
||||
20,Dark Seer,all,"Initiator, Escape, Disabler",627,320,51.04,3675,1884,51.27,7881,3803,48.26,9589,4844,50.52,7186,3573,49.72,3902,1983,50.82,2145,1095,51.05,1217,593,48.73
|
||||
21,Dark Willow,all,"Support, Nuker, Disabler, Escape",2654,1293,48.72,13829,6657,48.14,28142,13480,47.9,32114,15785,49.15,23100,11331,49.05,12052,5909,49.03,6400,3182,49.72,3708,1915,51.65
|
||||
22,Dawnbreaker,str,"Carry, Durable",1746,875,50.11,12297,6105,49.65,32398,15921,49.14,44846,21936,48.91,35474,17441,49.17,19770,9832,49.73,10637,5263,49.48,6339,3173,50.06
|
||||
23,Dazzle,all,"Support, Nuker, Disabler",2827,1418,50.16,19852,9758,49.15,48236,23691,49.11,56417,27798,49.27,38159,18642,48.85,18695,9199,49.21,8530,4239,49.7,3382,1654,48.91
|
||||
24,Death Prophet,int,"Carry, Pusher, Nuker, Disabler",1372,659,48.03,6643,3145,47.34,11987,5729,47.79,12268,5856,47.73,7455,3606,48.37,3591,1698,47.28,1872,902,48.18,926,459,49.57
|
||||
25,Disruptor,int,"Support, Disabler, Nuker, Initiator",1541,757,49.12,11104,5331,48.01,27746,13542,48.81,33742,16310,48.34,23173,11096,47.88,10907,5201,47.68,4859,2255,46.41,1863,861,46.22
|
||||
26,Doom,str,"Carry, Disabler, Initiator, Durable, Nuker",1049,474,45.19,6112,2767,45.27,13700,6056,44.2,15454,6925,44.81,10727,4842,45.14,5444,2451,45.02,2979,1348,45.25,1545,731,47.31
|
||||
27,Dragon Knight,str,"Carry, Pusher, Durable, Disabler, Initiator, Nuker",1950,942,48.31,10643,5274,49.55,20451,9733,47.59,20326,9671,47.58,11674,5544,47.49,4979,2355,47.3,2024,973,48.07,725,341,47.03
|
||||
28,Drow Ranger,agi,"Carry, Disabler, Pusher",5737,2904,50.62,29675,14831,49.98,57655,28573,49.56,56682,27927,49.27,34310,16607,48.4,15050,7171,47.65,5947,2815,47.33,1768,788,44.57
|
||||
29,Earth Spirit,str,"Nuker, Escape, Disabler, Initiator, Durable",1038,465,44.8,7420,3276,44.15,20807,9432,45.33,30107,14166,47.05,25314,12148,47.99,14579,7041,48.3,7678,3802,49.52,4379,2169,49.53
|
||||
30,Earthshaker,str,"Support, Initiator, Disabler, Nuker",5012,2455,48.98,29784,14662,49.23,67050,33111,49.38,79963,39843,49.83,57108,28961,50.71,28650,14591,50.93,14186,7296,51.43,6151,3165,51.46
|
||||
31,Elder Titan,str,"Initiator, Disabler, Nuker, Durable",471,212,45.01,2551,1248,48.92,5213,2570,49.3,5572,2809,50.41,3847,1942,50.48,1964,998,50.81,1124,613,54.54,550,292,53.09
|
||||
32,Ember Spirit,agi,"Carry, Escape, Nuker, Disabler, Initiator",1514,635,41.94,9180,3836,41.79,20578,8738,42.46,25152,10844,43.11,17703,7814,44.14,8538,3793,44.42,4265,1892,44.36,2065,928,44.94
|
||||
33,Enchantress,int,"Support, Pusher, Durable, Disabler",1794,848,47.27,8050,3622,44.99,12921,5686,44.01,11673,4974,42.61,6863,2840,41.38,2948,1212,41.11,1434,654,45.61,806,318,39.45
|
||||
34,Enigma,all,"Disabler, Initiator, Pusher",1317,588,44.65,6937,3171,45.71,12908,5979,46.32,11687,5428,46.44,6194,2839,45.83,2493,1127,45.21,938,437,46.59,338,159,47.04
|
||||
35,Faceless Void,agi,"Carry, Initiator, Disabler, Escape, Durable",4323,2043,47.26,25618,11902,46.46,54581,25874,47.4,60671,28993,47.79,40137,19611,48.86,19376,9620,49.65,9579,4828,50.4,4439,2256,50.82
|
||||
36,Grimstroke,int,"Support, Nuker, Disabler, Escape",1455,694,47.7,9714,4789,49.3,24688,12430,50.35,32027,16094,50.25,23193,11795,50.86,12102,6100,50.4,6191,3047,49.22,3449,1666,48.3
|
||||
37,Gyrocopter,agi,"Carry, Nuker, Disabler",2560,1213,47.38,16589,7882,47.51,42072,20358,48.39,54200,26229,48.39,39414,19053,48.34,20164,9781,48.51,10164,4937,48.57,5241,2507,47.83
|
||||
38,Hoodwink,agi,"Support, Nuker, Escape, Disabler",2420,1126,46.53,14034,6800,48.45,31382,14964,47.68,35684,16966,47.55,22626,10651,47.07,9949,4690,47.14,4349,2089,48.03,1533,703,45.86
|
||||
39,Huskar,str,"Carry, Durable, Initiator",3501,1603,45.79,14234,6639,46.64,22794,10912,47.87,21801,10763,49.37,13811,6919,50.1,6769,3535,52.22,3556,1822,51.24,1936,993,51.29
|
||||
40,Invoker,all,"Carry, Nuker, Disabler, Escape, Pusher",4330,2042,47.16,27625,13176,47.7,69035,33863,49.05,86745,43479,50.12,61821,31510,50.97,31459,16321,51.88,15431,8195,53.11,7852,4148,52.83
|
||||
41,Io,all,"Support, Escape, Nuker",1274,615,48.27,6158,2999,48.7,12762,6247,48.95,14216,7024,49.41,9564,4843,50.64,5301,2685,50.65,2789,1463,52.46,1464,773,52.8
|
||||
42,Jakiro,int,"Support, Nuker, Pusher, Disabler",3147,1708,54.27,22718,12413,54.64,56736,30984,54.61,70038,37473,53.5,46389,24997,53.89,22084,11639,52.7,9838,5103,51.87,3282,1729,52.68
|
||||
43,Juggernaut,agi,"Carry, Pusher, Escape",5585,2711,48.54,30394,14800,48.69,62313,30581,49.08,65590,32344,49.31,39235,19326,49.26,16334,8012,49.05,6419,3066,47.76,1576,731,46.38
|
||||
44,Keeper of the Light,int,"Support, Nuker, Disabler",896,353,39.4,5051,2216,43.87,10452,4579,43.81,11614,5322,45.82,7870,3627,46.09,4268,2001,46.88,2147,1043,48.58,1333,588,44.11
|
||||
45,Kunkka,str,"Carry, Support, Disabler, Initiator, Durable, Nuker",2251,1124,49.93,13474,6828,50.68,31210,16196,51.89,39691,21293,53.65,30314,16458,54.29,15706,8793,55.98,7884,4339,55.04,3458,1898,54.89
|
||||
46,Legion Commander,str,"Carry, Disabler, Initiator, Durable, Nuker",6263,3264,52.12,37100,19157,51.64,81491,41557,51.0,91431,46558,50.92,59383,29917,50.38,27945,13917,49.8,13193,6587,49.93,5601,2745,49.01
|
||||
47,Leshrac,int,"Carry, Support, Nuker, Pusher, Disabler",674,316,46.88,3872,1799,46.46,7490,3433,45.83,7903,3604,45.6,5322,2526,47.46,2687,1298,48.31,1325,647,48.83,721,357,49.51
|
||||
48,Lich,int,"Support, Nuker",2700,1412,52.3,16646,8820,52.99,37785,19685,52.1,45471,23554,51.8,31203,16108,51.62,15530,7821,50.36,7243,3597,49.66,2520,1258,49.92
|
||||
49,Lifestealer,str,"Carry, Durable, Escape, Disabler",2515,1213,48.23,14131,6978,49.38,29724,14627,49.21,31211,15581,49.92,18970,9481,49.98,8689,4400,50.64,3630,1821,50.17,1229,617,50.2
|
||||
50,Lina,int,"Support, Carry, Nuker, Disabler",4512,2030,44.99,21927,10156,46.32,45301,21210,46.82,54229,25956,47.86,40016,19138,47.83,21072,10112,47.99,10481,5031,48.0,4369,2138,48.94
|
||||
51,Lion,int,"Support, Disabler, Nuker, Initiator",6204,2855,46.02,37869,17465,46.12,80124,36649,45.74,84390,38176,45.24,50720,22914,45.18,21698,9784,45.09,9308,4280,45.98,3220,1496,46.46
|
||||
52,Lone Druid,all,"Carry, Pusher, Durable",909,483,53.14,4714,2421,51.36,10987,5858,53.32,14580,7968,54.65,11810,6490,54.95,7241,3971,54.84,4024,2240,55.67,2303,1259,54.67
|
||||
53,Luna,agi,"Carry, Nuker, Pusher",1927,904,46.91,9091,4271,46.98,16571,7922,47.81,16035,7615,47.49,9728,4634,47.64,4463,2103,47.12,1912,911,47.65,719,322,44.78
|
||||
54,Lycan,all,"Carry, Pusher, Durable, Escape",374,174,46.52,1894,915,48.31,3691,1744,47.25,3824,1905,49.82,2694,1332,49.44,1460,753,51.58,827,411,49.7,532,289,54.32
|
||||
55,Magnus,all,"Initiator, Disabler, Nuker, Escape",770,339,44.03,5789,2651,45.79,17837,7954,44.59,26126,12058,46.15,20634,9592,46.49,10574,5056,47.82,4565,2073,45.41,1606,751,46.76
|
||||
56,Marci,all,"Support, Carry, Initiator, Disabler, Escape",1370,620,45.26,7092,3252,45.85,15199,7240,47.63,18485,8874,48.01,13308,6305,47.38,7176,3476,48.44,3689,1882,51.02,1746,883,50.57
|
||||
57,Mars,str,"Carry, Initiator, Disabler, Durable",862,375,43.5,5719,2529,44.22,15156,6756,44.58,20719,9369,45.22,16419,7387,44.99,9044,4052,44.8,4536,2093,46.14,1926,868,45.07
|
||||
58,Medusa,agi,"Carry, Disabler, Durable",1898,902,47.52,9289,4512,48.57,16504,7818,47.37,14796,6886,46.54,7488,3449,46.06,2775,1270,45.77,1073,482,44.92,394,184,46.7
|
||||
59,Meepo,agi,"Carry, Escape, Nuker, Disabler, Initiator, Pusher",1004,523,52.09,3970,1990,50.13,6904,3587,51.96,7166,3646,50.88,4906,2563,52.24,2383,1282,53.8,1139,588,51.62,585,300,51.28
|
||||
60,Mirana,all,"Carry, Support, Escape, Nuker, Disabler",2499,1193,47.74,16954,8135,47.98,39985,19097,47.76,45169,21554,47.72,28467,13456,47.27,12800,6047,47.24,5272,2500,47.42,1824,874,47.92
|
||||
61,Monkey King,agi,"Carry, Escape, Disabler, Initiator",3191,1384,43.37,17306,7544,43.59,35734,16113,45.09,40778,18322,44.93,27558,12630,45.83,14034,6433,45.84,6650,3152,47.4,3040,1440,47.37
|
||||
62,Morphling,agi,"Carry, Escape, Durable, Nuker, Disabler",1521,690,45.36,8620,4006,46.47,18075,8161,45.15,20414,9235,45.24,14395,6530,45.36,7697,3551,46.13,4432,2050,46.25,2560,1190,46.48
|
||||
63,Muerta,int,"Carry, Nuker, Disabler",2130,1089,51.13,10787,5740,53.21,22602,11898,52.64,27609,14495,52.5,20175,10465,51.87,10662,5518,51.75,5462,2759,50.51,2948,1517,51.46
|
||||
64,Naga Siren,agi,"Carry, Support, Pusher, Disabler, Initiator, Escape",1502,804,53.53,6495,3356,51.67,10423,5234,50.22,9830,4929,50.14,6057,2971,49.05,3216,1675,52.08,1855,933,50.3,1242,634,51.05
|
||||
65,Nature's Prophet,int,"Carry, Pusher, Escape, Nuker",5991,3029,50.56,36433,18143,49.8,83118,42095,50.64,100341,51268,51.09,69436,35870,51.66,34256,17858,52.13,16585,8745,52.73,7182,3755,52.28
|
||||
66,Necrophos,int,"Carry, Nuker, Durable, Disabler",4776,2702,56.57,28535,15771,55.27,62186,34285,55.13,70212,38163,54.35,46539,24708,53.09,21607,11302,52.31,9677,4994,51.61,3418,1733,50.7
|
||||
67,Night Stalker,str,"Carry, Initiator, Durable, Disabler, Nuker",1189,594,49.96,7868,3892,49.47,19446,10004,51.45,25524,13506,52.91,20138,10828,53.77,10767,5651,52.48,5499,2889,52.54,2415,1257,52.05
|
||||
68,Nyx Assassin,all,"Disabler, Nuker, Initiator, Escape",1718,867,50.47,10925,5525,50.57,27207,14073,51.73,34684,18059,52.07,25736,13572,52.74,13313,7093,53.28,6485,3444,53.11,2852,1468,51.47
|
||||
69,Ogre Magi,str,"Support, Nuker, Disabler, Durable, Initiator",5331,2845,53.37,31507,16299,51.73,62954,32248,51.22,61758,31373,50.8,33746,16988,50.34,13262,6654,50.17,4861,2420,49.78,1271,654,51.46
|
||||
70,Omniknight,str,"Support, Durable, Nuker",975,479,49.13,6426,3109,48.38,14641,7319,49.99,17258,8731,50.59,11695,5916,50.59,5746,2993,52.09,2870,1469,51.18,1333,656,49.21
|
||||
71,Oracle,int,"Support, Nuker, Disabler, Escape",796,384,48.24,4857,2417,49.76,13141,6645,50.57,18944,9853,52.01,15221,7964,52.32,8356,4458,53.35,4475,2380,53.18,1905,1018,53.44
|
||||
72,Outworld Destroyer,int,"Carry, Nuker, Disabler",2226,1118,50.22,13388,6864,51.27,33284,17362,52.16,43991,23377,53.14,32021,16994,53.07,16655,8724,52.38,8123,4218,51.93,3176,1649,51.92
|
||||
73,Pangolier,all,"Carry, Nuker, Disabler, Durable, Escape, Initiator",1156,534,46.19,7189,3209,44.64,17802,7937,44.58,25785,11677,45.29,21727,10144,46.69,13064,6351,48.61,7567,3737,49.39,5275,2734,51.83
|
||||
74,Phantom Assassin,agi,"Carry, Escape",8553,4426,51.75,48549,25553,52.63,104756,54881,52.39,119332,62511,52.38,79140,41143,51.99,37399,19325,51.67,17774,9077,51.07,7819,3856,49.32
|
||||
75,Phantom Lancer,agi,"Carry, Escape, Pusher, Nuker",3641,1960,53.83,19550,10374,53.06,38576,20633,53.49,41505,22310,53.75,26401,14268,54.04,12437,6590,52.99,5708,2985,52.3,2383,1243,52.16
|
||||
76,Phoenix,all,"Support, Nuker, Initiator, Escape, Disabler",743,315,42.4,5231,2471,47.24,13950,6633,47.55,18350,8864,48.31,13972,6715,48.06,7787,3761,48.3,4322,2132,49.33,2610,1325,50.77
|
||||
77,Primal Beast,str,"Initiator, Durable, Disabler",1455,701,48.18,9333,4448,47.66,22800,11058,48.5,30084,14643,48.67,24307,11993,49.34,13970,6991,50.04,7742,3890,50.25,4625,2407,52.04
|
||||
78,Puck,int,"Initiator, Disabler, Escape, Nuker",871,399,45.81,5773,2628,45.52,16596,7578,45.66,24480,11315,46.22,20070,9497,47.32,11023,5298,48.06,5656,2714,47.98,2555,1200,46.97
|
||||
79,Pudge,str,"Disabler, Initiator, Durable, Nuker",7677,3796,49.45,50891,24776,48.68,114784,56289,49.04,129604,63097,48.68,85800,41542,48.42,41730,20239,48.5,19823,9530,48.08,7112,3431,48.24
|
||||
80,Pugna,int,"Nuker, Pusher",2075,944,45.49,9998,4695,46.96,18962,8958,47.24,20240,9965,49.23,12807,6199,48.4,5825,2855,49.01,2758,1387,50.29,1195,592,49.54
|
||||
81,Queen of Pain,int,"Carry, Nuker, Escape",2287,1100,48.1,15119,7354,48.64,37137,18118,48.79,47706,23657,49.59,35500,18018,50.75,18405,9289,50.47,9243,4689,50.73,4227,2113,49.99
|
||||
82,Razor,agi,"Carry, Durable, Nuker, Pusher",2470,1231,49.84,12000,5964,49.7,24666,12142,49.23,30334,14844,48.94,21832,10558,48.36,11917,5679,47.65,6092,2912,47.8,3144,1551,49.33
|
||||
83,Riki,agi,"Carry, Escape, Disabler",3684,1929,52.36,19022,9891,52.0,35638,18582,52.14,33908,17415,51.36,20194,10312,51.06,8726,4377,50.16,3735,1855,49.67,1160,559,48.19
|
||||
84,Rubick,int,"Support, Disabler, Nuker",3090,1404,45.44,21639,9303,42.99,57417,24590,42.83,74874,32603,43.54,55186,24219,43.89,28206,12568,44.56,13732,6106,44.47,5764,2642,45.84
|
||||
85,Sand King,all,"Initiator, Disabler, Support, Nuker, Escape",2633,1513,57.46,13097,7323,55.91,25271,13807,54.64,26724,14323,53.6,17384,9144,52.6,7907,4104,51.9,3394,1719,50.65,1211,611,50.45
|
||||
86,Shadow Demon,int,"Support, Disabler, Initiator, Nuker",547,236,43.14,3252,1426,43.85,7920,3524,44.49,9752,4551,46.67,7404,3467,46.83,3956,1876,47.42,2076,1004,48.36,1054,497,47.15
|
||||
87,Shadow Fiend,agi,"Carry, Nuker",5051,2544,50.37,27255,14064,51.6,58589,29830,50.91,65429,33097,50.58,41810,21189,50.68,18766,9401,50.1,8232,4000,48.59,3016,1430,47.41
|
||||
88,Shadow Shaman,int,"Support, Pusher, Disabler, Nuker, Initiator",5323,2795,52.51,29733,15606,52.49,58894,31236,53.04,58765,30895,52.57,34475,18242,52.91,15166,7986,52.66,6377,3323,52.11,2413,1253,51.93
|
||||
89,Silencer,int,"Carry, Support, Disabler, Initiator, Nuker",4229,2324,54.95,27878,14960,53.66,61698,33081,53.62,65256,34458,52.8,38589,19853,51.45,16889,8653,51.23,6836,3416,49.97,2236,1105,49.42
|
||||
90,Skywrath Mage,int,"Support, Nuker, Disabler",4000,2030,50.75,22783,11675,51.24,46512,23624,50.79,51329,25706,50.08,34167,17364,50.82,16693,8415,50.41,8496,4208,49.53,4389,2069,47.14
|
||||
91,Slardar,str,"Carry, Durable, Initiator, Disabler, Escape",3935,2129,54.1,21523,11602,53.91,43947,23701,53.93,47721,25633,53.71,29887,16132,53.98,14233,7722,54.25,6530,3467,53.09,2322,1205,51.89
|
||||
92,Slark,agi,"Carry, Escape, Disabler, Nuker",4815,2521,52.36,29413,14762,50.19,64004,31771,49.64,70173,34411,49.04,44780,21926,48.96,20864,10270,49.22,9969,4962,49.77,4565,2394,52.44
|
||||
93,Snapfire,all,"Support, Nuker, Disabler, Escape",1524,682,44.75,10646,4576,42.98,27103,12120,44.72,34711,15412,44.4,24351,10786,44.29,11723,5131,43.77,5227,2294,43.89,1987,868,43.68
|
||||
94,Sniper,agi,"Carry, Nuker",8022,4079,50.85,44508,22727,51.06,88690,45223,50.99,87190,44086,50.56,47411,23648,49.88,18092,8924,49.33,6130,3040,49.59,1370,662,48.32
|
||||
95,Spectre,agi,"Carry, Durable, Escape",3454,2008,58.14,22097,12356,55.92,49157,26961,54.85,55914,30100,53.83,36321,19338,53.24,16946,8960,52.87,7921,4163,52.56,2568,1370,53.35
|
||||
96,Spirit Breaker,str,"Carry, Initiator, Disabler, Durable, Escape",4788,2423,50.61,26662,13530,50.75,56535,28908,51.13,63991,32249,50.4,42512,21357,50.24,20119,9926,49.34,9499,4814,50.68,3761,1884,50.09
|
||||
97,Storm Spirit,int,"Carry, Escape, Nuker, Initiator, Disabler",2202,1001,45.46,11656,5197,44.59,25644,11806,46.04,30968,14210,45.89,21680,10197,47.03,10810,5025,46.48,5278,2382,45.13,2363,1122,47.48
|
||||
98,Sven,str,"Carry, Disabler, Initiator, Durable, Nuker",3552,1761,49.58,19792,9744,49.23,41296,20478,49.59,48709,24228,49.74,35460,17828,50.28,19795,10065,50.85,11014,5655,51.34,6701,3387,50.54
|
||||
99,Techies,all,"Nuker, Disabler",2356,1131,48.01,13105,6245,47.65,27293,12893,47.24,29180,13507,46.29,18216,8407,46.15,8266,3771,45.62,3459,1644,47.53,1319,591,44.81
|
||||
100,Templar Assassin,agi,"Carry, Escape",2142,955,44.58,10932,4758,43.52,21211,9445,44.53,23928,10909,45.59,17399,8242,47.37,9567,4656,48.67,5525,2708,49.01,3524,1775,50.37
|
||||
101,Terrorblade,agi,"Carry, Pusher, Nuker",1115,484,43.41,5686,2430,42.74,10856,4638,42.72,11518,5041,43.77,8059,3540,43.93,4192,1827,43.58,2419,1082,44.73,1621,700,43.18
|
||||
102,Tidehunter,str,"Initiator, Durable, Disabler, Nuker, Carry",1835,855,46.59,11159,5369,48.11,26222,12699,48.43,30735,14879,48.41,20523,9727,47.4,9731,4740,48.71,4426,2079,46.97,1998,936,46.85
|
||||
103,Timbersaw,all,"Nuker, Durable, Escape",1050,448,42.67,5854,2584,44.14,12301,5391,43.83,14295,6097,42.65,9697,4217,43.49,4992,2163,43.33,2419,1021,42.21,1139,471,41.35
|
||||
104,Tinker,int,"Carry, Nuker, Pusher",2106,944,44.82,11058,5200,47.02,24263,11826,48.74,27531,13614,49.45,19017,9732,51.18,9416,4875,51.77,4700,2466,52.47,1951,1036,53.1
|
||||
105,Tiny,str,"Carry, Nuker, Pusher, Initiator, Durable, Disabler",1434,654,45.61,7742,3452,44.59,15936,6950,43.61,17139,7468,43.57,11269,4991,44.29,5485,2491,45.41,2599,1216,46.79,1058,519,49.05
|
||||
106,Treant Protector,str,"Support, Initiator, Durable, Disabler, Escape",1646,899,54.62,11430,5881,51.45,28752,15124,52.6,36093,19344,53.59,28762,15532,54.0,16751,9227,55.08,9870,5468,55.4,6801,3855,56.68
|
||||
107,Troll Warlord,agi,"Carry, Pusher, Disabler, Durable",3176,1720,54.16,14007,7445,53.15,24729,13022,52.66,25424,13228,52.03,17362,9030,52.01,9427,4913,52.12,4767,2499,52.42,2341,1242,53.05
|
||||
108,Tusk,str,"Initiator, Disabler, Nuker",1263,565,44.73,8338,3777,45.3,19642,8869,45.15,25308,11520,45.52,18927,8853,46.77,10100,4820,47.72,5220,2502,47.93,2350,1157,49.23
|
||||
109,Underlord,str,"Support, Nuker, Disabler, Durable, Escape",797,405,50.82,4583,2341,51.08,10067,5057,50.23,11650,5786,49.67,7224,3561,49.29,3310,1591,48.07,1368,673,49.2,395,190,48.1
|
||||
110,Undying,str,"Support, Durable, Disabler, Nuker",3170,1620,51.1,19403,10116,52.14,40582,21110,52.02,40850,21182,51.85,23985,12454,51.92,10395,5389,51.84,4541,2336,51.44,2064,1012,49.03
|
||||
111,Ursa,agi,"Carry, Durable, Disabler",2801,1273,45.45,15132,7038,46.51,33269,15478,46.52,40822,19264,47.19,29348,14011,47.74,15262,7375,48.32,7507,3622,48.25,3004,1473,49.03
|
||||
112,Vengeful Spirit,all,"Support, Initiator, Disabler, Nuker, Escape",2186,1108,50.69,15817,8285,52.38,41843,21809,52.12,57524,30476,52.98,45512,24120,53.0,25581,13382,52.31,13758,7121,51.76,8276,4303,51.99
|
||||
113,Venomancer,all,"Support, Nuker, Initiator, Pusher, Disabler",2309,1187,51.41,14669,7463,50.88,34787,18020,51.8,41797,21690,51.89,28706,15085,52.55,13974,7338,52.51,6538,3495,53.46,2794,1459,52.22
|
||||
114,Viper,agi,"Carry, Durable, Initiator, Disabler",4100,2057,50.17,18991,9510,50.08,33517,16923,50.49,32728,16677,50.96,18537,9427,50.86,7851,3928,50.03,3260,1652,50.67,1176,610,51.87
|
||||
115,Visage,all,"Support, Nuker, Durable, Disabler, Pusher",331,171,51.66,1638,813,49.63,3240,1577,48.67,3840,1986,51.72,3108,1609,51.77,1995,1055,52.88,1309,702,53.63,858,457,53.26
|
||||
116,Void Spirit,all,"Carry, Escape, Nuker, Disabler",1565,727,46.45,8672,4096,47.23,20010,9694,48.45,25213,12376,49.09,18817,9231,49.06,10026,4920,49.07,4788,2319,48.43,2006,964,48.06
|
||||
117,Warlock,int,"Support, Initiator, Disabler",2547,1369,53.75,18931,10331,54.57,49795,26999,54.22,66697,36220,54.31,48401,25668,53.03,24999,12942,51.77,12575,6356,50.54,6183,2934,47.45
|
||||
118,Weaver,agi,"Carry, Escape",2818,1389,49.29,13873,6770,48.8,23493,11571,49.25,21545,10694,49.64,12911,6427,49.78,5809,2928,50.4,2960,1455,49.16,1303,719,55.18
|
||||
119,Windranger,all,"Carry, Support, Disabler, Escape, Nuker",3861,1814,46.98,19934,9223,46.27,40644,18807,46.27,44476,20652,46.43,28952,13508,46.66,13418,6297,46.93,5898,2782,47.17,2374,1142,48.1
|
||||
120,Winter Wyvern,all,"Support, Disabler, Nuker",821,371,45.19,5168,2424,46.9,10544,5014,47.55,11184,5308,47.46,7426,3512,47.29,3730,1854,49.71,1862,934,50.16,944,464,49.15
|
||||
121,Witch Doctor,int,"Support, Nuker, Disabler",7504,4173,55.61,45501,25616,56.3,99664,54963,55.15,111382,60421,54.25,71830,37860,52.71,33164,17334,52.27,14610,7442,50.94,4196,2076,49.48
|
||||
122,Wraith King,str,"Carry, Support, Durable, Disabler, Initiator",4175,2266,54.28,26362,14516,55.06,58733,32403,55.17,66283,36503,55.07,42360,23083,54.49,19084,10251,53.72,8334,4315,51.78,2707,1376,50.83
|
||||
123,Zeus,int,"Nuker, Carry",4132,2106,50.97,23721,12487,52.64,51568,27475,53.28,58333,31078,53.28,37821,20047,53.0,17901,9504,53.09,8539,4459,52.22,3400,1791,52.68
|
||||
|
92
belyaeva_ekaterina_lab_6/README.md
Normal file
@@ -0,0 +1,92 @@
|
||||
## Задание
|
||||
|
||||
Использовать нейронную сеть MLPClassifier для данных из таблицы 1 по
|
||||
варианту, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной вами задачи
|
||||
|
||||
## Как запустить лабораторную
|
||||
Запустить файл main.py
|
||||
## Используемые технологии
|
||||
Библиотеки pandas, scikit-learn, их компоненты
|
||||
## Описание лабораторной (программы)
|
||||
Данный код берет данные из датасета о персонажах Dota 2, где описаны атрибуты персонажей, их роли, название, и как часто их пикают и какой у них винрейт на каждом звании в Доте, от реркута до титана.
|
||||
|
||||
В моем случае была поставлена задача понять, можно ли определить позицию персонажа (всего в игре есть 5 позиций -
|
||||
carry, mid, offlane, support, full support), по его главному атрибуту и по тому, какие роли он выполняет в игре. Учитывая
|
||||
то, что Dota 2 имеет 124 персонажа, все они очень разные, поэтому была вероятность, что модель не установит зависимость и
|
||||
не будет работать в принципе. Именно поэтому я посчитала данную задачу довольно интересной. В моем датасете присутствует информация о главном атрибуте персонажа и его ролях, но нет
|
||||
информации о том, на каких позициях он играется. Поэтому для выяснения этого списка я обратилась к внешним ресурсам
|
||||
и занесла информацию об этом в программу вручную. Это можно увидеть в коде в месте, где определяются роли.
|
||||
|
||||

|
||||
|
||||
Программа берет столбцы Name, Roles, PrimaryAttribute из датасета. Так как в столбце Roles есть 9 значений, которые прописаны
|
||||
в разном количестве и разные у каждого персонажа, нужно было создать 9 дополнительных столбцов, где для каждого персонажа
|
||||
выставлялось 1, если такая роль присутствует в его описании и 0, если ее нет.
|
||||
|
||||
Пример:
|
||||
data['IsDurable'] = data['Roles'].apply(lambda x: 1 if 'Durable' in x else 0)
|
||||
|
||||
Далее столбец Roles был удален.
|
||||
|
||||
Так как PrimaryAttribute указан в строковом значении, он так же был переведен в числовое значение.
|
||||
|
||||
После этого нужно было заполнить столбцы posCarry, posMid, posOfflane, posSupport, posFullSupport. Если персонаж есть в списке
|
||||
персонажей с этой позицией, там проставлялась 1, 0 - если нет.
|
||||
|
||||
В итоге получился датасет, где есть имя персонажа, его главный атрибут в виде числа, его роли (1 - если есть, 0 - если нет)
|
||||
и то же самое с позициями.
|
||||
|
||||
Далее датафрейм делится на признаки (все столбцы, кроме столбцов с позициями) и метки (столбцы с позициями). Метки переводятся в числовой формат с помощью LabelEncoder(), иначе программа не может с ними работать.
|
||||
Данные делятся на обучающую и тестовую выборку.
|
||||
|
||||
Модель создается таким образом потому, что если ставить меньшее число итераций или скрытых слоев, то она не успевала обучаться.
|
||||
model = MLPClassifier(hidden_layer_sizes=(128, 128, 128), activation='relu', max_iter=1000, random_state=42)
|
||||
|
||||
Затем происходит предсказание позиций для тестовой выборки и оценка работы модели с помощью accuracy_score и classification_report
|
||||
|
||||
## Результат
|
||||
|
||||
В результате получаем следующее:
|
||||
|
||||

|
||||
|
||||
Оценка модели имеет относительно низкое значение. Однако, как было сказано ранее, она могла не работать в принципе, поэтому
|
||||
я считаю это достаточно неплохим результатом и поставленная цель была выполнена - было выяснено, что позиция персонажа
|
||||
все-таки зависит от его атрибута и ролей, которые он выполняет по игре, хоть эта зависимость и не 100% явная. Если бы она
|
||||
была явная, например, все персонажи с атрибутом "сила" - это позиция offlane, тогда работа модели была бы значительно лучше.
|
||||
|
||||
Далее мы получаем classification report:
|
||||
|
||||

|
||||
|
||||
В данном отчете представлены 5 классов, то есть позиции (0, 1, 2, 3, 4). Для каждого класса представлены значения точности,
|
||||
полноты и F1-оценки, вычисленные с использованием соответствующих метрик. Также показана поддержка класса, которая
|
||||
представляет собой количество образцов, принадлежащих этому классу.
|
||||
|
||||
Precision (точность) - это метрика, которая оценивает долю правильно классифицированных объектов из всех объектов, которые модель отнесла к данному классу. Она измеряет, насколько точно модель предсказывает положительные классы.
|
||||
|
||||
Recall (полнота) - это метрика, которая оценивает долю правильно классифицированных объектов, отнесенных моделью к данному классу, относительно всех объектов, принадлежащих к данному классу. Она измеряет, насколько полно модель находит положительные классы.
|
||||
|
||||
F1-мера (F1-score) - это гармоническое среднее между precision и recall. Она используется для объединения оценок точности и полноты в единую метрику. F1-мера принимает значение между 0 и 1, где 1 - это идеальное значение, означающее, что модель идеально находит и точно классифицирует объекты положительного класса
|
||||
|
||||
micro avg - средневзвешенное значение точности, полноты и F1-оценки во всех классах, подсчитанное по общему количеству образцов.
|
||||
|
||||
macro avg - среднее значение точности, полноты и F1-оценки по всем классам, без учета количества образцов.
|
||||
|
||||
weighted avg - средневзвешенное значение точности, полноты и F1-оценки по всем классам, учитывая количество образцов.
|
||||
|
||||
samples avg - средневзвешенное значение точности, полноты и F1-оценки по всем классам, учитывая количество образцов
|
||||
класса (если образец может принадлежать нескольким классам).
|
||||
|
||||
Из данного отчета можно сделать вывод о том, что по атрибутам и ролям в игре модель точно выявила персонажей для позиции
|
||||
mid и offlane, но при этом, при работе с объектами, модель пропустила больше всего объектов, относящихся к этим классам,
|
||||
и занесла их в другие классы, из-за чего снизилась precision других классов. Мы сами должны выбирать, что важнее - точность или полнота,
|
||||
и в моем случае важнее точность, ведь изначально стоял вопрос о том, сможет ли модель определить, что к чему относится. Но низкие
|
||||
значения полноты говорят о том, что низкое значение accuracy вполне оправдано, и хоть модель и может выявить, какие объекты к каким классам относятся,
|
||||
делает она это не совсем "пОлно" и пропускает некоторые объекты.
|
||||
|
||||
Что касается признаков micro avg, macro avg, weighted avg, samples avg - все они показывают неплохие результаты относительно
|
||||
ожиданий по поводу работы модели. Я думаю, что для поставленной задачи значения этих показателей довольно высоки.
|
||||
|
||||
Вывод: точность и показатели из отчета вышли достаточно хорошими относительно поставленной задачи, также был получен ответ на вопрос
|
||||
зависит ли позиция персонажа от его атрибута и роли. Следовательно, с задачей разработанная модель справилась.
|
||||
BIN
belyaeva_ekaterina_lab_6/accuracy.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
belyaeva_ekaterina_lab_6/classificationReport.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
76
belyaeva_ekaterina_lab_6/main.py
Normal file
@@ -0,0 +1,76 @@
|
||||
import pandas as pd
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import StandardScaler
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
from sklearn.metrics import accuracy_score, classification_report
|
||||
|
||||
# Чтение данных из файла Current_Pub_Meta.csv
|
||||
current_pub_meta = pd.read_csv('Current_Pub_Meta.csv')
|
||||
|
||||
# Создаем пустой DataFrame для хранения данных
|
||||
data = pd.DataFrame(columns=['Name', 'Roles', 'Primary Attribute', 'IsDurable', 'IsSupport', 'IsCarry', 'IsDisabler',
|
||||
'IsInitiator', 'IsNuker', 'IsEscaper', 'IsPusher', 'posCarry', 'posMid',
|
||||
'posOfflane', 'posSupport', 'posHardSupport'])
|
||||
|
||||
|
||||
# Добавление новых столбцов из файла в датафрейм data
|
||||
data['Name'] = current_pub_meta['Name']
|
||||
data['Roles'] = current_pub_meta['Roles']
|
||||
data['Primary Attribute'] = current_pub_meta['Primary Attribute']
|
||||
data['Primary Attribute'] = data['Primary Attribute'].map({'str': 0, 'all': 1, 'int': 2, 'agi': 3})
|
||||
|
||||
data['IsDurable'] = data['Roles'].apply(lambda x: 1 if 'Durable' in x else 0)
|
||||
data['IsCarry'] = data['Roles'].apply(lambda x: 1 if 'Carry' in x else 0)
|
||||
data['IsSupport'] = data['Roles'].apply(lambda x: 1 if 'Support' in x else 0)
|
||||
data['IsDisabler'] = data['Roles'].apply(lambda x: 1 if 'Disabler' in x else 0)
|
||||
data['IsInitiator'] = data['Roles'].apply(lambda x: 1 if 'Initiator' in x else 0)
|
||||
data['IsNuker'] = data['Roles'].apply(lambda x: 1 if 'Nuker' in x else 0)
|
||||
data['IsEscaper'] = data['Roles'].apply(lambda x: 1 if 'Escaper' in x else 0)
|
||||
data['IsPusher'] = data['Roles'].apply(lambda x: 1 if 'Pusher' in x else 0)
|
||||
|
||||
#Удаление столбца Roles
|
||||
data.drop('Roles', axis=1, inplace=True)
|
||||
|
||||
# Создаем список персонажей на каждую позицию
|
||||
roles = {
|
||||
'posHardSupport': ['Undying', 'Pudge', 'Marci', 'Grimstroke', 'Elder Titan', 'Warlock', 'Dazzle', 'Witch Doctor', 'Vengeful Spirit', 'Ancient Apparition', 'Disruptor', 'Keeper of the Light', 'Rubick', 'Jakiro', 'Oracle', 'Visage', 'Silencer', 'Shadow Demon', 'Chen', 'Winter Wyvern', 'Bane', 'Treant Protector', 'Io', 'Enchantress', 'Naga Siren'],
|
||||
'posSupport': ['Venomancer', 'Tusk', 'Tiny', 'Spirit Breaker', 'Techies', 'Snapfire', 'Pudge', 'Muerta', 'Marci', 'Hoodwink', 'Grimstroke', 'Earth Spirit', 'Bounty Hunter', 'Crystal Maiden', 'Lion', 'Shadow Shaman', 'Lich', 'Ogre Magi', 'Warlock', 'Dazzle', 'Witch Doctor', 'Vengeful Spirit', 'Ancient Apparition', 'Disruptor', 'Keeper of the Light', 'Rubick', 'Jakiro', 'Oracle', 'Visage', 'Silencer', 'Shadow Demon', 'Chen', 'Winter Wyvern', 'Bane', 'Treant Protector', 'Io', 'Enchantress', 'Naga Siren', 'Earthshaker', 'Skywrath Mage', 'Leshrac', 'Shadow Fiend', 'Nyx Assassin', 'Pugna', 'Lina', 'Zeus', "Nature's Prophet", 'Dark Willow'],
|
||||
'posOfflane': ['Wraith King', 'Spirit Breaker', 'Snapfire', 'Pudge', 'Primal Beast', 'Marci', 'Dragon Knight', 'Tidehunter', 'Centaur Warrunner', 'Dark Seer', 'Beastmaster', 'Mars', 'Brewmaster', 'Timbersaw', 'Bristleback', 'Abaddon', 'Axe', 'Enigma', 'Sand King', 'Clockwerk', 'Doom', 'Underlord', 'Omniknight', 'Legion Commander', "Nature's Prophet", 'Slardar', 'Faceless Void', 'Earthshaker', 'Pangolier', 'Pugna', 'Mars', 'Batrider', 'Windranger', 'Mirana', 'Beastmaster', 'Brewmaster', 'Phoenix', 'Beastmaster', 'Dark Seer', 'Lone Druid', 'Timbersaw', 'Broodmother', "Nature's Prophet", 'Magnus', 'Necrophos', 'Bloodseeker', 'Lycan'],
|
||||
'posMid': ['Void Spirit', 'Pudge', 'Primal Beast', 'Earth Spirit', 'Dragon Knight', 'Arc Warden', 'Invoker', 'Storm Spirit', 'Shadow Fiend', 'Templar Assassin', 'Queen of Pain', 'Puck', 'Zeus', 'Tinker', 'Lina', 'Ember Spirit', 'Outworld Destroyer', 'Morphling', 'Leshrac', 'Sniper', 'Mirana', 'Viper', 'Death Prophet', 'Razor', 'Pugna', 'Skywrath Mage', "Nature's Prophet", 'Windranger', 'Batrider', 'Lina', 'Shadow Fiend', 'Templar Assassin', 'Ember Spirit', 'Huskar', 'Kunkka', 'Puck', 'Queen of Pain', 'Invoker', 'Storm Spirit', 'Outworld Devourer', 'Death Prophet', 'Razor', 'Lina', 'Sniper', 'Medusa', 'Leshrac', 'Viper'],
|
||||
'posCarry': ['Pudge', 'Muerta', 'Monkey King', 'Drow Ranger', 'Alchemist', 'Anti-Mage', 'Spectre', 'Juggernaut', 'Phantom Assassin', 'Faceless Void', 'Phantom Lancer', 'Lifestealer', 'Slark', 'Terrorblade', 'Medusa', 'Luna', 'Shadow Fiend', 'Morphling', 'Templar Assassin', 'Ember Spirit', 'Naga Siren', 'Troll Warlord', 'Gyrocopter', 'Lone Druid', 'Ursa', 'Riki', 'Sven', 'Phantom Lancer', 'Chaos Knight', 'Night Stalker', 'Wraith King', 'Meepo', 'Troll Warlord', 'Juggernaut', 'Lifestealer', 'Templar Assassin', 'Ursa', 'Clinkz', 'Weaver', 'Riki', 'Spectre', 'Phantom Assassin', 'Naga Siren', 'Luna', 'Gyrocopter', 'Meepo', 'Lone Druid', 'Slark', 'Morphling', 'Terrorblade', 'Medusa', 'Faceless Void']
|
||||
}
|
||||
|
||||
# Перебираем каждого героя и добавляем значения в соответствующие столбцы
|
||||
for index, row in data.iterrows():
|
||||
for role, characters in roles.items():
|
||||
data.loc[index, role] = int(row['Name'] in characters)
|
||||
|
||||
pd.set_option('display.max_columns', None)
|
||||
pd.set_option('display.max_rows', None)
|
||||
print(data)
|
||||
|
||||
# Разделение датафрейма на признаки и метки
|
||||
X = data[['Primary Attribute', 'IsDurable', 'IsSupport', 'IsCarry', 'IsDisabler', 'IsInitiator', 'IsNuker', 'IsEscaper', 'IsPusher']]
|
||||
y = data[['posCarry', 'posMid', 'posOfflane', 'posSupport', 'posHardSupport']]
|
||||
|
||||
# Преобразование меток в числовой формат
|
||||
label_encoder = LabelEncoder()
|
||||
y = y.apply(label_encoder.fit_transform)
|
||||
|
||||
# Разделение выборки на обучающую и тестовую
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=42)
|
||||
|
||||
# Создание и обучение модели
|
||||
model = MLPClassifier(hidden_layer_sizes=(128, 128, 128), activation='relu', max_iter=1000, random_state=42)
|
||||
model.fit(X_train, y_train)
|
||||
|
||||
# Предсказание позиций для тестовой выборки
|
||||
y_pred = model.predict(X_test)
|
||||
|
||||
# Оценка точности модели
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
class_report = classification_report(y_test, y_pred)
|
||||
print("Accuracy:", accuracy)
|
||||
print('Classification Report:')
|
||||
print(class_report)
|
||||
BIN
belyaeva_ekaterina_lab_6/positions.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
54
belyaeva_ekaterina_lab_7/README.md
Normal file
@@ -0,0 +1,54 @@
|
||||
## Задание
|
||||
|
||||
Выбрать художественный текст (четные варианты – русскоязычный, нечетные – англоязычный) и обучить на нем рекуррентную
|
||||
нейронную сеть для решения задачи генерации. Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями и проверить, как архитектура товарища справляется с вашим текстом.
|
||||
|
||||
## Как запустить лабораторную
|
||||
Запустить файл main.py
|
||||
## Используемые технологии
|
||||
Библиотеки tensorflow, numpy, их компоненты
|
||||
## Описание лабораторной (программы)
|
||||
|
||||
Данная лабораторная работа обучает модели для обработки русского и английского текста и решает задачу генерации.
|
||||
Ниже будет описан алгоритм работы одной из моделей (вторая работает аналогично):
|
||||
1. Читается текст из файла
|
||||
2. Создается экземпляр Tokenizer для токенизации текста
|
||||
3. С помощью метода fit_on_texts токенизатор анализирует текст и строит словарь уникальных слов
|
||||
4. rus_vocab_size - длина словаря
|
||||
5. C помощью метода text_to_sequences текст преобразуется в последовательность чисел
|
||||
6. Создаются последовательности для обучения модели
|
||||
7. Рассчитывается максимальная длина последовательности
|
||||
8. Входные последовательности выравниваются до максимальной длины
|
||||
9. С помощью функции to_categorical последовательности преобразуются в one-hot представление
|
||||
10. Переменные x_rus_train, y_rus_train инициализируются соответствующими значениями
|
||||
11. Такая же обработка текста происходит и для текста на английском языке
|
||||
12. Происходит создание модели на русском языке:
|
||||
- создается экземпляр модели Sequential
|
||||
- добавляется слой Embedding, отображающий слова в векторы фиксированной длины
|
||||
- добавляется слой LSTM с 512 нейронами
|
||||
- добавляется слой Dense с функцией softmax для получения вероятности каждого слова в словаре
|
||||
- модель компилируется
|
||||
13. Происходит обучение модели через model.fit()
|
||||
14. Все то же самое происходит для модели с английским языком
|
||||
15. Определяется функция generate_text для генерации текста на основе всех заданных параметров
|
||||
16. Выводятся результаты работы моделей и сгенерированные тексты
|
||||
|
||||
## Результат
|
||||
|
||||
Результат сгенерированного текста на русском языке: Помню просторный грязный двор и низкие домики обнесённые забором двор стоял у самой реки и по вёснам когда спадала полая вода он был усеян щепой и ракушками а иногда и другими куда более интересными вещами так однажды мы нашли туго набитую письмами сумку а потом вода принесла и осторожно положила на берег и самого почтальона он лежал на спине закинув руки как будто заслонясь от солнца ещё совсем молодой белокурый в форменной тужурке с блестящими пуговицами должно быть отправляясь в свой последний рейс почтальон начистил их мелом мелом мелом спадала щепой мелом мелом мелом мелом мелом спадала полая вода он ракушками а
|
||||
|
||||
Результат сгенерированного текста на английском языке: The old man was thin and gaunt with deep wrinkles in the back of his neck the brown blotches of the benevolent skin cancer the sun brings from its reflection on the tropic sea were on his cheeks the blotches ran well down the sides of his face and his hands had the deep creased scars from handling heavy fish on the cords but none of these scars were fresh they were as old as erosions in a fishless desert fishless desert desert desert desert desert desert desert desert desert desert desert desert desert desert desert desert desert desert desert desert desert fishless
|
||||
|
||||
Результат потерь на тренировочных данных:
|
||||
|
||||

|
||||
|
||||
Вывод: можно заметить, что в сгенерированных текстах в конце слова повторяются. Это происходит потому, что в параметрах модели
|
||||
указано сгенерировать 100 слов, хотя в тексте, по которому модель обучается, меньше слов. Поэтому сгенерированный текст сначала
|
||||
соответствует тексту для обучения, а затем начинает выдавать рандомные слова. Но нужно отметить, что это слова, а не просто
|
||||
набор букв и пробелы, которые получались при иных настройках моделей.
|
||||
|
||||
Так как у английской модели меньше потерь на тренировочных данных, чем у русской, то получается, что выполненная модель
|
||||
обрабатывает английский текст чуть лучше, чем русский, но в результате обе модели выдали осмысленный текст, что связано с большим
|
||||
числом нейронов и эпох, при помощи которых обучалась модель. Ведь когда было 20 эпох, а не 200, модель выдавала очень слабо осмысленный результат.
|
||||
|
||||
5
belyaeva_ekaterina_lab_7/eng.txt
Normal file
@@ -0,0 +1,5 @@
|
||||
The old man was thin and gaunt with deep wrinkles in the back of his neck. The
|
||||
brown blotches of the benevolent skin cancer the sun brings from its reflection on the
|
||||
tropic sea were on his cheeks. The blotches ran well down the sides of his face and his
|
||||
hands had the deep-creased scars from handling heavy fish on the cords. But none of
|
||||
these scars were fresh. They were as old as erosions in a fishless desert.
|
||||
97
belyaeva_ekaterina_lab_7/main.py
Normal file
@@ -0,0 +1,97 @@
|
||||
import tensorflow as tf
|
||||
import numpy as np
|
||||
from keras.models import Sequential
|
||||
from keras.layers import LSTM, Dense, Embedding
|
||||
from keras.preprocessing.text import Tokenizer
|
||||
from keras.preprocessing.sequence import pad_sequences
|
||||
|
||||
# Загрузка и предобработка данных на русском языке
|
||||
with open("rus.txt", "r", encoding="utf-8") as f:
|
||||
rus_text = f.read()
|
||||
|
||||
tokenizer_rus = Tokenizer()
|
||||
tokenizer_rus.fit_on_texts([rus_text])
|
||||
|
||||
rus_vocab_size = len(tokenizer_rus.word_index) + 1
|
||||
rus_sequences = tokenizer_rus.texts_to_sequences([rus_text])[0]
|
||||
rus_input_sequences = []
|
||||
rus_output_sequences = []
|
||||
|
||||
for i in range(1, len(rus_sequences)):
|
||||
rus_input_sequences.append(rus_sequences[:i])
|
||||
rus_output_sequences.append(rus_sequences[i])
|
||||
|
||||
rus_max_sequence_len = max([len(seq) for seq in rus_input_sequences])
|
||||
rus_input_sequences = pad_sequences(rus_input_sequences, maxlen=rus_max_sequence_len)
|
||||
|
||||
x_rus_train = rus_input_sequences
|
||||
y_rus_train = tf.keras.utils.to_categorical(rus_output_sequences, num_classes=rus_vocab_size)
|
||||
|
||||
# Загрузка и предобработка данных на английском языке
|
||||
with open("eng.txt", "r", encoding="utf-8") as f:
|
||||
eng_text = f.read()
|
||||
|
||||
tokenizer_eng = Tokenizer()
|
||||
tokenizer_eng.fit_on_texts([eng_text])
|
||||
|
||||
eng_vocab_size = len(tokenizer_eng.word_index) + 1
|
||||
eng_sequences = tokenizer_eng.texts_to_sequences([eng_text])[0]
|
||||
eng_input_sequences = []
|
||||
eng_output_sequences = []
|
||||
|
||||
for i in range(1, len(eng_sequences)):
|
||||
eng_input_sequences.append(eng_sequences[:i])
|
||||
eng_output_sequences.append(eng_sequences[i])
|
||||
|
||||
eng_max_sequence_len = max([len(seq) for seq in eng_input_sequences])
|
||||
eng_input_sequences = pad_sequences(eng_input_sequences, maxlen=eng_max_sequence_len)
|
||||
|
||||
x_eng_train = eng_input_sequences
|
||||
y_eng_train = tf.keras.utils.to_categorical(eng_output_sequences, num_classes=eng_vocab_size)
|
||||
|
||||
# Построение модели для русского языка
|
||||
rus_model = Sequential()
|
||||
rus_model.add(Embedding(rus_vocab_size, 256, input_length=rus_max_sequence_len))
|
||||
rus_model.add(LSTM(512))
|
||||
rus_model.add(Dense(rus_vocab_size, activation='softmax'))
|
||||
|
||||
rus_model.compile(loss='categorical_crossentropy', optimizer='adam')
|
||||
|
||||
# Обучение модели для русского языка
|
||||
rus_history = rus_model.fit(x_rus_train, y_rus_train, batch_size=128, epochs=200)
|
||||
|
||||
# Построение модели для английского языка
|
||||
eng_model = Sequential()
|
||||
eng_model.add(Embedding(eng_vocab_size, 256, input_length=eng_max_sequence_len))
|
||||
eng_model.add(LSTM(512))
|
||||
eng_model.add(Dense(eng_vocab_size, activation='softmax'))
|
||||
|
||||
eng_model.compile(loss='categorical_crossentropy', optimizer='adam')
|
||||
|
||||
# Обучение модели для английского языка
|
||||
eng_history = eng_model.fit(x_eng_train, y_eng_train, batch_size=128, epochs=200)
|
||||
|
||||
def generate_text(model, tokenizer, max_sequence_len, seed_text):
|
||||
output_text = seed_text
|
||||
for _ in range(100): # Генерируем 100 слов
|
||||
encoded_text = tokenizer.texts_to_sequences([output_text])[0]
|
||||
pad_encoded = pad_sequences([encoded_text], maxlen=max_sequence_len, truncating='pre')
|
||||
pred_word_index = np.argmax(model.predict(pad_encoded), axis=-1)
|
||||
pred_word = tokenizer.index_word[pred_word_index[0]]
|
||||
output_text += " " + pred_word
|
||||
return output_text
|
||||
|
||||
# Генерация текста для русской и английской моделей
|
||||
rus_output_text = generate_text(rus_model, tokenizer_rus, rus_max_sequence_len, "Помню просторный")
|
||||
eng_output_text = generate_text(eng_model, tokenizer_eng, eng_max_sequence_len, "The old man")
|
||||
|
||||
# Вывод результатов
|
||||
print("Русская модель:")
|
||||
print("Потери на тренировочных данных:", rus_history.history['loss'][-1])
|
||||
print("Сгенерированный текст:")
|
||||
print(rus_output_text)
|
||||
|
||||
print("Английская модель:")
|
||||
print("Потери на тренировочных данных:", eng_history.history['loss'][-1])
|
||||
print("Сгенерированный текст:")
|
||||
print(eng_output_text)
|
||||
BIN
belyaeva_ekaterina_lab_7/res.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
1
belyaeva_ekaterina_lab_7/rus.txt
Normal file
@@ -0,0 +1 @@
|
||||
Помню просторный грязный двор и низкие домики, обнесённые забором. Двор стоял у самой реки, и по вёснам, когда спадала полая вода, он был усеян щепой и ракушками, а иногда и другими, куда более интересными вещами. Так, однажды мы нашли туго набитую письмами сумку, а потом вода принесла и осторожно положила на берег и самого почтальона. Он лежал на спине, закинув руки, как будто заслонясь от солнца, ещё совсем молодой, белокурый, в форменной тужурке с блестящими пуговицами: должно быть, отправляясь в свой последний рейс, почтальон начистил их мелом.
|
||||
57
degtyarev_mikhail_lab_1/Readme.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# Лабораторная 1
|
||||
|
||||
## Задание
|
||||
Сгенерируйте определенный тип данных и сравнить на нем 3 модели (по варианту 9). Построить графики, отобразить качество моделей, объяснить полученные результаты
|
||||
|
||||
## Данные
|
||||
|
||||
make_classification (n_samples=500, n_features=2, n_redundant=0, n_informative=2, random_state=rs, n_clusters_per_class=1)
|
||||
- Модели:
|
||||
- - Персептрон
|
||||
- - Многослойный персептрон с 10-ю нейронами в скрытом слое (alpha = 0.01)
|
||||
- - Многослойный персептрон со 100-а нейронами в скрытом слое (alpha =0.01)
|
||||
|
||||
## Описание Программы
|
||||
|
||||
|
||||
### Используемые библиотеки
|
||||
- scikit-learn
|
||||
- numpy
|
||||
- matplotlib
|
||||
|
||||
### Шаги программы
|
||||
|
||||
1. **Генерация данных:**
|
||||
- Используется функция `make_classification` из библиотеки scikit-learn.
|
||||
- Создаются два признака, и данные разделяются на два класса.
|
||||
- Используется 500 сэмплов.
|
||||
|
||||
2. **Разделение данных:**
|
||||
- Данные разделяются на обучающий и тестовый наборы с использованием `train_test_split` из scikit-learn.
|
||||
- Размер тестового набора установлен в 20% от общего размера.
|
||||
|
||||
3. **Создание моделей:**
|
||||
- Три модели создаются с использованием библиотеки scikit-learn:
|
||||
- Персептрон
|
||||
- Многослойный персептрон с 10 нейронами в скрытом слое
|
||||
- Многослойный персептрон с 100 нейронами в скрытом слое
|
||||
|
||||
4. **Обучение и Оценка:**
|
||||
- Каждая модель обучается на обучающем наборе данных.
|
||||
- Производится оценка каждой модели на тестовом наборе с использованием метрики точности (`accuracy`).
|
||||
|
||||
5. **Визуализация данных и Границ Решения:**
|
||||
- Для каждой модели строится график, на котором отображаются точки тестового набора и граница решения модели.
|
||||
- Каждый график снабжен названием, указывающим на модель и ее точность.
|
||||
|
||||
### Запуск программы
|
||||
- Склонировать или скачать код `main.py`.
|
||||
- Запустите файл в среде, поддерживающей выполнение Python.
|
||||
|
||||
### Результаты
|
||||
- Можно проанализировать точность на графиках и понять,
|
||||
что самая точная из 3 моделей оказалась Многослойный персептрон со 100-а нейронами в скрытом слое.
|
||||
- Многослойный персептрон со 100-а нейронами: 0.96
|
||||
- Многослойный персептрон с 10-ю нейронами: 0.90
|
||||
- Персептрон: 0.86
|
||||
|
||||
54
degtyarev_mikhail_lab_1/main.py
Normal file
@@ -0,0 +1,54 @@
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
from sklearn.datasets import make_classification
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import Perceptron
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.metrics import accuracy_score
|
||||
|
||||
# Установите random_state, чтобы результаты были воспроизводимыми
|
||||
rs = 42
|
||||
|
||||
# Генерация данных
|
||||
X, y = make_classification(
|
||||
n_samples=500, n_features=2, n_redundant=0, n_informative=2,
|
||||
random_state=rs, n_clusters_per_class=1
|
||||
)
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=rs)
|
||||
|
||||
# Создание моделей
|
||||
models = [
|
||||
('Perceptron', Perceptron(random_state=rs)),
|
||||
('MLP (10 neurons)', MLPClassifier(hidden_layer_sizes=(10,), alpha=0.01, random_state=rs)),
|
||||
('MLP (100 neurons)', MLPClassifier(hidden_layer_sizes=(100,), alpha=0.01, random_state=rs))
|
||||
]
|
||||
|
||||
# Обучение и оценка моделей
|
||||
results = {}
|
||||
|
||||
plt.figure(figsize=(15, 5))
|
||||
|
||||
for i, (name, model) in enumerate(models, 1):
|
||||
plt.subplot(1, 3, i)
|
||||
model.fit(X_train, y_train)
|
||||
y_pred = model.predict(X_test)
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
results[name] = accuracy
|
||||
|
||||
# Разбиение точек на классы
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.Paired, edgecolors='k')
|
||||
|
||||
# Построение границы решения для каждой модели
|
||||
h = .02 # Шаг сетки
|
||||
x_min, x_max = X_test[:, 0].min() - 1, X_test[:, 0].max() + 1
|
||||
y_min, y_max = X_test[:, 1].min() - 1, X_test[:, 1].max() + 1
|
||||
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
|
||||
Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
|
||||
Z = Z.reshape(xx.shape)
|
||||
plt.contourf(xx, yy, Z, cmap=plt.cm.Paired, alpha=0.8)
|
||||
|
||||
plt.title(f'{name}\nAccuracy: {accuracy:.2f}')
|
||||
|
||||
plt.show()
|
||||
BIN
degtyarev_mikhail_lab_1/mlp_10.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
degtyarev_mikhail_lab_1/mlp_100.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
degtyarev_mikhail_lab_1/perc_base.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
60
degtyarev_mikhail_lab_2/Readme.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# Лабораторная 2
|
||||
## Вариант 9
|
||||
|
||||
## Задание
|
||||
Выполните ранжирование признаков с помощью указанных по вариантумоделей. Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку. Проведите анализ получившихся результатов.
|
||||
## Модели
|
||||
|
||||
- Лассо (Lasso)
|
||||
- Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
- Линейная корреляция (f_regression)
|
||||
|
||||
## Описание Программы
|
||||
Данная программа решает задачу ранжирования признаков в задаче регрессии, используя три различные модели: Lasso, случайные деревья (Random Forest) и линейную корреляцию (f_regression). Каждая модель ранжирует признаки в соответствии с их важностью, а затем производится вычисление среднего ранжирования для каждого признака на основе результатов всех моделей.
|
||||
|
||||
|
||||
### Используемые библиотеки
|
||||
- `numpy`: Для работы с массивами и вычислений.
|
||||
- `scikit-learn`: Библиотека машинного обучения для реализации моделей регрессии и методов ранжирования признаков.
|
||||
|
||||
### Шаги программы
|
||||
|
||||
Исходные данные: Генерация случайных данных для задачи регрессии, состоящей из 750 строк и 14 признаков.
|
||||
|
||||
Модели:
|
||||
|
||||
Lasso: Применение линейной модели Lasso с параметром альфа равным 0.05.
|
||||
Random Forest: Использование ансамбля случайных деревьев с 100 деревьями.
|
||||
Линейная корреляция (f_regression): Расчет коэффициентов корреляции между признаками и целевой переменной.
|
||||
Ранжирование признаков:
|
||||
|
||||
Каждая модель ранжирует признаки в соответствии с их важностью.
|
||||
Используется MinMaxScaler для нормализации значений рангов.
|
||||
Среднее ранжирование:
|
||||
|
||||
Для каждого признака рассчитывается среднее значение его ранга по всем моделям.
|
||||
Вывод результатов:
|
||||
|
||||
Выводится среднее ранжирование для каждого признака.
|
||||
Показываются результаты ранжирования для каждой модели.
|
||||
Выводится топ-4 признака с их значениями на основе среднего ранжирования.
|
||||
|
||||
### Запуск программы
|
||||
- Склонировать или скачать код `main.py`.
|
||||
- Запустите файл в среде, поддерживающей выполнение Python. `python main.py`
|
||||
|
||||
### Результаты
|
||||
- Lasso
|
||||
{'x1': 0.69, 'x2': 0.72, 'x3': 0.0, 'x4': 1.0, 'x5': 0.29, 'x6': 0.0, 'x7': 0.0, 'x8': 0.0, 'x9': 0.0, 'x10': 0.0, 'x11': 0.0, 'x12': 0.0, 'x13': 0.0, 'x14': 0.0}
|
||||
- Random Forest
|
||||
{'x1': 0.66, 'x2': 0.76, 'x3': 0.1, 'x4': 0.55, 'x5': 0.23, 'x6': 0.0, 'x7': 0.01, 'x8': 0.0, 'x9': 0.0, 'x10': 0.0, 'x11': 0.29, 'x12': 0.28, 'x13': 0.09, 'x14': 1.0}
|
||||
- Correlation
|
||||
{'x1': 0.3, 'x2': 0.45, 'x3': 0.0, 'x4': 1.0, 'x5': 0.04, 'x6': 0.0, 'x7': 0.01, 'x8': 0.02, 'x9': 0.01, 'x10': 0.0, 'x11': 0.29, 'x12': 0.44, 'x13': 0.0, 'x14': 0.98}
|
||||
- Среднее
|
||||
{'x1': 0.55, 'x2': 0.64, 'x3': 0.03, 'x4': 0.85, 'x5': 0.19, 'x6': 0.0, 'x7': 0.01, 'x8': 0.01, 'x9': 0.0, 'x10': 0.0, 'x11': 0.19, 'x12': 0.24, 'x13': 0.03, 'x14': 0.66}
|
||||
- Топ 4 признака с их значениями на основе среднего ранжирования:
|
||||
1. **x4:** 0.85
|
||||
2. **x14:** 0.66
|
||||
3. **x2:** 0.64
|
||||
4. **x1:** 0.55
|
||||
|
||||
71
degtyarev_mikhail_lab_2/main.py
Normal file
@@ -0,0 +1,71 @@
|
||||
from sklearn.linear_model import Lasso
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.feature_selection import f_regression
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import numpy as np
|
||||
|
||||
# Генерация исходных данных
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
Y = (10 * np.sin(np.pi*X[:, 0]*X[:, 1]) + 20*(X[:, 2] - .5)**2 +
|
||||
10*X[:, 3] + 5*X[:, 4]**5 + np.random.normal(0, 1))
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
|
||||
# Лассо
|
||||
lasso = Lasso(alpha=0.05)
|
||||
lasso.fit(X, Y)
|
||||
|
||||
# Случайные деревья
|
||||
rf = RandomForestRegressor(n_estimators=100, random_state=0)
|
||||
rf.fit(X, Y)
|
||||
|
||||
# Линейная корреляция (f_regression)
|
||||
correlation_coeffs, _ = f_regression(X, Y)
|
||||
|
||||
# Ранжирование с использованием MinMaxScaler
|
||||
def rank_to_dict(ranks, names):
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
# Ранжирование для каждой модели
|
||||
ranks = {}
|
||||
names = ["x%s" % i for i in range(1, 15)]
|
||||
|
||||
ranks["Lasso"] = rank_to_dict(lasso.coef_, names)
|
||||
ranks["Random Forest"] = rank_to_dict(rf.feature_importances_, names)
|
||||
ranks["Correlation"] = rank_to_dict(correlation_coeffs, names)
|
||||
|
||||
# Создание пустого словаря для данных
|
||||
mean = {}
|
||||
|
||||
# Обработка словаря ranks
|
||||
for key, value in ranks.items():
|
||||
for item in value.items():
|
||||
if item[0] not in mean:
|
||||
mean[item[0]] = 0
|
||||
mean[item[0]] += item[1]
|
||||
|
||||
# Нахождение среднего по каждому признаку
|
||||
for key, value in mean.items():
|
||||
res = value / len(ranks)
|
||||
mean[key] = round(res, 2)
|
||||
|
||||
# Сортировка и вывод списка средних значений
|
||||
mean_dict = dict(mean)
|
||||
print("MEAN")
|
||||
print(mean_dict)
|
||||
|
||||
# Вывод результатов ранжирования для каждой модели
|
||||
for key, value in ranks.items():
|
||||
print(key)
|
||||
print(value)
|
||||
|
||||
# Вывод топ-4 признаков с их значениями
|
||||
top_features = sorted(mean.items(), key=lambda x: x[1], reverse=True)[:4]
|
||||
print("Top 4 features with values:")
|
||||
for feature, value in top_features:
|
||||
print(f"{feature}: {value}")
|
||||
41
gusev_vladislav_lab_7/README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
### Вариант 9
|
||||
### Задание на лабораторную работу:
|
||||
Выбрать художественный текст (четные варианты – русскоязычный, нечетные – англоязычный) и
|
||||
обучить на нем рекуррентную нейронную сеть для решения задачи генерации.
|
||||
Подобрать архитектуру и параметры так, чтобы приблизиться к максимально осмысленному результату.
|
||||
Далее разбиться на пары четный-нечетный вариант, обменяться разработанными сетями и проверить,
|
||||
как архитектура товарища справляется с вашим текстом.
|
||||
В завершении подобрать компромиссную архитектуру, справляющуюся достаточно хорошо с обоими видами
|
||||
текстов.
|
||||
### Как запустить лабораторную работу:
|
||||
Выполняем файл gusev_vladislav_lab_7.py, решение будет в консоли.
|
||||
|
||||
### Технологии
|
||||
Keras - это библиотека для Python, позволяющая легко и быстро создавать нейронные сети.
|
||||
NumPy - библиотека для работы с многомерными массивами.
|
||||
|
||||
### По коду
|
||||
1) Читаем файл с текстом
|
||||
2) Создаем объект tokenizer для превращение текста в числа для нейронной сети.
|
||||
3) Создаем модель нейронной сети с следующими аргументами:
|
||||
|
||||
- Embedding - это слой, который обычно используется для векторного представления категориальных данных, таких как слова или символы. Он позволяет нейронной сети изучать эмбеддинги, то есть отображение слов (или символов) в вектора низкой размерности. Это позволяет сети понимать семантические отношения между словами.
|
||||
- LSTM - это слой, представляющий собой рекуррентный нейрон, который способен учитывать зависимости в последовательных данных. Он хорошо подходит для обработки последовательных данных, таких как текст.
|
||||
- Dense - это полносвязный слой, который принимает входные данные и применяет весовые коэффициенты к ним. Этот слой часто используется в конце нейронных сетей для решения задачи классификации или регрессии.
|
||||
|
||||
4) Обучаем модель на 100 эпохах (итерациях по данным) и генерируем текст.
|
||||
|
||||
|
||||
|
||||

|
||||
Английский 100 эпох
|
||||

|
||||
|
||||

|
||||
Русский 100 эпох
|
||||

|
||||
Русский 17 эпох
|
||||

|
||||
### По консоли
|
||||
- Английский текст генерировался на 100 эпохах, начало получилось осмысленным, но чем ближе к концу тем хуже.
|
||||
- Русский текст также генерировался на 100 эпохах, с многочисленными ошибками в словах. Русский текст,сгенерированный на 17 эпохах по ошибкам в словах оказался лучше, но всё равно не идеально.
|
||||
61
gusev_vladislav_lab_7/gusev_vladislav_lab_7.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import numpy as np
|
||||
from keras.models import Sequential
|
||||
from keras.layers import Embedding, LSTM, Dense
|
||||
from keras.preprocessing.text import Tokenizer
|
||||
from keras.preprocessing.sequence import pad_sequences
|
||||
|
||||
# Загрузка текста из файла
|
||||
with open('text_ru.txt', 'r', encoding='utf-8') as file:
|
||||
text = file.read()
|
||||
|
||||
# Создание экземпляра Tokenizer
|
||||
tokenizer = Tokenizer(char_level=True)
|
||||
tokenizer.fit_on_texts(text)
|
||||
|
||||
# Преобразование текста в последовательность чисел
|
||||
sequences = tokenizer.texts_to_sequences(text)
|
||||
|
||||
# Подготовка обучающих данных
|
||||
seq_length = 100
|
||||
dataX, dataY = [], []
|
||||
for i in range(0, len(sequences) - seq_length):
|
||||
seq_in = sequences[i:i + seq_length]
|
||||
seq_out = sequences[i + seq_length]
|
||||
dataX.append(seq_in)
|
||||
dataY.append(seq_out)
|
||||
|
||||
dataX = np.array(dataX)
|
||||
dataY = np.array(dataY)
|
||||
|
||||
# Создание модели
|
||||
vocab_size = len(tokenizer.word_index) + 1
|
||||
embedding_dim = 256
|
||||
rnn_units = 1024
|
||||
|
||||
model = Sequential()
|
||||
model.add(Embedding(input_dim=vocab_size, output_dim=embedding_dim, input_length=seq_length))
|
||||
model.add(LSTM(units=rnn_units))
|
||||
model.add(Dense(units=vocab_size, activation='softmax'))
|
||||
|
||||
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam')
|
||||
|
||||
# Обучение модели
|
||||
batch_size = 64
|
||||
model.fit(dataX, dataY, epochs=17, batch_size=batch_size)
|
||||
def generate_text(seed_text, gen_length):
|
||||
generated_text = seed_text
|
||||
|
||||
for _ in range(gen_length):
|
||||
sequence = tokenizer.texts_to_sequences([seed_text])[0]
|
||||
sequence = pad_sequences([sequence], maxlen=seq_length)
|
||||
prediction = model.predict(sequence)[0]
|
||||
predicted_index = np.argmax(prediction)
|
||||
predicted_char = tokenizer.index_word[predicted_index]
|
||||
generated_text += predicted_char
|
||||
seed_text += predicted_char
|
||||
seed_text = seed_text[1:]
|
||||
|
||||
return generated_text
|
||||
# Пример использования
|
||||
generated_text = generate_text("Мультфильмы", 250)
|
||||
print(generated_text)
|
||||
BIN
gusev_vladislav_lab_7/img.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
gusev_vladislav_lab_7/img_1.png
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
gusev_vladislav_lab_7/img_2.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
gusev_vladislav_lab_7/img_3.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
gusev_vladislav_lab_7/img_4.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
21
gusev_vladislav_lab_7/text_eng.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
Do you like watching cartoons? Probably you do! But how did they come to be? Who invented them?
|
||||
|
||||
This is actually a very tough question. The first cartoons were created long before the TV.
|
||||
For example, shadow play was a very popular form of entertainment in ancient China. Such shows looked almost like modern cartoons!
|
||||
|
||||
A toy called a flip book was made in the late 19th century. It was a small soft book with pictures.
|
||||
Each picture was drawn in a slightly different5 way. When you bend this book and release the pages one by one, the images start to move.
|
||||
Strictly speaking, they don’t, but our eyes see it like that anyway. The first real cartoons were made using this trick, too!
|
||||
|
||||
In 1895 brothers Louis and Auguste Lumière created a cinematograph.
|
||||
It was a camera and a film projector in one device. Using this device, many aspiring film directors started to create their own cartoons.
|
||||
|
||||
This developed into a full industry by 1910. Many cartoons of that era are forgotten now, but some are still with us.
|
||||
For example, Felix the Cat was created by Otto Messmer in 1919, and he’s still with us, more than a hundred years later.
|
||||
Currently the rights to the character are held by DreamWorks Animation.
|
||||
|
||||
One of the pioneers in the industry was famous Walt Disney.
|
||||
He was not afraid to experiment to make a cartoon, and his Snow White film was among the firsts to use a multiplane camera.
|
||||
With its help the characters were able to move around the objects, creating an illusion of a 3D world.
|
||||
|
||||
Today most of the cartoons are made with computer animation. The last traditional Disney cartoon to date was Winnie the Pooh (2011).
|
||||
21
gusev_vladislav_lab_7/text_ru.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
Вам нравится смотреть мультфильмы? Вероятно, так оно и есть! Но как они появились на свет? Кто их изобрел?
|
||||
|
||||
На самом деле это очень сложный вопрос. Первые мультфильмы были созданы задолго до появления телевидения.
|
||||
Например, игра с тенью была очень популярной формой развлечения в Древнем Китае. Такие шоу выглядели почти как современные мультфильмы!
|
||||
|
||||
Игрушка под названием книжка-перевертыш была изготовлена в конце 19 века. Это была маленькая мягкая книжка с картинками.
|
||||
Каждая картинка была нарисована немного по-разному. Когда вы сгибаете эту книгу и отпускаете страницы одну за другой, изображения начинают двигаться.
|
||||
Строго говоря, это не так, но наши глаза все равно видят это именно так. Первые настоящие мультфильмы тоже были сделаны с использованием этого трюка!
|
||||
|
||||
В 1895 году братья Луи и Огюст Люмьер создали кинематограф.
|
||||
Это была камера и кинопроектор в одном устройстве. Используя это устройство, многие начинающие режиссеры начали создавать свои собственные мультфильмы.
|
||||
|
||||
К 1910 году это развилось в полноценную индустрию. Многие мультфильмы той эпохи сейчас забыты, но некоторые все еще с нами.
|
||||
Например, кот Феликс был создан Отто Мессмером в 1919 году, и он все еще с нами, более ста лет спустя.
|
||||
В настоящее время правами на персонажа владеет DreamWorks Animation.
|
||||
|
||||
Одним из пионеров в этой отрасли был знаменитый Уолт Дисней.
|
||||
Он не боялся экспериментировать при создании мультфильма, и его фильм "Белоснежка" был одним из первых, в котором использовалась многоплановая камера.
|
||||
С его помощью персонажи смогли передвигаться по объектам, создавая иллюзию трехмерного мира.
|
||||
|
||||
Сегодня большинство мультфильмов создано с использованием компьютерной анимации. Последним традиционным диснеевским мультфильмом на сегодняшний день был "Винни-Пух" (2011).
|
||||
82
kamyshov_danila_lab_6/app.py
Normal file
@@ -0,0 +1,82 @@
|
||||
from flask import Flask, request, render_template
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.neural_network import MLPClassifier
|
||||
from sklearn.preprocessing import StandardScaler, LabelEncoder
|
||||
from sklearn.compose import ColumnTransformer
|
||||
from sklearn.pipeline import make_pipeline
|
||||
|
||||
# Создание экземпляра Flask
|
||||
app = Flask(__name__)
|
||||
|
||||
# Загрузка данных из файла
|
||||
data = pd.read_csv("student-mat.csv")
|
||||
|
||||
# Подготовка данных
|
||||
X = data[["Pstatus", "guardian", "internet", "romantic", "famrel", "freetime", "goout", "Dalc", "Walc", "health", "absences"]]
|
||||
y = data["G3"]
|
||||
|
||||
# Преобразование категориальных признаков в числовые
|
||||
label_encoders = {}
|
||||
|
||||
for column in ["Pstatus", "guardian", "internet", "romantic"]:
|
||||
label_encoder = LabelEncoder()
|
||||
X[column] = label_encoder.fit_transform(X[column])
|
||||
label_encoders[column] = label_encoder
|
||||
|
||||
# Разделение данных на обучающий и тестовый наборы
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
|
||||
|
||||
# Преобразование данных
|
||||
preprocessor = ColumnTransformer(
|
||||
transformers=[('num', StandardScaler(), X.columns)],
|
||||
remainder='passthrough'
|
||||
)
|
||||
|
||||
# Создание модели MLPClassifier
|
||||
mlp_classifier = MLPClassifier(
|
||||
hidden_layer_sizes=(100, 50), # Увеличим количество нейронов и слоев
|
||||
max_iter=1000,
|
||||
random_state=42
|
||||
)
|
||||
|
||||
# Создание конвейера для обработки данных и обучения модели
|
||||
model = make_pipeline(preprocessor, mlp_classifier)
|
||||
|
||||
# Обучение модели
|
||||
model.fit(X_train, y_train)
|
||||
|
||||
# Маршрут для отображения HTML-формы
|
||||
@app.route('/', methods=['GET'])
|
||||
def index():
|
||||
return render_template('index.html')
|
||||
|
||||
# Маршрут для предсказания оценки
|
||||
@app.route('/predict', methods=['POST'])
|
||||
def predict():
|
||||
data = request.form.to_dict()
|
||||
|
||||
# Подготовка данных для предсказания
|
||||
input_data = [data.get(feature, 0) for feature in X.columns]
|
||||
|
||||
# Преобразование категориальных признаков в числовые с использованием сохраненных LabelEncoder
|
||||
for column, label_encoder in label_encoders.items():
|
||||
input_data[X.columns.get_loc(column)] = label_encoder.transform([input_data[X.columns.get_loc(column)]])
|
||||
|
||||
# Преобразование в DataFrame
|
||||
input_df = pd.DataFrame([input_data], columns=X.columns)
|
||||
|
||||
# Дополним признаки, если какие-то из них отсутствуют в данных
|
||||
missing_features = set(X.columns) - set(input_df.columns)
|
||||
for feature in missing_features:
|
||||
input_df[feature] = 0
|
||||
|
||||
# Сортировка столбцов в том же порядке, что и при обучении модели
|
||||
input_df = input_df[X.columns]
|
||||
|
||||
# Предсказание с использованием обученной модели
|
||||
prediction = model.predict(input_df)[0]
|
||||
return f"Предсказанная оценка: {prediction}"
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(port=5000)
|
||||
39
kamyshov_danila_lab_6/readme.md
Normal file
@@ -0,0 +1,39 @@
|
||||
Общее задание:
|
||||
Использовать нейронную сеть (четные варианты – MLPRegressor, нечетные – MLPClassifier) для данных из датасета выбранного для курсовой работы, самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо она подходит для решения сформулированной вами задачи.
|
||||
|
||||
Задание по вариантам:
|
||||
модель MLPClassifier
|
||||
Тема: Анализ благополучия студентов
|
||||
Датасет: Student Alcohol Consumption
|
||||
ссылка: https://www.kaggle.com/datasets/uciml/student-alcohol-consumption?resource=download
|
||||
|
||||
Задача для нейронной сети:
|
||||
предсказание оценки учащихся, опираясь на данные их социального благополучия
|
||||
|
||||
Чтобы Запустить приложение нужно запустить файл app.py
|
||||
|
||||
Используемые технологии:
|
||||
|
||||
Flask: Фреймворк для создания веб-приложений на языке Python.
|
||||
pandas: Библиотека для обработки и анализа данных.
|
||||
scikit-learn: Библиотека для машинного обучения, включая MLPClassifier для нейронных сетей.
|
||||
HTML: Язык разметки для создания веб-страниц.
|
||||
CSS: Таблицы стилей для стилизации веб-страницы.
|
||||
Описание работы программы:
|
||||
Программа представляет собой веб-приложение, использующее машинное обучение для предсказания оценки студента. Она загружает данные из файла student-mat.csv, предобрабатывает их, обучает модель многослойного персептрона (MLP) на основе scikit-learn и предоставляет интерфейс для пользователя вводить данные студента и получать предсказание оценки.
|
||||
|
||||
Входные данные:
|
||||
|
||||
Pstatus: Статус совместного жилья родителей (A, T).
|
||||
guardian: Опекун студента (mother, father, mother).
|
||||
internet: Наличие интернета (no, yes).
|
||||
romantic: Наличие романтических отношений (no, yes).
|
||||
famrel: Оценка семейных отношений (4, 5, ...).
|
||||
freetime: Свободное время после школы (1, 2, ..., 5).
|
||||
goout: Время, проведенное с друзьями (1, 2, ..., 5).
|
||||
Dalc: Потребление алкоголя в рабочие дни (1, 2, ..., 5).
|
||||
Walc: Потребление алкоголя в выходные (1, 2, ..., 5).
|
||||
health: Текущее состояние здоровья (1, 2, ..., 5).
|
||||
absences: Количество пропущенных занятий (0, 1, 2, ...).
|
||||
Выходные данные:
|
||||
После ввода пользователем данных о студенте (через веб-форму), программа возвращает предсказанную оценку студента.
|
||||
396
kamyshov_danila_lab_6/student-mat.csv
Normal file
@@ -0,0 +1,396 @@
|
||||
school,sex,age,address,famsize,Pstatus,Medu,Fedu,Mjob,Fjob,reason,guardian,traveltime,studytime,failures,schoolsup,famsup,paid,activities,nursery,higher,internet,romantic,famrel,freetime,goout,Dalc,Walc,health,absences,G1,G2,G3
|
||||
GP,F,18,U,GT3,A,4,4,at_home,teacher,course,mother,2,2,0,yes,no,no,no,yes,yes,no,no,4,3,4,1,1,3,6,5,6,6
|
||||
GP,F,17,U,GT3,T,1,1,at_home,other,course,father,1,2,0,no,yes,no,no,no,yes,yes,no,5,3,3,1,1,3,4,5,5,6
|
||||
GP,F,15,U,LE3,T,1,1,at_home,other,other,mother,1,2,3,yes,no,yes,no,yes,yes,yes,no,4,3,2,2,3,3,10,7,8,10
|
||||
GP,F,15,U,GT3,T,4,2,health,services,home,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,yes,3,2,2,1,1,5,2,15,14,15
|
||||
GP,F,16,U,GT3,T,3,3,other,other,home,father,1,2,0,no,yes,yes,no,yes,yes,no,no,4,3,2,1,2,5,4,6,10,10
|
||||
GP,M,16,U,LE3,T,4,3,services,other,reputation,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,no,5,4,2,1,2,5,10,15,15,15
|
||||
GP,M,16,U,LE3,T,2,2,other,other,home,mother,1,2,0,no,no,no,no,yes,yes,yes,no,4,4,4,1,1,3,0,12,12,11
|
||||
GP,F,17,U,GT3,A,4,4,other,teacher,home,mother,2,2,0,yes,yes,no,no,yes,yes,no,no,4,1,4,1,1,1,6,6,5,6
|
||||
GP,M,15,U,LE3,A,3,2,services,other,home,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,4,2,2,1,1,1,0,16,18,19
|
||||
GP,M,15,U,GT3,T,3,4,other,other,home,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,no,5,5,1,1,1,5,0,14,15,15
|
||||
GP,F,15,U,GT3,T,4,4,teacher,health,reputation,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,3,3,3,1,2,2,0,10,8,9
|
||||
GP,F,15,U,GT3,T,2,1,services,other,reputation,father,3,3,0,no,yes,no,yes,yes,yes,yes,no,5,2,2,1,1,4,4,10,12,12
|
||||
GP,M,15,U,LE3,T,4,4,health,services,course,father,1,1,0,no,yes,yes,yes,yes,yes,yes,no,4,3,3,1,3,5,2,14,14,14
|
||||
GP,M,15,U,GT3,T,4,3,teacher,other,course,mother,2,2,0,no,yes,yes,no,yes,yes,yes,no,5,4,3,1,2,3,2,10,10,11
|
||||
GP,M,15,U,GT3,A,2,2,other,other,home,other,1,3,0,no,yes,no,no,yes,yes,yes,yes,4,5,2,1,1,3,0,14,16,16
|
||||
GP,F,16,U,GT3,T,4,4,health,other,home,mother,1,1,0,no,yes,no,no,yes,yes,yes,no,4,4,4,1,2,2,4,14,14,14
|
||||
GP,F,16,U,GT3,T,4,4,services,services,reputation,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,no,3,2,3,1,2,2,6,13,14,14
|
||||
GP,F,16,U,GT3,T,3,3,other,other,reputation,mother,3,2,0,yes,yes,no,yes,yes,yes,no,no,5,3,2,1,1,4,4,8,10,10
|
||||
GP,M,17,U,GT3,T,3,2,services,services,course,mother,1,1,3,no,yes,no,yes,yes,yes,yes,no,5,5,5,2,4,5,16,6,5,5
|
||||
GP,M,16,U,LE3,T,4,3,health,other,home,father,1,1,0,no,no,yes,yes,yes,yes,yes,no,3,1,3,1,3,5,4,8,10,10
|
||||
GP,M,15,U,GT3,T,4,3,teacher,other,reputation,mother,1,2,0,no,no,no,no,yes,yes,yes,no,4,4,1,1,1,1,0,13,14,15
|
||||
GP,M,15,U,GT3,T,4,4,health,health,other,father,1,1,0,no,yes,yes,no,yes,yes,yes,no,5,4,2,1,1,5,0,12,15,15
|
||||
GP,M,16,U,LE3,T,4,2,teacher,other,course,mother,1,2,0,no,no,no,yes,yes,yes,yes,no,4,5,1,1,3,5,2,15,15,16
|
||||
GP,M,16,U,LE3,T,2,2,other,other,reputation,mother,2,2,0,no,yes,no,yes,yes,yes,yes,no,5,4,4,2,4,5,0,13,13,12
|
||||
GP,F,15,R,GT3,T,2,4,services,health,course,mother,1,3,0,yes,yes,yes,yes,yes,yes,yes,no,4,3,2,1,1,5,2,10,9,8
|
||||
GP,F,16,U,GT3,T,2,2,services,services,home,mother,1,1,2,no,yes,yes,no,no,yes,yes,no,1,2,2,1,3,5,14,6,9,8
|
||||
GP,M,15,U,GT3,T,2,2,other,other,home,mother,1,1,0,no,yes,yes,no,yes,yes,yes,no,4,2,2,1,2,5,2,12,12,11
|
||||
GP,M,15,U,GT3,T,4,2,health,services,other,mother,1,1,0,no,no,yes,no,yes,yes,yes,no,2,2,4,2,4,1,4,15,16,15
|
||||
GP,M,16,U,LE3,A,3,4,services,other,home,mother,1,2,0,yes,yes,no,yes,yes,yes,yes,no,5,3,3,1,1,5,4,11,11,11
|
||||
GP,M,16,U,GT3,T,4,4,teacher,teacher,home,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,yes,4,4,5,5,5,5,16,10,12,11
|
||||
GP,M,15,U,GT3,T,4,4,health,services,home,mother,1,2,0,no,yes,yes,no,no,yes,yes,no,5,4,2,3,4,5,0,9,11,12
|
||||
GP,M,15,U,GT3,T,4,4,services,services,reputation,mother,2,2,0,no,yes,no,yes,yes,yes,yes,no,4,3,1,1,1,5,0,17,16,17
|
||||
GP,M,15,R,GT3,T,4,3,teacher,at_home,course,mother,1,2,0,no,yes,no,yes,yes,yes,yes,yes,4,5,2,1,1,5,0,17,16,16
|
||||
GP,M,15,U,LE3,T,3,3,other,other,course,mother,1,2,0,no,no,no,yes,no,yes,yes,no,5,3,2,1,1,2,0,8,10,12
|
||||
GP,M,16,U,GT3,T,3,2,other,other,home,mother,1,1,0,no,yes,yes,no,no,yes,yes,no,5,4,3,1,1,5,0,12,14,15
|
||||
GP,F,15,U,GT3,T,2,3,other,other,other,father,2,1,0,no,yes,no,yes,yes,yes,no,no,3,5,1,1,1,5,0,8,7,6
|
||||
GP,M,15,U,LE3,T,4,3,teacher,services,home,mother,1,3,0,no,yes,no,yes,yes,yes,yes,no,5,4,3,1,1,4,2,15,16,18
|
||||
GP,M,16,R,GT3,A,4,4,other,teacher,reputation,mother,2,3,0,no,yes,no,yes,yes,yes,yes,yes,2,4,3,1,1,5,7,15,16,15
|
||||
GP,F,15,R,GT3,T,3,4,services,health,course,mother,1,3,0,yes,yes,yes,yes,yes,yes,yes,no,4,3,2,1,1,5,2,12,12,11
|
||||
GP,F,15,R,GT3,T,2,2,at_home,other,reputation,mother,1,1,0,yes,yes,yes,yes,yes,yes,no,no,4,3,1,1,1,2,8,14,13,13
|
||||
GP,F,16,U,LE3,T,2,2,other,other,home,mother,2,2,1,no,yes,no,yes,no,yes,yes,yes,3,3,3,1,2,3,25,7,10,11
|
||||
GP,M,15,U,LE3,T,4,4,teacher,other,home,other,1,1,0,no,yes,no,no,no,yes,yes,yes,5,4,3,2,4,5,8,12,12,12
|
||||
GP,M,15,U,GT3,T,4,4,services,teacher,course,father,1,2,0,no,yes,no,yes,yes,yes,yes,no,4,3,3,1,1,5,2,19,18,18
|
||||
GP,M,15,U,GT3,T,2,2,services,services,course,father,1,1,0,yes,yes,no,no,yes,yes,yes,no,5,4,1,1,1,1,0,8,8,11
|
||||
GP,F,16,U,LE3,T,2,2,other,at_home,course,father,2,2,1,yes,no,no,yes,yes,yes,yes,no,4,3,3,2,2,5,14,10,10,9
|
||||
GP,F,15,U,LE3,A,4,3,other,other,course,mother,1,2,0,yes,yes,yes,yes,yes,yes,yes,yes,5,2,2,1,1,5,8,8,8,6
|
||||
GP,F,16,U,LE3,A,3,3,other,services,home,mother,1,2,0,no,yes,no,no,yes,yes,yes,no,2,3,5,1,4,3,12,11,12,11
|
||||
GP,M,16,U,GT3,T,4,3,health,services,reputation,mother,1,4,0,no,no,no,yes,yes,yes,yes,no,4,2,2,1,1,2,4,19,19,20
|
||||
GP,M,15,U,GT3,T,4,2,teacher,other,home,mother,1,2,0,no,yes,yes,no,yes,yes,no,no,4,3,3,2,2,5,2,15,15,14
|
||||
GP,F,15,U,GT3,T,4,4,services,teacher,other,father,1,2,1,yes,yes,no,yes,no,yes,yes,no,4,4,4,1,1,3,2,7,7,7
|
||||
GP,F,16,U,LE3,T,2,2,services,services,course,mother,3,2,0,no,yes,yes,no,yes,yes,yes,no,4,3,3,2,3,4,2,12,13,13
|
||||
GP,F,15,U,LE3,T,4,2,health,other,other,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,4,3,3,1,1,5,2,11,13,13
|
||||
GP,M,15,U,LE3,A,4,2,health,health,other,father,2,1,1,no,no,no,no,yes,yes,no,no,5,5,5,3,4,5,6,11,11,10
|
||||
GP,F,15,U,GT3,T,4,4,services,services,course,mother,1,1,0,yes,yes,yes,no,yes,yes,yes,no,3,3,4,2,3,5,0,8,10,11
|
||||
GP,F,15,U,LE3,A,3,3,other,other,other,mother,1,1,0,no,no,yes,no,yes,yes,yes,no,5,3,4,4,4,1,6,10,13,13
|
||||
GP,F,16,U,GT3,A,2,1,other,other,other,mother,1,2,0,no,no,yes,yes,yes,yes,yes,yes,5,3,4,1,1,2,8,8,9,10
|
||||
GP,F,15,U,GT3,A,4,3,services,services,reputation,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,no,4,3,2,1,1,1,0,14,15,15
|
||||
GP,M,15,U,GT3,T,4,4,teacher,health,reputation,mother,1,2,0,no,yes,no,yes,yes,yes,no,no,3,2,2,1,1,5,4,14,15,15
|
||||
GP,M,15,U,LE3,T,1,2,other,at_home,home,father,1,2,0,yes,yes,no,yes,yes,yes,yes,no,4,3,2,1,1,5,2,9,10,9
|
||||
GP,F,16,U,GT3,T,4,2,services,other,course,mother,1,2,0,no,yes,no,no,yes,yes,yes,no,4,2,3,1,1,5,2,15,16,16
|
||||
GP,F,16,R,GT3,T,4,4,health,teacher,other,mother,1,2,0,no,yes,no,yes,yes,yes,no,no,2,4,4,2,3,4,6,10,11,11
|
||||
GP,F,16,U,GT3,T,1,1,services,services,course,father,4,1,0,yes,yes,no,yes,no,yes,yes,yes,5,5,5,5,5,5,6,10,8,11
|
||||
GP,F,16,U,LE3,T,1,2,other,services,reputation,father,1,2,0,yes,no,no,yes,yes,yes,yes,no,4,4,3,1,1,1,4,8,10,9
|
||||
GP,F,16,U,GT3,T,4,3,teacher,health,home,mother,1,3,0,yes,yes,yes,yes,yes,yes,yes,no,3,4,4,2,4,4,2,10,9,9
|
||||
GP,F,15,U,LE3,T,4,3,services,services,reputation,father,1,2,0,yes,no,no,yes,yes,yes,yes,yes,4,4,4,2,4,2,0,10,10,10
|
||||
GP,F,16,U,LE3,T,4,3,teacher,services,course,mother,3,2,0,no,yes,no,yes,yes,yes,yes,no,5,4,3,1,2,1,2,16,15,15
|
||||
GP,M,15,U,GT3,A,4,4,other,services,reputation,mother,1,4,0,no,yes,no,yes,no,yes,yes,yes,1,3,3,5,5,3,4,13,13,12
|
||||
GP,F,16,U,GT3,T,3,1,services,other,course,mother,1,4,0,yes,yes,yes,no,yes,yes,yes,no,4,3,3,1,2,5,4,7,7,6
|
||||
GP,F,15,R,LE3,T,2,2,health,services,reputation,mother,2,2,0,yes,yes,yes,no,yes,yes,yes,no,4,1,3,1,3,4,2,8,9,8
|
||||
GP,F,15,R,LE3,T,3,1,other,other,reputation,father,2,4,0,no,yes,no,no,no,yes,yes,no,4,4,2,2,3,3,12,16,16,16
|
||||
GP,M,16,U,GT3,T,3,1,other,other,reputation,father,2,4,0,no,yes,yes,no,yes,yes,yes,no,4,3,2,1,1,5,0,13,15,15
|
||||
GP,M,15,U,GT3,T,4,2,other,other,course,mother,1,4,0,no,no,no,no,yes,yes,yes,no,3,3,3,1,1,3,0,10,10,10
|
||||
GP,F,15,R,GT3,T,1,1,other,other,reputation,mother,1,2,2,yes,yes,no,no,no,yes,yes,yes,3,3,4,2,4,5,2,8,6,5
|
||||
GP,M,16,U,GT3,T,3,1,other,other,reputation,mother,1,1,0,no,no,no,yes,yes,yes,no,no,5,3,2,2,2,5,2,12,12,14
|
||||
GP,F,16,U,GT3,T,3,3,other,services,home,mother,1,2,0,yes,yes,yes,yes,yes,yes,yes,no,4,3,3,2,4,5,54,11,12,11
|
||||
GP,M,15,U,GT3,T,4,3,teacher,other,home,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,no,4,3,3,2,3,5,6,9,9,10
|
||||
GP,M,15,U,GT3,T,4,0,teacher,other,course,mother,2,4,0,no,no,no,yes,yes,yes,yes,no,3,4,3,1,1,1,8,11,11,10
|
||||
GP,F,16,U,GT3,T,2,2,other,other,reputation,mother,1,4,0,no,no,yes,no,yes,yes,yes,yes,5,2,3,1,3,3,0,11,11,11
|
||||
GP,M,17,U,GT3,T,2,1,other,other,home,mother,2,1,3,yes,yes,no,yes,yes,no,yes,no,4,5,1,1,1,3,2,8,8,10
|
||||
GP,F,16,U,GT3,T,3,4,at_home,other,course,mother,1,2,0,no,yes,no,no,yes,yes,yes,no,2,4,3,1,2,3,12,5,5,5
|
||||
GP,M,15,U,GT3,T,2,3,other,services,course,father,1,1,0,yes,yes,yes,yes,no,yes,yes,yes,3,2,2,1,3,3,2,10,12,12
|
||||
GP,M,15,U,GT3,T,2,3,other,other,home,mother,1,3,0,yes,no,yes,no,no,yes,yes,no,5,3,2,1,2,5,4,11,10,11
|
||||
GP,F,15,U,LE3,T,3,2,services,other,reputation,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,4,4,4,1,1,5,10,7,6,6
|
||||
GP,M,15,U,LE3,T,2,2,services,services,home,mother,2,2,0,no,no,yes,yes,yes,yes,yes,no,5,3,3,1,3,4,4,15,15,15
|
||||
GP,F,15,U,GT3,T,1,1,other,other,home,father,1,2,0,no,yes,no,yes,no,yes,yes,no,4,3,2,2,3,4,2,9,10,10
|
||||
GP,F,15,U,GT3,T,4,4,services,services,reputation,father,2,2,2,no,no,yes,no,yes,yes,yes,yes,4,4,4,2,3,5,6,7,9,8
|
||||
GP,F,16,U,LE3,T,2,2,at_home,other,course,mother,1,2,0,no,yes,no,no,yes,yes,no,no,4,3,4,1,2,2,4,8,7,6
|
||||
GP,F,15,U,GT3,T,4,2,other,other,reputation,mother,1,3,0,no,yes,no,yes,yes,yes,yes,no,5,3,3,1,3,1,4,13,14,14
|
||||
GP,M,16,U,GT3,T,2,2,services,other,reputation,father,2,2,1,no,no,yes,yes,no,yes,yes,no,4,4,2,1,1,3,12,11,10,10
|
||||
GP,M,16,U,LE3,A,4,4,teacher,health,reputation,mother,1,2,0,no,yes,no,no,yes,yes,no,no,4,1,3,3,5,5,18,8,6,7
|
||||
GP,F,16,U,GT3,T,3,3,other,other,home,mother,1,3,0,no,yes,yes,no,yes,yes,yes,yes,4,3,3,1,3,4,0,7,7,8
|
||||
GP,F,15,U,GT3,T,4,3,services,other,reputation,mother,1,1,0,no,no,yes,yes,yes,yes,yes,no,4,5,5,1,3,1,4,16,17,18
|
||||
GP,F,16,U,LE3,T,3,1,other,other,home,father,1,2,0,yes,yes,no,no,yes,yes,no,no,3,3,3,2,3,2,4,7,6,6
|
||||
GP,F,16,U,GT3,T,4,2,teacher,services,home,mother,2,2,0,no,yes,yes,yes,yes,yes,yes,no,5,3,3,1,1,1,0,11,10,10
|
||||
GP,M,15,U,LE3,T,2,2,services,health,reputation,mother,1,4,0,no,yes,no,yes,yes,yes,yes,no,4,3,4,1,1,4,6,11,13,14
|
||||
GP,F,15,R,GT3,T,1,1,at_home,other,home,mother,2,4,1,yes,yes,yes,yes,yes,yes,yes,no,3,1,2,1,1,1,2,7,10,10
|
||||
GP,M,16,R,GT3,T,4,3,services,other,reputation,mother,2,1,0,yes,yes,no,yes,no,yes,yes,no,3,3,3,1,1,4,2,11,15,15
|
||||
GP,F,16,U,GT3,T,2,1,other,other,course,mother,1,2,0,no,yes,yes,no,yes,yes,no,yes,4,3,5,1,1,5,2,8,9,10
|
||||
GP,F,16,U,GT3,T,4,4,other,other,reputation,mother,1,1,0,no,no,no,yes,no,yes,yes,no,5,3,4,1,2,1,6,11,14,14
|
||||
GP,F,16,U,GT3,T,4,3,other,at_home,course,mother,1,3,0,yes,yes,yes,no,yes,yes,yes,no,5,3,5,1,1,3,0,7,9,8
|
||||
GP,M,16,U,GT3,T,4,4,services,services,other,mother,1,1,0,yes,yes,yes,yes,yes,yes,yes,no,4,5,5,5,5,4,14,7,7,5
|
||||
GP,M,16,U,GT3,T,4,4,services,teacher,other,father,1,3,0,no,yes,no,yes,yes,yes,yes,yes,4,4,3,1,1,4,0,16,17,17
|
||||
GP,M,15,U,GT3,T,4,4,services,other,course,mother,1,1,0,no,yes,no,yes,no,yes,yes,no,5,3,3,1,1,5,4,10,13,14
|
||||
GP,F,15,U,GT3,T,3,2,services,other,home,mother,2,2,0,yes,yes,yes,no,yes,yes,yes,no,4,3,5,1,1,2,26,7,6,6
|
||||
GP,M,15,U,GT3,A,3,4,services,other,course,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,no,5,4,4,1,1,1,0,16,18,18
|
||||
GP,F,15,U,GT3,A,3,3,other,health,reputation,father,1,4,0,yes,no,no,no,yes,yes,no,no,4,3,3,1,1,4,10,10,11,11
|
||||
GP,F,15,U,GT3,T,2,2,other,other,course,mother,1,4,0,yes,yes,yes,no,yes,yes,yes,no,5,1,2,1,1,3,8,7,8,8
|
||||
GP,M,16,U,GT3,T,3,3,services,other,home,father,1,3,0,no,yes,no,yes,yes,yes,yes,no,5,3,3,1,1,5,2,16,18,18
|
||||
GP,M,15,R,GT3,T,4,4,other,other,home,father,4,4,0,no,yes,yes,yes,yes,yes,yes,yes,1,3,5,3,5,1,6,10,13,13
|
||||
GP,F,16,U,LE3,T,4,4,health,health,other,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,yes,5,4,5,1,1,4,4,14,15,16
|
||||
GP,M,15,U,LE3,A,4,4,teacher,teacher,course,mother,1,1,0,no,no,no,yes,yes,yes,yes,no,5,5,3,1,1,4,6,18,19,19
|
||||
GP,F,16,R,GT3,T,3,3,services,other,reputation,father,1,3,1,yes,yes,no,yes,yes,yes,yes,no,4,1,2,1,1,2,0,7,10,10
|
||||
GP,F,16,U,GT3,T,2,2,at_home,other,home,mother,1,2,1,yes,no,no,yes,yes,yes,yes,no,3,1,2,1,1,5,6,10,13,13
|
||||
GP,M,15,U,LE3,T,4,2,teacher,other,course,mother,1,1,0,no,no,no,no,yes,yes,yes,no,3,5,2,1,1,3,10,18,19,19
|
||||
GP,M,15,R,GT3,T,2,1,health,services,reputation,mother,1,2,0,no,no,no,yes,yes,yes,yes,yes,5,4,2,1,1,5,8,9,9,9
|
||||
GP,M,16,U,GT3,T,4,4,teacher,teacher,course,father,1,2,0,no,yes,no,yes,yes,yes,yes,no,5,4,4,1,2,5,2,15,15,16
|
||||
GP,M,15,U,GT3,T,4,4,other,teacher,reputation,father,2,2,0,no,yes,no,yes,yes,yes,no,no,4,4,3,1,1,2,2,11,13,14
|
||||
GP,M,16,U,GT3,T,3,3,other,services,home,father,2,1,0,no,no,no,yes,yes,yes,yes,no,5,4,2,1,1,5,0,13,14,13
|
||||
GP,M,17,R,GT3,T,1,3,other,other,course,father,3,2,1,no,yes,no,yes,yes,yes,yes,no,5,2,4,1,4,5,20,9,7,8
|
||||
GP,M,15,U,GT3,T,3,4,other,other,reputation,father,1,1,0,no,no,no,no,yes,yes,yes,no,3,4,3,1,2,4,6,14,13,13
|
||||
GP,F,15,U,GT3,T,1,2,at_home,services,course,mother,1,2,0,no,no,no,no,no,yes,yes,no,3,2,3,1,2,1,2,16,15,15
|
||||
GP,M,15,U,GT3,T,2,2,services,services,home,father,1,4,0,no,yes,yes,yes,yes,yes,yes,no,5,5,4,1,2,5,6,16,14,15
|
||||
GP,F,16,U,LE3,T,2,4,other,health,course,father,2,2,0,no,yes,yes,yes,yes,yes,yes,yes,4,2,2,1,2,5,2,13,13,13
|
||||
GP,M,16,U,GT3,T,4,4,health,other,course,mother,1,1,0,no,yes,no,yes,yes,yes,yes,no,3,4,4,1,4,5,18,14,11,13
|
||||
GP,F,16,U,GT3,T,2,2,other,other,home,mother,1,2,0,no,no,yes,no,yes,yes,yes,yes,5,4,4,1,1,5,0,8,7,8
|
||||
GP,M,15,U,GT3,T,3,4,services,services,home,father,1,1,0,yes,no,no,no,yes,yes,yes,no,5,5,5,3,2,5,0,13,13,12
|
||||
GP,F,15,U,LE3,A,3,4,other,other,home,mother,1,2,0,yes,no,no,yes,yes,yes,yes,yes,5,3,2,1,1,1,0,7,10,11
|
||||
GP,F,19,U,GT3,T,0,1,at_home,other,course,other,1,2,3,no,yes,no,no,no,no,no,no,3,4,2,1,1,5,2,7,8,9
|
||||
GP,M,18,R,GT3,T,2,2,services,other,reputation,mother,1,1,2,no,yes,no,yes,yes,yes,yes,no,3,3,3,1,2,4,0,7,4,0
|
||||
GP,M,16,R,GT3,T,4,4,teacher,teacher,course,mother,1,1,0,no,no,yes,yes,yes,yes,yes,no,3,5,5,2,5,4,8,18,18,18
|
||||
GP,F,15,R,GT3,T,3,4,services,teacher,course,father,2,3,2,no,yes,no,no,yes,yes,yes,yes,4,2,2,2,2,5,0,12,0,0
|
||||
GP,F,15,U,GT3,T,1,1,at_home,other,course,mother,3,1,0,no,yes,no,yes,no,yes,yes,yes,4,3,3,1,2,4,0,8,0,0
|
||||
GP,F,17,U,LE3,T,2,2,other,other,course,father,1,1,0,no,yes,no,no,yes,yes,yes,yes,3,4,4,1,3,5,12,10,13,12
|
||||
GP,F,16,U,GT3,A,3,4,services,other,course,father,1,1,0,no,no,no,no,yes,yes,yes,no,3,2,1,1,4,5,16,12,11,11
|
||||
GP,M,15,R,GT3,T,3,4,at_home,teacher,course,mother,4,2,0,no,yes,no,no,yes,yes,no,yes,5,3,3,1,1,5,0,9,0,0
|
||||
GP,F,15,U,GT3,T,4,4,services,at_home,course,mother,1,3,0,no,yes,no,yes,yes,yes,yes,yes,4,3,3,1,1,5,0,11,0,0
|
||||
GP,M,17,R,GT3,T,3,4,at_home,other,course,mother,3,2,0,no,no,no,no,yes,yes,no,no,5,4,5,2,4,5,0,10,0,0
|
||||
GP,F,16,U,GT3,A,3,3,other,other,course,other,2,1,2,no,yes,no,yes,no,yes,yes,yes,4,3,2,1,1,5,0,4,0,0
|
||||
GP,M,16,U,LE3,T,1,1,services,other,course,mother,1,2,1,no,no,no,no,yes,yes,no,yes,4,4,4,1,3,5,0,14,12,12
|
||||
GP,F,15,U,GT3,T,4,4,teacher,teacher,course,mother,2,1,0,no,no,no,yes,yes,yes,yes,no,4,3,2,1,1,5,0,16,16,15
|
||||
GP,M,15,U,GT3,T,4,3,teacher,services,course,father,2,4,0,yes,yes,no,no,yes,yes,yes,no,2,2,2,1,1,3,0,7,9,0
|
||||
GP,M,16,U,LE3,T,2,2,services,services,reputation,father,2,1,2,no,yes,no,yes,yes,yes,yes,no,2,3,3,2,2,2,8,9,9,9
|
||||
GP,F,15,U,GT3,T,4,4,teacher,services,course,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,no,4,2,2,1,1,5,2,9,11,11
|
||||
GP,F,16,U,LE3,T,1,1,at_home,at_home,course,mother,1,1,0,no,no,no,no,yes,yes,yes,no,3,4,4,3,3,1,2,14,14,13
|
||||
GP,M,17,U,GT3,T,2,1,other,other,home,mother,1,1,3,no,yes,no,no,yes,yes,yes,no,5,4,5,1,2,5,0,5,0,0
|
||||
GP,F,15,U,GT3,T,1,1,other,services,course,father,1,2,0,no,yes,yes,no,yes,yes,yes,no,4,4,2,1,2,5,0,8,11,11
|
||||
GP,F,15,U,GT3,T,3,2,health,services,home,father,1,2,3,no,yes,no,no,yes,yes,yes,no,3,3,2,1,1,3,0,6,7,0
|
||||
GP,F,15,U,GT3,T,1,2,at_home,other,course,mother,1,2,0,no,yes,yes,no,no,yes,yes,no,4,3,2,1,1,5,2,10,11,11
|
||||
GP,M,16,U,GT3,T,4,4,teacher,teacher,course,mother,1,1,0,no,yes,no,no,yes,no,yes,yes,3,3,2,2,1,5,0,7,6,0
|
||||
GP,M,15,U,LE3,A,2,1,services,other,course,mother,4,1,3,no,no,no,no,yes,yes,yes,no,4,5,5,2,5,5,0,8,9,10
|
||||
GP,M,18,U,LE3,T,1,1,other,other,course,mother,1,1,3,no,no,no,no,yes,no,yes,yes,2,3,5,2,5,4,0,6,5,0
|
||||
GP,M,16,U,LE3,T,2,1,at_home,other,course,mother,1,1,1,no,no,no,yes,yes,yes,no,yes,4,4,4,3,5,5,6,12,13,14
|
||||
GP,F,15,R,GT3,T,3,3,services,services,reputation,other,2,3,2,no,yes,yes,yes,yes,yes,yes,yes,4,2,1,2,3,3,8,10,10,10
|
||||
GP,M,19,U,GT3,T,3,2,services,at_home,home,mother,1,1,3,no,yes,no,no,yes,no,yes,yes,4,5,4,1,1,4,0,5,0,0
|
||||
GP,F,17,U,GT3,T,4,4,other,teacher,course,mother,1,1,0,yes,yes,no,no,yes,yes,no,yes,4,2,1,1,1,4,0,11,11,12
|
||||
GP,M,15,R,GT3,T,2,3,at_home,services,course,mother,1,2,0,yes,no,yes,yes,yes,yes,no,no,4,4,4,1,1,1,2,11,8,8
|
||||
GP,M,17,R,LE3,T,1,2,other,other,reputation,mother,1,1,0,no,no,no,no,yes,yes,no,no,2,2,2,3,3,5,8,16,12,13
|
||||
GP,F,18,R,GT3,T,1,1,at_home,other,course,mother,3,1,3,no,yes,no,yes,no,yes,no,no,5,2,5,1,5,4,6,9,8,10
|
||||
GP,M,16,R,GT3,T,2,2,at_home,other,course,mother,3,1,0,no,no,no,no,no,yes,no,no,4,2,2,1,2,3,2,17,15,15
|
||||
GP,M,16,U,GT3,T,3,3,other,services,course,father,1,2,1,no,yes,yes,no,yes,yes,yes,yes,4,5,5,4,4,5,4,10,12,12
|
||||
GP,M,17,R,LE3,T,2,1,at_home,other,course,mother,2,1,2,no,no,no,yes,yes,no,yes,yes,3,3,2,2,2,5,0,7,6,0
|
||||
GP,M,15,R,GT3,T,3,2,other,other,course,mother,2,2,2,yes,yes,no,no,yes,yes,yes,yes,4,4,4,1,4,3,6,5,9,7
|
||||
GP,M,16,U,LE3,T,1,2,other,other,course,mother,2,1,1,no,no,no,yes,yes,yes,no,no,4,4,4,2,4,5,0,7,0,0
|
||||
GP,M,17,U,GT3,T,1,3,at_home,services,course,father,1,1,0,no,no,no,no,yes,no,yes,no,5,3,3,1,4,2,2,10,10,10
|
||||
GP,M,17,R,LE3,T,1,1,other,services,course,mother,4,2,3,no,no,no,yes,yes,no,no,yes,5,3,5,1,5,5,0,5,8,7
|
||||
GP,M,16,U,GT3,T,3,2,services,services,course,mother,2,1,1,no,yes,no,yes,no,no,no,no,4,5,2,1,1,2,16,12,11,12
|
||||
GP,M,16,U,GT3,T,2,2,other,other,course,father,1,2,0,no,no,no,no,yes,no,yes,no,4,3,5,2,4,4,4,10,10,10
|
||||
GP,F,16,U,GT3,T,4,2,health,services,home,father,1,2,0,no,no,yes,no,yes,yes,yes,yes,4,2,3,1,1,3,0,14,15,16
|
||||
GP,F,16,U,GT3,T,2,2,other,other,home,mother,1,2,0,no,yes,yes,no,no,yes,yes,no,5,1,5,1,1,4,0,6,7,0
|
||||
GP,F,16,U,GT3,T,4,4,health,health,reputation,mother,1,2,0,no,yes,yes,no,yes,yes,yes,yes,4,4,2,1,1,3,0,14,14,14
|
||||
GP,M,16,U,GT3,T,3,4,other,other,course,father,3,1,2,no,yes,no,yes,no,yes,yes,no,3,4,5,2,4,2,0,6,5,0
|
||||
GP,M,16,U,GT3,T,1,0,other,other,reputation,mother,2,2,0,no,yes,yes,yes,yes,yes,yes,yes,4,3,2,1,1,3,2,13,15,16
|
||||
GP,M,17,U,LE3,T,4,4,teacher,other,reputation,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,no,4,4,4,1,3,5,0,13,11,10
|
||||
GP,F,16,U,GT3,T,1,3,at_home,services,home,mother,1,2,3,no,no,no,yes,no,yes,yes,yes,4,3,5,1,1,3,0,8,7,0
|
||||
GP,F,16,U,LE3,T,3,3,other,other,reputation,mother,2,2,0,no,yes,yes,yes,yes,yes,yes,no,4,4,5,1,1,4,4,10,11,9
|
||||
GP,M,17,U,LE3,T,4,3,teacher,other,course,mother,2,2,0,no,no,yes,yes,yes,yes,yes,no,4,4,4,4,4,4,4,10,9,9
|
||||
GP,F,16,U,GT3,T,2,2,services,other,reputation,mother,2,2,0,no,no,yes,yes,no,yes,yes,no,3,4,4,1,4,5,2,13,13,11
|
||||
GP,M,17,U,GT3,T,3,3,other,other,reputation,father,1,2,0,no,no,no,yes,no,yes,yes,no,4,3,4,1,4,4,4,6,5,6
|
||||
GP,M,16,R,GT3,T,4,2,teacher,services,other,mother,1,1,0,no,yes,no,yes,yes,yes,yes,yes,4,3,3,3,4,3,10,10,8,9
|
||||
GP,M,17,U,GT3,T,4,3,other,other,course,mother,1,2,0,no,yes,no,yes,yes,yes,yes,yes,5,2,3,1,1,2,4,10,10,11
|
||||
GP,M,16,U,GT3,T,4,3,teacher,other,home,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,no,3,4,3,2,3,3,10,9,8,8
|
||||
GP,M,16,U,GT3,T,3,3,services,other,home,mother,1,2,0,no,no,yes,yes,yes,yes,yes,yes,4,2,3,1,2,3,2,12,13,12
|
||||
GP,F,17,U,GT3,T,2,4,services,services,reputation,father,1,2,0,no,yes,no,yes,yes,yes,no,no,5,4,2,2,3,5,0,16,17,17
|
||||
GP,F,17,U,LE3,T,3,3,other,other,reputation,mother,1,2,0,no,yes,no,yes,yes,yes,yes,yes,5,3,3,2,3,1,56,9,9,8
|
||||
GP,F,16,U,GT3,T,3,2,other,other,reputation,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,1,2,2,1,2,1,14,12,13,12
|
||||
GP,M,17,U,GT3,T,3,3,services,services,other,mother,1,2,0,no,yes,no,yes,yes,yes,yes,yes,4,3,4,2,3,4,12,12,12,11
|
||||
GP,M,16,U,GT3,T,1,2,services,services,other,mother,1,1,0,no,yes,yes,yes,yes,yes,yes,yes,3,3,3,1,2,3,2,11,12,11
|
||||
GP,M,16,U,LE3,T,2,1,other,other,course,mother,1,2,0,no,no,yes,yes,yes,yes,yes,yes,4,2,3,1,2,5,0,15,15,15
|
||||
GP,F,17,U,GT3,A,3,3,health,other,reputation,mother,1,2,0,no,yes,no,no,no,yes,yes,yes,3,3,3,1,3,3,6,8,7,9
|
||||
GP,M,17,R,GT3,T,1,2,at_home,other,home,mother,1,2,0,no,no,no,no,yes,yes,no,no,3,1,3,1,5,3,4,8,9,10
|
||||
GP,F,16,U,GT3,T,2,3,services,services,course,mother,1,2,0,no,no,no,no,yes,yes,yes,no,4,3,3,1,1,2,10,11,12,13
|
||||
GP,F,17,U,GT3,T,1,1,at_home,services,course,mother,1,2,0,no,no,no,yes,yes,yes,yes,no,5,3,3,1,1,3,0,8,8,9
|
||||
GP,M,17,U,GT3,T,1,2,at_home,services,other,other,2,2,0,no,no,yes,yes,no,yes,yes,no,4,4,4,4,5,5,12,7,8,8
|
||||
GP,M,16,R,GT3,T,3,3,services,services,reputation,mother,1,1,0,no,yes,no,yes,yes,yes,yes,no,4,3,2,3,4,5,8,8,9,10
|
||||
GP,M,16,U,GT3,T,2,3,other,other,home,father,2,1,0,no,no,no,no,yes,yes,yes,no,5,3,3,1,1,3,0,13,14,14
|
||||
GP,F,17,U,LE3,T,2,4,services,services,course,father,1,2,0,no,no,no,yes,yes,yes,yes,yes,4,3,2,1,1,5,0,14,15,15
|
||||
GP,M,17,U,GT3,T,4,4,services,teacher,home,mother,1,1,0,no,no,no,no,yes,yes,yes,no,5,2,3,1,2,5,4,17,15,16
|
||||
GP,M,16,R,LE3,T,3,3,teacher,other,home,father,3,1,0,no,yes,yes,yes,yes,yes,yes,no,3,3,4,3,5,3,8,9,9,10
|
||||
GP,F,17,U,GT3,T,4,4,services,teacher,home,mother,2,1,1,no,yes,no,no,yes,yes,yes,no,4,2,4,2,3,2,24,18,18,18
|
||||
GP,F,16,U,LE3,T,4,4,teacher,teacher,reputation,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,4,5,2,1,2,3,0,9,9,10
|
||||
GP,F,16,U,GT3,T,4,3,health,other,home,mother,1,2,0,no,yes,no,yes,yes,yes,yes,no,4,3,5,1,5,2,2,16,16,16
|
||||
GP,F,16,U,GT3,T,2,3,other,other,reputation,mother,1,2,0,yes,yes,yes,yes,yes,yes,no,no,4,4,3,1,3,4,6,8,10,10
|
||||
GP,F,17,U,GT3,T,1,1,other,other,course,mother,1,2,0,no,yes,yes,no,no,yes,no,no,4,4,4,1,3,1,4,9,9,10
|
||||
GP,F,17,R,GT3,T,2,2,other,other,reputation,mother,1,1,0,no,yes,no,no,yes,yes,yes,no,5,3,2,1,2,3,18,7,6,6
|
||||
GP,F,16,R,GT3,T,2,2,services,services,reputation,mother,2,4,0,no,yes,yes,yes,no,yes,yes,no,5,3,5,1,1,5,6,10,10,11
|
||||
GP,F,17,U,GT3,T,3,4,at_home,services,home,mother,1,3,1,no,yes,yes,no,yes,yes,yes,yes,4,4,3,3,4,5,28,10,9,9
|
||||
GP,F,16,U,GT3,A,3,1,services,other,course,mother,1,2,3,no,yes,yes,no,yes,yes,yes,no,2,3,3,2,2,4,5,7,7,7
|
||||
GP,F,16,U,GT3,T,4,3,teacher,other,other,mother,1,2,0,no,no,yes,yes,yes,yes,yes,yes,1,3,2,1,1,1,10,11,12,13
|
||||
GP,F,16,U,GT3,T,1,1,at_home,other,home,mother,2,1,0,no,yes,yes,no,yes,yes,no,no,4,3,2,1,4,5,6,9,9,10
|
||||
GP,F,17,R,GT3,T,4,3,teacher,other,reputation,mother,2,3,0,no,yes,yes,yes,yes,yes,yes,yes,4,4,2,1,1,4,6,7,7,7
|
||||
GP,F,19,U,GT3,T,3,3,other,other,reputation,other,1,4,0,no,yes,yes,yes,yes,yes,yes,no,4,3,3,1,2,3,10,8,8,8
|
||||
GP,M,17,U,LE3,T,4,4,services,other,home,mother,1,2,0,no,yes,yes,no,yes,yes,yes,yes,5,3,5,4,5,3,13,12,12,13
|
||||
GP,F,16,U,GT3,A,2,2,other,other,reputation,mother,1,2,0,yes,yes,yes,no,yes,yes,yes,no,3,3,4,1,1,4,0,12,13,14
|
||||
GP,M,18,U,GT3,T,2,2,services,other,home,mother,1,2,1,no,yes,yes,yes,yes,yes,yes,no,4,4,4,2,4,5,15,6,7,8
|
||||
GP,F,17,R,LE3,T,4,4,services,other,other,mother,1,1,0,no,yes,yes,no,yes,yes,no,no,5,2,1,1,2,3,12,8,10,10
|
||||
GP,F,17,U,LE3,T,3,2,other,other,reputation,mother,2,2,0,no,no,yes,no,yes,yes,yes,no,4,4,4,1,3,1,2,14,15,15
|
||||
GP,F,17,U,GT3,T,4,3,other,other,reputation,mother,1,2,2,no,no,yes,no,yes,yes,yes,yes,3,4,5,2,4,1,22,6,6,4
|
||||
GP,M,18,U,LE3,T,3,3,services,health,home,father,1,2,1,no,yes,yes,no,yes,yes,yes,no,3,2,4,2,4,4,13,6,6,8
|
||||
GP,F,17,U,GT3,T,2,3,at_home,other,home,father,2,1,0,no,yes,yes,no,yes,yes,no,no,3,3,3,1,4,3,3,7,7,8
|
||||
GP,F,17,U,GT3,T,2,2,at_home,at_home,course,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,no,4,3,3,1,1,4,4,9,10,10
|
||||
GP,F,17,R,GT3,T,2,1,at_home,services,reputation,mother,2,2,0,no,yes,no,yes,yes,yes,yes,no,4,2,5,1,2,5,2,6,6,6
|
||||
GP,F,17,U,GT3,T,1,1,at_home,other,reputation,mother,1,3,1,no,yes,no,yes,yes,yes,no,yes,4,3,4,1,1,5,0,6,5,0
|
||||
GP,F,16,U,GT3,T,2,3,services,teacher,other,mother,1,2,0,yes,no,no,no,yes,yes,yes,no,2,3,1,1,1,3,2,16,16,17
|
||||
GP,M,18,U,GT3,T,2,2,other,other,home,mother,2,2,0,no,yes,yes,no,yes,yes,yes,no,3,3,3,5,5,4,0,12,13,13
|
||||
GP,F,16,U,GT3,T,4,4,teacher,services,home,mother,1,3,0,no,yes,no,yes,no,yes,yes,no,5,3,2,1,1,5,0,13,13,14
|
||||
GP,F,18,R,GT3,T,3,1,other,other,reputation,mother,1,2,1,no,no,no,yes,yes,yes,yes,yes,5,3,3,1,1,4,16,9,8,7
|
||||
GP,F,17,U,GT3,T,3,2,other,other,course,mother,1,2,0,no,no,no,yes,no,yes,yes,no,5,3,4,1,3,3,10,16,15,15
|
||||
GP,M,17,U,LE3,T,2,3,services,services,reputation,father,1,2,0,no,yes,yes,no,no,yes,yes,no,5,3,3,1,3,3,2,12,11,12
|
||||
GP,M,18,U,LE3,T,2,1,at_home,other,course,mother,4,2,0,yes,yes,yes,yes,yes,yes,yes,yes,4,3,2,4,5,3,14,10,8,9
|
||||
GP,F,17,U,GT3,A,2,1,other,other,course,mother,2,3,0,no,no,no,yes,yes,yes,yes,yes,3,2,3,1,2,3,10,12,10,12
|
||||
GP,F,17,U,LE3,T,4,3,health,other,reputation,father,1,2,0,no,no,no,yes,yes,yes,yes,yes,3,2,3,1,2,3,14,13,13,14
|
||||
GP,M,17,R,GT3,T,2,2,other,other,course,father,2,2,0,no,yes,yes,yes,yes,yes,yes,no,4,5,2,1,1,1,4,11,11,11
|
||||
GP,M,17,U,GT3,T,4,4,teacher,teacher,reputation,mother,1,2,0,yes,yes,no,yes,yes,yes,yes,yes,4,5,5,1,3,2,14,11,9,9
|
||||
GP,M,16,U,GT3,T,4,4,health,other,reputation,father,1,2,0,no,yes,yes,yes,yes,yes,yes,no,4,2,4,2,4,1,2,14,13,13
|
||||
GP,M,16,U,LE3,T,1,1,other,other,home,mother,2,2,0,no,yes,yes,no,yes,yes,yes,no,3,4,2,1,1,5,18,9,7,6
|
||||
GP,M,16,U,GT3,T,3,2,at_home,other,reputation,mother,2,3,0,no,no,no,yes,yes,yes,yes,yes,5,3,3,1,3,2,10,11,9,10
|
||||
GP,M,17,U,LE3,T,2,2,other,other,home,father,1,2,0,no,no,yes,yes,no,yes,yes,yes,4,4,2,5,5,4,4,14,13,13
|
||||
GP,F,16,U,GT3,T,2,1,other,other,home,mother,1,1,0,no,no,no,no,yes,yes,yes,yes,4,5,2,1,1,5,20,13,12,12
|
||||
GP,F,17,R,GT3,T,2,1,at_home,services,course,mother,3,2,0,no,no,no,yes,yes,yes,no,no,2,1,1,1,1,3,2,13,11,11
|
||||
GP,M,18,U,GT3,T,2,2,other,services,reputation,father,1,2,1,no,no,no,no,yes,no,yes,no,5,5,4,3,5,2,0,7,7,0
|
||||
GP,M,17,U,LE3,T,4,3,health,other,course,mother,2,2,0,no,no,no,yes,yes,yes,yes,yes,2,5,5,1,4,5,14,12,12,12
|
||||
GP,M,17,R,LE3,A,4,4,teacher,other,course,mother,2,2,0,no,yes,yes,no,yes,yes,yes,no,3,3,3,2,3,4,2,10,11,12
|
||||
GP,M,16,U,LE3,T,4,3,teacher,other,course,mother,1,1,0,no,no,no,yes,no,yes,yes,no,5,4,5,1,1,3,0,6,0,0
|
||||
GP,M,16,U,GT3,T,4,4,services,services,course,mother,1,1,0,no,no,no,yes,yes,yes,yes,no,5,3,2,1,2,5,0,13,12,12
|
||||
GP,F,18,U,GT3,T,2,1,other,other,course,other,2,3,0,no,yes,yes,no,no,yes,yes,yes,4,4,4,1,1,3,0,7,0,0
|
||||
GP,M,16,U,GT3,T,2,1,other,other,course,mother,3,1,0,no,no,no,no,yes,yes,yes,no,4,3,3,1,1,4,6,18,18,18
|
||||
GP,M,17,U,GT3,T,2,3,other,other,course,father,2,1,0,no,no,no,no,yes,yes,yes,no,5,2,2,1,1,2,4,12,12,13
|
||||
GP,M,22,U,GT3,T,3,1,services,services,other,mother,1,1,3,no,no,no,no,no,no,yes,yes,5,4,5,5,5,1,16,6,8,8
|
||||
GP,M,18,R,LE3,T,3,3,other,services,course,mother,1,2,1,no,yes,no,no,yes,yes,yes,yes,4,3,3,1,3,5,8,3,5,5
|
||||
GP,M,16,U,GT3,T,0,2,other,other,other,mother,1,1,0,no,no,yes,no,no,yes,yes,no,4,3,2,2,4,5,0,13,15,15
|
||||
GP,M,18,U,GT3,T,3,2,services,other,course,mother,2,1,1,no,no,no,no,yes,no,yes,no,4,4,5,2,4,5,0,6,8,8
|
||||
GP,M,16,U,GT3,T,3,3,at_home,other,reputation,other,3,2,0,yes,yes,no,no,no,yes,yes,no,5,3,3,1,3,2,6,7,10,10
|
||||
GP,M,18,U,GT3,T,2,1,services,services,other,mother,1,1,1,no,no,no,no,no,no,yes,no,3,2,5,2,5,5,4,6,9,8
|
||||
GP,M,16,R,GT3,T,2,1,other,other,course,mother,2,1,0,no,no,no,yes,no,yes,no,no,3,3,2,1,3,3,0,8,9,8
|
||||
GP,M,17,R,GT3,T,2,1,other,other,course,mother,1,1,0,no,no,no,no,no,yes,yes,no,4,4,2,2,4,5,0,8,12,12
|
||||
GP,M,17,U,LE3,T,1,1,health,other,course,mother,2,1,1,no,yes,no,yes,yes,yes,yes,no,4,4,4,1,2,5,2,7,9,8
|
||||
GP,F,17,U,LE3,T,4,2,teacher,services,reputation,mother,1,4,0,no,yes,yes,yes,yes,yes,yes,no,4,2,3,1,1,4,6,14,12,13
|
||||
GP,M,19,U,LE3,A,4,3,services,at_home,reputation,mother,1,2,0,no,yes,no,no,yes,yes,yes,no,4,3,1,1,1,1,12,11,11,11
|
||||
GP,M,18,U,GT3,T,2,1,other,other,home,mother,1,2,0,no,no,no,yes,yes,yes,yes,no,5,2,4,1,2,4,8,15,14,14
|
||||
GP,F,17,U,LE3,T,2,2,services,services,course,father,1,4,0,no,no,yes,yes,yes,yes,yes,yes,3,4,1,1,1,2,0,10,9,0
|
||||
GP,F,18,U,GT3,T,4,3,services,other,home,father,1,2,0,no,yes,yes,no,yes,yes,yes,yes,3,1,2,1,3,2,21,17,18,18
|
||||
GP,M,18,U,GT3,T,4,3,teacher,other,course,mother,1,2,0,no,yes,yes,no,no,yes,yes,no,4,3,2,1,1,3,2,8,8,8
|
||||
GP,M,18,R,GT3,T,3,2,other,other,course,mother,1,3,0,no,no,no,yes,no,yes,no,no,5,3,2,1,1,3,1,13,12,12
|
||||
GP,F,17,U,GT3,T,3,3,other,other,home,mother,1,3,0,no,no,no,yes,no,yes,no,no,3,2,3,1,1,4,4,10,9,9
|
||||
GP,F,18,U,GT3,T,2,2,at_home,services,home,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,yes,4,3,3,1,1,3,0,9,10,0
|
||||
GP,M,18,R,LE3,A,3,4,other,other,reputation,mother,2,2,0,no,yes,yes,yes,yes,yes,yes,no,4,2,5,3,4,1,13,17,17,17
|
||||
GP,M,17,U,GT3,T,3,1,services,other,other,mother,1,2,0,no,no,yes,yes,yes,yes,yes,yes,5,4,4,3,4,5,2,9,9,10
|
||||
GP,F,18,R,GT3,T,4,4,teacher,other,reputation,mother,2,2,0,no,no,yes,yes,yes,yes,yes,no,4,3,4,2,2,4,8,12,10,11
|
||||
GP,M,18,U,GT3,T,4,2,health,other,reputation,father,1,2,0,no,yes,yes,yes,yes,yes,yes,yes,5,4,5,1,3,5,10,10,9,10
|
||||
GP,F,18,R,GT3,T,2,1,other,other,reputation,mother,2,2,0,no,yes,no,no,yes,no,yes,yes,4,3,5,1,2,3,0,6,0,0
|
||||
GP,F,19,U,GT3,T,3,3,other,services,home,other,1,2,2,no,yes,yes,yes,yes,yes,yes,no,4,3,5,3,3,5,15,9,9,9
|
||||
GP,F,18,U,GT3,T,2,3,other,services,reputation,father,1,4,0,no,yes,yes,yes,yes,yes,yes,yes,4,5,5,1,3,2,4,15,14,14
|
||||
GP,F,18,U,LE3,T,1,1,other,other,home,mother,2,2,0,no,yes,yes,no,no,yes,no,no,4,4,3,1,1,3,2,11,11,11
|
||||
GP,M,17,R,GT3,T,1,2,at_home,at_home,home,mother,1,2,0,no,yes,yes,yes,no,yes,no,yes,3,5,2,2,2,1,2,15,14,14
|
||||
GP,F,17,U,GT3,T,2,4,at_home,health,reputation,mother,2,2,0,no,yes,yes,no,yes,yes,yes,yes,4,3,3,1,1,1,2,10,10,10
|
||||
GP,F,17,U,LE3,T,2,2,services,other,course,mother,2,2,0,yes,yes,yes,no,yes,yes,yes,yes,4,4,4,2,3,5,6,12,12,12
|
||||
GP,F,18,R,GT3,A,3,2,other,services,home,mother,2,2,0,no,no,no,no,no,no,yes,yes,4,1,1,1,1,5,75,10,9,9
|
||||
GP,M,18,U,GT3,T,4,4,teacher,services,home,mother,2,1,0,no,no,yes,yes,yes,yes,yes,no,3,2,4,1,4,3,22,9,9,9
|
||||
GP,F,18,U,GT3,T,4,4,health,health,reputation,father,1,2,1,yes,yes,no,yes,yes,yes,yes,yes,2,4,4,1,1,4,15,9,8,8
|
||||
GP,M,18,U,LE3,T,4,3,teacher,services,course,mother,2,1,0,no,no,yes,yes,yes,yes,yes,no,4,2,3,1,2,1,8,10,11,10
|
||||
GP,M,17,U,LE3,A,4,1,services,other,home,mother,2,1,0,no,no,yes,yes,yes,yes,yes,yes,4,5,4,2,4,5,30,8,8,8
|
||||
GP,M,17,U,LE3,A,3,2,teacher,services,home,mother,1,1,1,no,no,no,no,yes,yes,yes,no,4,4,4,3,4,3,19,11,9,10
|
||||
GP,F,18,R,LE3,T,1,1,at_home,other,reputation,mother,2,4,0,no,yes,yes,yes,yes,yes,no,no,5,2,2,1,1,3,1,12,12,12
|
||||
GP,F,18,U,GT3,T,1,1,other,other,home,mother,2,2,0,yes,no,no,yes,yes,yes,yes,no,5,4,4,1,1,4,4,8,9,10
|
||||
GP,F,17,U,GT3,T,2,2,other,other,course,mother,1,2,0,no,yes,no,no,no,yes,yes,no,5,4,5,1,2,5,4,10,9,11
|
||||
GP,M,17,U,GT3,T,1,1,other,other,reputation,father,1,2,0,no,no,yes,no,no,yes,yes,no,4,3,3,1,2,4,2,12,10,11
|
||||
GP,F,18,U,GT3,T,2,2,at_home,at_home,other,mother,1,3,0,no,yes,yes,no,yes,yes,yes,no,4,3,3,1,2,2,5,18,18,19
|
||||
GP,F,17,U,GT3,T,1,1,services,teacher,reputation,mother,1,3,0,no,yes,yes,no,yes,yes,yes,no,4,3,3,1,1,3,6,13,12,12
|
||||
GP,M,18,U,GT3,T,2,1,services,services,reputation,mother,1,3,0,no,no,yes,yes,yes,yes,yes,no,4,2,4,1,3,2,6,15,14,14
|
||||
GP,M,18,U,LE3,A,4,4,teacher,teacher,reputation,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,no,5,4,3,1,1,2,9,15,13,15
|
||||
GP,M,18,U,GT3,T,4,2,teacher,other,home,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,yes,4,3,2,1,4,5,11,12,11,11
|
||||
GP,F,17,U,GT3,T,4,3,health,services,reputation,mother,1,3,0,no,yes,yes,no,yes,yes,yes,no,4,2,2,1,2,3,0,15,15,15
|
||||
GP,F,18,U,LE3,T,2,1,services,at_home,reputation,mother,1,2,1,no,no,no,no,yes,yes,yes,yes,5,4,3,1,1,5,12,12,12,13
|
||||
GP,F,17,R,LE3,T,3,1,services,other,reputation,mother,2,4,0,no,yes,yes,no,yes,yes,no,no,3,1,2,1,1,3,6,18,18,18
|
||||
GP,M,18,R,LE3,T,3,2,services,other,reputation,mother,2,3,0,no,yes,yes,yes,yes,yes,yes,no,5,4,2,1,1,4,8,14,13,14
|
||||
GP,M,17,U,GT3,T,3,3,health,other,home,mother,1,1,0,no,yes,yes,no,yes,yes,yes,no,4,4,3,1,3,5,4,14,12,11
|
||||
GP,F,19,U,GT3,T,4,4,health,other,reputation,other,2,2,0,no,yes,yes,yes,yes,yes,yes,no,2,3,4,2,3,2,0,10,9,0
|
||||
GP,F,18,U,LE3,T,4,3,other,other,home,other,2,2,0,no,yes,yes,no,yes,yes,yes,yes,4,4,5,1,2,2,10,10,8,8
|
||||
GP,F,18,U,GT3,T,4,3,other,other,reputation,father,1,4,0,no,yes,yes,no,yes,yes,yes,no,4,3,3,1,1,3,0,14,13,14
|
||||
GP,M,18,U,LE3,T,4,4,teacher,teacher,home,mother,1,1,0,no,yes,yes,no,yes,yes,yes,yes,1,4,2,2,2,1,5,16,15,16
|
||||
GP,F,18,U,LE3,A,4,4,health,other,home,mother,1,2,0,no,yes,no,no,yes,yes,yes,yes,4,2,4,1,1,4,14,12,10,11
|
||||
GP,M,17,U,LE3,T,4,4,other,teacher,home,father,2,1,0,no,no,yes,no,yes,yes,yes,no,4,1,1,2,2,5,0,11,11,10
|
||||
GP,F,17,U,GT3,T,4,2,other,other,reputation,mother,2,3,0,no,yes,yes,no,yes,yes,yes,no,4,3,3,1,1,3,0,15,12,14
|
||||
GP,F,17,U,GT3,T,3,2,health,health,reputation,father,1,4,0,no,yes,yes,yes,no,yes,yes,no,5,2,2,1,2,5,0,17,17,18
|
||||
GP,M,19,U,GT3,T,3,3,other,other,home,other,1,2,1,no,yes,no,yes,yes,yes,yes,yes,4,4,4,1,1,3,20,15,14,13
|
||||
GP,F,18,U,GT3,T,2,4,services,at_home,reputation,other,1,2,1,no,yes,yes,yes,yes,yes,yes,no,4,4,3,1,1,3,8,14,12,12
|
||||
GP,M,20,U,GT3,A,3,2,services,other,course,other,1,1,0,no,no,no,yes,yes,yes,no,no,5,5,3,1,1,5,0,17,18,18
|
||||
GP,M,19,U,GT3,T,4,4,teacher,services,reputation,other,2,1,1,no,yes,yes,no,yes,yes,yes,yes,4,3,4,1,1,4,38,8,9,8
|
||||
GP,M,19,R,GT3,T,3,3,other,services,reputation,father,1,2,1,no,no,no,yes,yes,yes,no,yes,4,5,3,1,2,5,0,15,12,12
|
||||
GP,F,19,U,LE3,T,1,1,at_home,other,reputation,other,1,2,1,yes,yes,no,yes,no,yes,yes,no,4,4,3,1,3,3,18,12,10,10
|
||||
GP,F,19,U,LE3,T,1,2,services,services,home,other,1,2,1,no,no,no,yes,no,yes,no,yes,4,2,4,2,2,3,0,9,9,0
|
||||
GP,F,19,U,GT3,T,2,1,at_home,other,other,other,3,2,0,no,yes,no,no,yes,no,yes,yes,3,4,1,1,1,2,20,14,12,13
|
||||
GP,M,19,U,GT3,T,1,2,other,services,course,other,1,2,1,no,no,no,no,no,yes,yes,no,4,5,2,2,2,4,3,13,11,11
|
||||
GP,F,19,U,LE3,T,3,2,services,other,reputation,other,2,2,1,no,yes,yes,no,no,yes,yes,yes,4,2,2,1,2,1,22,13,10,11
|
||||
GP,F,19,U,GT3,T,1,1,at_home,health,home,other,1,3,2,no,no,no,no,no,yes,yes,yes,4,1,2,1,1,3,14,15,13,13
|
||||
GP,F,19,R,GT3,T,2,3,other,other,reputation,other,1,3,1,no,no,no,no,yes,yes,yes,yes,4,1,2,1,1,3,40,13,11,11
|
||||
GP,F,18,U,GT3,T,2,1,services,other,course,mother,2,2,0,no,yes,yes,yes,yes,yes,yes,no,5,3,3,1,2,1,0,8,8,0
|
||||
GP,F,18,U,GT3,T,4,3,other,other,course,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,yes,4,3,4,1,1,5,9,9,10,9
|
||||
GP,F,17,R,GT3,T,3,4,at_home,services,course,father,1,3,0,no,yes,yes,yes,no,yes,yes,no,4,3,4,2,5,5,0,11,11,10
|
||||
GP,F,18,U,GT3,T,4,4,teacher,other,course,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,4,4,4,3,3,5,2,11,11,11
|
||||
GP,F,17,U,GT3,A,4,3,services,services,course,mother,1,2,0,no,yes,yes,no,yes,yes,yes,yes,5,2,2,1,2,5,23,13,13,13
|
||||
GP,F,17,U,GT3,T,2,2,other,other,course,mother,1,2,0,no,yes,no,no,yes,yes,no,yes,4,2,2,1,1,3,12,11,9,9
|
||||
GP,F,17,R,LE3,T,2,2,services,services,course,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,no,3,3,2,2,2,3,3,11,11,11
|
||||
GP,F,17,U,GT3,T,3,1,services,services,course,father,1,3,0,no,yes,no,no,no,yes,yes,no,3,4,3,2,3,5,1,12,14,15
|
||||
GP,F,17,U,LE3,T,0,2,at_home,at_home,home,father,2,3,0,no,no,no,no,yes,yes,yes,no,3,3,3,2,3,2,0,16,15,15
|
||||
GP,M,18,U,GT3,T,4,4,other,other,course,mother,1,3,0,no,no,no,yes,yes,yes,yes,no,4,3,3,2,2,3,3,9,12,11
|
||||
GP,M,17,U,GT3,T,3,3,other,services,reputation,mother,1,1,0,no,no,no,yes,no,yes,yes,no,4,3,5,3,5,5,3,14,15,16
|
||||
GP,M,17,R,GT3,T,2,2,services,other,course,mother,4,1,0,no,yes,no,no,yes,yes,yes,no,4,4,5,5,5,4,8,11,10,10
|
||||
GP,F,17,U,GT3,T,4,4,teacher,services,course,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,no,5,4,4,1,3,4,7,10,9,9
|
||||
GP,F,17,U,GT3,T,4,4,teacher,teacher,course,mother,2,3,0,no,yes,yes,no,no,yes,yes,yes,4,3,3,1,2,4,4,14,14,14
|
||||
GP,M,18,U,LE3,T,2,2,other,other,course,mother,1,4,0,no,yes,no,yes,yes,yes,yes,no,4,5,5,2,4,5,2,9,8,8
|
||||
GP,F,17,R,GT3,T,2,4,at_home,other,course,father,1,3,0,no,yes,no,no,yes,yes,yes,yes,4,4,3,1,1,5,7,12,14,14
|
||||
GP,F,18,U,GT3,T,3,3,services,services,home,mother,1,2,0,no,no,no,yes,yes,yes,yes,no,5,3,4,1,1,4,0,7,0,0
|
||||
GP,F,18,U,LE3,T,2,2,other,other,home,other,1,2,0,no,no,no,yes,no,yes,yes,yes,4,3,3,1,1,2,0,8,8,0
|
||||
GP,F,18,R,GT3,T,2,2,at_home,other,course,mother,2,4,0,no,no,no,yes,yes,yes,no,no,4,4,4,1,1,4,0,10,9,0
|
||||
GP,F,17,U,GT3,T,3,4,services,other,course,mother,1,3,0,no,no,no,no,yes,yes,yes,no,4,4,5,1,3,5,16,16,15,15
|
||||
GP,F,19,R,GT3,A,3,1,services,at_home,home,other,1,3,1,no,no,yes,no,yes,yes,no,no,5,4,3,1,2,5,12,14,13,13
|
||||
GP,F,17,U,GT3,T,3,2,other,other,home,mother,1,2,0,no,yes,yes,no,yes,yes,yes,yes,4,3,2,2,3,2,0,7,8,0
|
||||
GP,F,18,U,LE3,T,3,3,services,services,home,mother,1,4,0,no,yes,no,no,yes,yes,yes,no,5,3,3,1,1,1,7,16,15,17
|
||||
GP,F,17,R,GT3,A,3,2,other,other,home,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,4,3,3,2,3,2,4,9,10,10
|
||||
GP,F,19,U,GT3,T,2,1,services,services,home,other,1,3,1,no,no,yes,yes,yes,yes,yes,yes,4,3,4,1,3,3,4,11,12,11
|
||||
GP,M,18,U,GT3,T,4,4,teacher,services,home,father,1,2,1,no,yes,no,yes,yes,yes,yes,no,4,3,3,2,2,2,0,10,10,0
|
||||
GP,M,18,U,LE3,T,3,4,services,other,home,mother,1,2,0,no,no,no,yes,yes,yes,yes,yes,4,3,3,1,3,5,11,16,15,15
|
||||
GP,F,17,U,GT3,A,2,2,at_home,at_home,home,father,1,2,1,no,yes,no,no,yes,yes,yes,yes,3,3,1,1,2,4,0,9,8,0
|
||||
GP,F,18,U,GT3,T,2,3,at_home,other,course,mother,1,3,0,no,yes,no,no,yes,yes,yes,no,4,3,3,1,2,3,4,11,10,10
|
||||
GP,F,18,U,GT3,T,3,2,other,services,other,mother,1,3,0,no,no,no,no,yes,yes,yes,yes,5,4,3,2,3,1,7,13,13,14
|
||||
GP,M,18,R,GT3,T,4,3,teacher,services,course,mother,1,3,0,no,no,no,no,yes,yes,yes,yes,5,3,2,1,2,4,9,16,15,16
|
||||
GP,M,18,U,GT3,T,4,3,teacher,other,course,mother,1,3,0,no,yes,yes,no,yes,yes,yes,yes,5,4,5,2,3,5,0,10,10,9
|
||||
GP,F,17,U,GT3,T,4,3,health,other,reputation,mother,1,3,0,no,yes,yes,yes,yes,yes,yes,yes,4,4,3,1,3,4,0,13,15,15
|
||||
MS,M,18,R,GT3,T,3,2,other,other,course,mother,2,1,1,no,yes,no,no,no,yes,yes,no,2,5,5,5,5,5,10,11,13,13
|
||||
MS,M,19,R,GT3,T,1,1,other,services,home,other,3,2,3,no,no,no,no,yes,yes,yes,no,5,4,4,3,3,2,8,8,7,8
|
||||
MS,M,17,U,GT3,T,3,3,health,other,course,mother,2,2,0,no,yes,yes,no,yes,yes,yes,no,4,5,4,2,3,3,2,13,13,13
|
||||
MS,M,18,U,LE3,T,1,3,at_home,services,course,mother,1,1,1,no,no,no,no,yes,no,yes,yes,4,3,3,2,3,3,7,8,7,8
|
||||
MS,M,19,R,GT3,T,1,1,other,other,home,other,3,1,1,no,yes,no,no,yes,yes,yes,no,4,4,4,3,3,5,4,8,8,8
|
||||
MS,M,17,R,GT3,T,4,3,services,other,home,mother,2,2,0,no,yes,yes,yes,no,yes,yes,yes,4,5,5,1,3,2,4,13,11,11
|
||||
MS,F,18,U,GT3,T,3,3,services,services,course,father,1,2,0,no,yes,no,no,yes,yes,no,yes,5,3,4,1,1,5,0,10,9,9
|
||||
MS,F,17,R,GT3,T,4,4,teacher,services,other,father,2,2,0,no,yes,yes,yes,yes,yes,yes,no,4,3,3,1,2,5,4,12,13,13
|
||||
MS,F,17,U,LE3,A,3,2,services,other,reputation,mother,2,2,0,no,no,no,no,yes,yes,no,yes,1,2,3,1,2,5,2,12,12,11
|
||||
MS,M,18,U,LE3,T,1,1,other,services,home,father,2,1,0,no,no,no,no,no,yes,yes,yes,3,3,2,1,2,3,4,10,10,10
|
||||
MS,F,18,U,LE3,T,1,1,at_home,services,course,father,2,3,0,no,no,no,no,yes,yes,yes,no,5,3,2,1,1,4,0,18,16,16
|
||||
MS,F,18,R,LE3,A,1,4,at_home,other,course,mother,3,2,0,no,no,no,no,yes,yes,no,yes,4,3,4,1,4,5,0,13,13,13
|
||||
MS,M,18,R,LE3,T,1,1,at_home,other,other,mother,2,2,1,no,no,no,yes,no,no,no,no,4,4,3,2,3,5,2,13,12,12
|
||||
MS,F,18,U,GT3,T,3,3,services,services,other,mother,2,2,0,no,yes,no,no,yes,yes,yes,yes,4,3,2,1,3,3,0,11,11,10
|
||||
MS,F,17,U,LE3,T,4,4,at_home,at_home,course,mother,1,2,0,no,yes,yes,yes,yes,yes,yes,yes,2,3,4,1,1,1,0,16,15,15
|
||||
MS,F,17,R,GT3,T,1,2,other,services,course,father,2,2,0,no,no,no,no,no,yes,no,no,3,2,2,1,2,3,0,12,11,12
|
||||
MS,M,18,R,GT3,T,1,3,at_home,other,course,mother,2,2,0,no,yes,yes,no,yes,yes,no,no,3,3,4,2,4,3,4,10,10,10
|
||||
MS,M,18,U,LE3,T,4,4,teacher,services,other,mother,2,3,0,no,no,yes,no,yes,yes,yes,yes,4,2,2,2,2,5,0,13,13,13
|
||||
MS,F,17,R,GT3,T,1,1,other,services,reputation,mother,3,1,1,no,yes,yes,no,yes,yes,yes,yes,5,2,1,1,2,1,0,7,6,0
|
||||
MS,F,18,U,GT3,T,2,3,at_home,services,course,father,2,1,0,no,yes,yes,no,yes,yes,yes,yes,5,2,3,1,2,4,0,11,10,10
|
||||
MS,F,18,R,GT3,T,4,4,other,teacher,other,father,3,2,0,no,yes,yes,no,no,yes,yes,yes,3,2,2,4,2,5,10,14,12,11
|
||||
MS,F,19,U,LE3,T,3,2,services,services,home,other,2,2,2,no,no,no,yes,yes,yes,no,yes,3,2,2,1,1,3,4,7,7,9
|
||||
MS,M,18,R,LE3,T,1,2,at_home,services,other,father,3,1,0,no,yes,yes,yes,yes,no,yes,yes,4,3,3,2,3,3,3,14,12,12
|
||||
MS,F,17,U,GT3,T,2,2,other,at_home,home,mother,1,3,0,no,no,no,yes,yes,yes,no,yes,3,4,3,1,1,3,8,13,11,11
|
||||
MS,F,17,R,GT3,T,1,2,other,other,course,mother,1,1,0,no,no,no,yes,yes,yes,yes,no,3,5,5,1,3,1,14,6,5,5
|
||||
MS,F,18,R,LE3,T,4,4,other,other,reputation,mother,2,3,0,no,no,no,no,yes,yes,yes,no,5,4,4,1,1,1,0,19,18,19
|
||||
MS,F,18,R,GT3,T,1,1,other,other,home,mother,4,3,0,no,no,no,no,yes,yes,yes,no,4,3,2,1,2,4,2,8,8,10
|
||||
MS,F,20,U,GT3,T,4,2,health,other,course,other,2,3,2,no,yes,yes,no,no,yes,yes,yes,5,4,3,1,1,3,4,15,14,15
|
||||
MS,F,18,R,LE3,T,4,4,teacher,services,course,mother,1,2,0,no,no,yes,yes,yes,yes,yes,no,5,4,3,3,4,2,4,8,9,10
|
||||
MS,F,18,U,GT3,T,3,3,other,other,home,mother,1,2,0,no,no,yes,no,yes,yes,yes,yes,4,1,3,1,2,1,0,15,15,15
|
||||
MS,F,17,R,GT3,T,3,1,at_home,other,reputation,mother,1,2,0,no,yes,yes,yes,no,yes,yes,no,4,5,4,2,3,1,17,10,10,10
|
||||
MS,M,18,U,GT3,T,4,4,teacher,teacher,home,father,1,2,0,no,no,yes,yes,no,yes,yes,no,3,2,4,1,4,2,4,15,14,14
|
||||
MS,M,18,R,GT3,T,2,1,other,other,other,mother,2,1,0,no,no,no,yes,no,yes,yes,yes,4,4,3,1,3,5,5,7,6,7
|
||||
MS,M,17,U,GT3,T,2,3,other,services,home,father,2,2,0,no,no,no,yes,yes,yes,yes,no,4,4,3,1,1,3,2,11,11,10
|
||||
MS,M,19,R,GT3,T,1,1,other,services,other,mother,2,1,1,no,no,no,no,yes,yes,no,no,4,3,2,1,3,5,0,6,5,0
|
||||
MS,M,18,R,GT3,T,4,2,other,other,home,father,2,1,1,no,no,yes,no,yes,yes,no,no,5,4,3,4,3,3,14,6,5,5
|
||||
MS,F,18,R,GT3,T,2,2,at_home,other,other,mother,2,3,0,no,no,yes,no,yes,yes,no,no,5,3,3,1,3,4,2,10,9,10
|
||||
MS,F,18,R,GT3,T,4,4,teacher,at_home,reputation,mother,3,1,0,no,yes,yes,yes,yes,yes,yes,yes,4,4,3,2,2,5,7,6,5,6
|
||||
MS,F,19,R,GT3,T,2,3,services,other,course,mother,1,3,1,no,no,no,yes,no,yes,yes,no,5,4,2,1,2,5,0,7,5,0
|
||||
MS,F,18,U,LE3,T,3,1,teacher,services,course,mother,1,2,0,no,yes,yes,no,yes,yes,yes,no,4,3,4,1,1,1,0,7,9,8
|
||||
MS,F,18,U,GT3,T,1,1,other,other,course,mother,2,2,1,no,no,no,yes,yes,yes,no,no,1,1,1,1,1,5,0,6,5,0
|
||||
MS,M,20,U,LE3,A,2,2,services,services,course,other,1,2,2,no,yes,yes,no,yes,yes,no,no,5,5,4,4,5,4,11,9,9,9
|
||||
MS,M,17,U,LE3,T,3,1,services,services,course,mother,2,1,0,no,no,no,no,no,yes,yes,no,2,4,5,3,4,2,3,14,16,16
|
||||
MS,M,21,R,GT3,T,1,1,other,other,course,other,1,1,3,no,no,no,no,no,yes,no,no,5,5,3,3,3,3,3,10,8,7
|
||||
MS,M,18,R,LE3,T,3,2,services,other,course,mother,3,1,0,no,no,no,no,no,yes,yes,no,4,4,1,3,4,5,0,11,12,10
|
||||
MS,M,19,U,LE3,T,1,1,other,at_home,course,father,1,1,0,no,no,no,no,yes,yes,yes,no,3,2,3,3,3,5,5,8,9,9
|
||||
|
45
kamyshov_danila_lab_6/templates/index.html
Normal file
@@ -0,0 +1,45 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Предсказание оценки учащихся</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Предсказание оценки учащихся</h1>
|
||||
<form method="post" action="/predict">
|
||||
<label for="Pstatus">Статус сожительства родителей (A, T, T):</label>
|
||||
<input type="text" name="Pstatus" id="Pstatus" required><br>
|
||||
|
||||
<label for="guardian">Опекун (mother, father, mother):</label>
|
||||
<input type="text" name="guardian" id="guardian" required><br>
|
||||
|
||||
<label for="internet">Наличие интернета (no, yes, yes):</label>
|
||||
<input type="text" name="internet" id="internet" required><br>
|
||||
|
||||
<label for="romantic">В романтических отношениях (no, no, no):</label>
|
||||
<input type="text" name="romantic" id="romantic" required><br>
|
||||
|
||||
<label for="famrel">Отношения в семье (4, 5, 4):</label>
|
||||
<input type="number" name="famrel" id="famrel" required><br>
|
||||
|
||||
<label for="freetime">Свободное время после школы (3, 3, 3):</label>
|
||||
<input type="number" name="freetime" id="freetime" required><br>
|
||||
|
||||
<label for="goout">Время с друзьями (4, 3, 2):</label>
|
||||
<input type="number" name="goout" id="goout" required><br>
|
||||
|
||||
<label for="Dalc">Потребление алкоголя в рабочие дни (1, 1, 2):</label>
|
||||
<input type="number" name="Dalc" id="Dalc" required><br>
|
||||
|
||||
<label for="Walc">Потребление алкоголя в выходные (1, 1, 3):</label>
|
||||
<input type="number" name="Walc" id="Walc" required><br>
|
||||
|
||||
<label for="health">Состояние здоровья (3, 3, 3):</label>
|
||||
<input type="number" name="health" id="health" required><br>
|
||||
|
||||
<label for="absences">Пропуски занятий (6, 4, 10):</label>
|
||||
<input type="number" name="absences" id="absences" required><br>
|
||||
|
||||
<input type="submit" value="Предсказать оценку">
|
||||
</form>
|
||||
</body>
|
||||
</html>
|
||||
BIN
kochkareva_elizaveta_lab_1/LinearRegressionChart.png
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
kochkareva_elizaveta_lab_1/PerceptronChart.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
BIN
kochkareva_elizaveta_lab_1/PolynomialRegressionChart.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
111
kochkareva_elizaveta_lab_1/README.md
Normal file
@@ -0,0 +1,111 @@
|
||||
|
||||
# Лабораторная работа 1. Вариант 15
|
||||
|
||||
### Задание
|
||||
Сгенерировать данные:
|
||||
`
|
||||
make_classification (n_samples=500, n_features=2,
|
||||
n_redundant=0, n_informative=2, random_state=rs, n_clusters_per_class=1)
|
||||
`
|
||||
|
||||
Сравнить на нем 3 модели:
|
||||
- Линейную регрессию
|
||||
- Полиномиальную регрессию (со степенью 4)
|
||||
- Персептрон
|
||||
|
||||
### Как запустить лабораторную работу
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
### Какие технологии использовали
|
||||
- Библиотека *numpy* для работы с массивами.
|
||||
- Библиотека *matplotlib pyplot* - для визуализации данных.
|
||||
- Библиотека *sklearn*:
|
||||
- *make_classification* для создания синтетических наборов данных.
|
||||
- *LinearRegression* для создания и работы с моделью Линейной регрессии.
|
||||
- *Perceptron* для создания и работы с Персептроном
|
||||
- *accuracy_score* для использования функции, используемая для вычисления точности классификации.
|
||||
- *train_test_split* для разделения набора данных на обучающую и тестовую выборки.
|
||||
- *PolynomialFeatures* для создания преобразователя, который генерирует полиномиальные признаки из исходных признаков
|
||||
|
||||
### Описание лабораторной работы
|
||||
#### Генерация данных
|
||||
Программа создает синтетический набор данных, где переменная `X` будет содержать матрицу признаков размером `(n_samples, n_features)`, а переменная `y` будет содержать вектор целевых переменных размером `(n_samples,)`.
|
||||
```
|
||||
X, y = make_classification(n_samples=500, n_features=2, n_redundant=0,
|
||||
n_informative=2, random_state=None,
|
||||
n_clusters_per_class=1)
|
||||
```
|
||||
Добавляет шум к данным путем увеличения значений матрицы признаков `X` на случайные значения из равномерного распределения, умноженные на 2. Затем создает переменную, которая содержит кортеж из матрицы признаков `X` и вектора целевых переменных `y`. И разделяет данные на обучающий набор `(X_train, y_train)` и тестовый набор `(X_test, y_test)` с помощью функции `train_test_split`. Обучающий набор составляет 60% от исходных данных, а 40% от исходных данных используются для тестирования модели `(test_size=.4)`.
|
||||
```python
|
||||
rng = np.random.RandomState(2)
|
||||
X += 2 * rng.uniform(size=X.shape)
|
||||
linearly_dataset = (X, y)
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=42)
|
||||
```
|
||||
#### Работа с моделью линейной регрессии
|
||||
Создаем экземпляр модели линейной регрессии с помощью класса `LinearRegression()`, которая будет использоваться для построения линейной регрессии. Обучаем модель на обучающем наборе данных `X_train` и `y_train` с помощью метода `fit()`. Затем используем обученную модель для прогнозирования целевых переменных на тестовом наборе данных `X_test` с помощью метода `predict()`. Полученные прогнозы сохраняются в переменную `y_pred`. И вычисляем коэффициент детерминации (R-квадрат) для для оценки качества модели регрессии на тестовом наборе данных с помощью метода `score()`.
|
||||
```python
|
||||
# Модель линейной регрессии
|
||||
model = LinearRegression()
|
||||
# Обучение на тренировочных данных
|
||||
model.fit(X_train, y_train)
|
||||
# Выполнение прогноза
|
||||
y_pred = model.predict(X_test)
|
||||
# Вычисление коэффициента детерминации
|
||||
r_sq = model.score(X_test, y_test)
|
||||
```
|
||||
Выполним построение графика:
|
||||
|
||||
|
||||

|
||||
|
||||
#### Работа с моделью полиномиальной регрессии (со степенью 4)
|
||||
Создаем экземпляр класса `PolynomialFeatures` для генерации полиномиальных признаков со степень полинома 4 и параметр `include_bias=False`, чтобы исключить добавление дополнительного столбца с единицами (смещения). Преобразуем обучающий набор данных `X_train` и тестовый набор данных `X_test` в полиномиальные признаки с помощью метода `fit_transform()` и сохраняем в переменные `X_poly_train` и `X_poly_test` соотвественно. Создаем экземпляр модели линейной регрессии с помощью класса `LinearRegression()`. Обучаем модель линейной регрессии на обучающем наборе данных `X_poly_train` и `y_train` с помощью метода `fit()`. Используем обученную модель для прогнозирования целевых переменных на тестовом наборе данных `X_poly_test` с помощью метода `predict()`. И вычисляем коэффициент детерминации (R-квадрат) для модели на тестовом наборе данных с помощью метода `score()`.
|
||||
```python
|
||||
pf = PolynomialFeatures(degree=4, include_bias=False)
|
||||
# Преобразование исходного набора данных X_train в полиномиальные признаки
|
||||
X_poly_train = pf.fit_transform(X_train)
|
||||
# Преобразование исходного набора данных X_test в полиномиальные признаки
|
||||
X_poly_test = pf.fit_transform(X_test)
|
||||
# Модель линейной регрессии
|
||||
model = LinearRegression()
|
||||
# Обучение модели линейной регрессии на преобразованных полиномиальных признаках
|
||||
model.fit(X_poly_train, y_train)
|
||||
# Выполнение прогноза
|
||||
y_pred = model.predict(X_poly_test)
|
||||
# Вычисление коэффициента детерминации
|
||||
r_sq = model.score(X_poly_test, y_test)
|
||||
```
|
||||
Выполним построение графика:
|
||||
|
||||
|
||||

|
||||
|
||||
#### Работа с персептроном
|
||||
Создаем экземпляр модели персептрона `model = Perceptron()` и обучаем модель на тренировочных данных с помощью метода `fit()`. После обучения модели персептрона, выполняем прогноз на тестовых данных с помощью метода `predict()`. Для оценки точности работы персептрона используем функцию `accuracy_score`, которая сравнивает предсказанные классы `y_pred` с истинными классами `y_test` и возвращает долю правильно классифицированных примеров.
|
||||
```python
|
||||
# Модель персептрона
|
||||
model = Perceptron()
|
||||
# Обучение на тренировочных данных
|
||||
model.fit(X_train, y_train)
|
||||
# Выполнение прогноза
|
||||
y_pred = model.predict(X_test)
|
||||
# Вычисление точности работы персептрона
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
```
|
||||
Выполним построение графика:
|
||||
|
||||
|
||||

|
||||
|
||||
### Вывод
|
||||
|
||||
Исходя из построенных графиков можно сделать следующий вывод:
|
||||
|
||||
1. Коэффициент детерминации для полиномиальной регрессии (0,56) выше, чем для линейной регрессии (0,52). Это означает, что полиномиальная модель лучше объясняет изменчивость в данных, чем линейная модель. Однако значение 0.56 указывает на некоторую связь между предсказываемой переменной и независимыми переменными, но остается возможность для дальнейшего улучшения модели.
|
||||
|
||||
2. Доля правильно классифицированных примеров персептроном (0,845) также высокая. Это говорит о том, что персептрон успешно выполнил задачу классификации и хорошо разделил примеры на правильные классы.
|
||||
|
||||
В целом, можно сделать вывод, что и полиномиальная регрессия и персептрон проявляют лучшую производительность и демонстрируют лучшие результаты в анализе сгенерированных нами данных, чем линейная регрессия.
|
||||
102
kochkareva_elizaveta_lab_1/main.py
Normal file
@@ -0,0 +1,102 @@
|
||||
import os.path
|
||||
import numpy as np
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn.datasets import make_classification
|
||||
from sklearn.linear_model import LinearRegression, Perceptron
|
||||
from sklearn.metrics import accuracy_score
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
|
||||
picfld = os.path.join('static', 'charts')
|
||||
|
||||
X, y = make_classification(n_samples=500, n_features=2, n_redundant=0,
|
||||
n_informative=2, random_state=None,
|
||||
n_clusters_per_class=1)
|
||||
# sklearn.datasets.samples_generator.make_classification - используется для создания случайных задач классификации N.
|
||||
# n_samples - Количество случайных чисел
|
||||
# n_features - количество признаков (измерений) для каждого числа.
|
||||
# n_informative - Количество информативных характеристик
|
||||
# n_redundant -количество избыточных признаков, которые не вносят дополнительной информации.
|
||||
# random_state - опциональный параметр для установки начального состояния генератора случайных чисел.
|
||||
# n_clusters_per_class - Количество кластера в каждой категории
|
||||
# Функция возвращает два значения:
|
||||
# X: массив размера [n_samples, n_features], содержащий сгенерированные признаки.
|
||||
# y: массив размера [n_samples], содержащий сгенерированные целевые переменные (классы).
|
||||
|
||||
rng = np.random.RandomState(2)
|
||||
# добавление шума к данным
|
||||
X += 2 * rng.uniform(size=X.shape)
|
||||
linearly_dataset = (X, y)
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=42)
|
||||
|
||||
# Модель: линейная регрессия
|
||||
def linear_regression():
|
||||
# Модель линейной регрессии
|
||||
model = LinearRegression()
|
||||
# Обучение на тренировочных данных
|
||||
model.fit(X_train, y_train)
|
||||
# Выполнение прогноза
|
||||
y_pred = model.predict(X_test)
|
||||
# Вычисление коэффициента детерминации
|
||||
r_sq = model.score(X_test, y_test)
|
||||
# Создание графика
|
||||
plt.plot(y_test, c="#bd0000", label="\"y\" исходная")
|
||||
plt.plot(y_pred, c="#00BFFF", label="\"y\" предсказанная \n" "Кд = " + str(r_sq))
|
||||
plt.title("Линейная регрессия")
|
||||
plt.legend(loc='lower left')
|
||||
plt.savefig('static/charts/LinearRegressionChart.png')
|
||||
plt.close()
|
||||
|
||||
|
||||
# Модель: полиномиальная регрессия (со степенью 4)
|
||||
def polynomial_regression():
|
||||
# Генерирование объекта полинома,
|
||||
# где degree - степень полинома,
|
||||
# include_bias - установка вектора смещения в полиномиальные признаки
|
||||
pf = PolynomialFeatures(degree=4, include_bias=False)
|
||||
# Преобразование исходного набора данных X_train в полиномиальные признаки
|
||||
X_poly_train = pf.fit_transform(X_train)
|
||||
# Преобразование исходного набора данных X_test в полиномиальные признаки
|
||||
X_poly_test = pf.fit_transform(X_test)
|
||||
# Модель линейной регрессии
|
||||
model = LinearRegression()
|
||||
# Обучение модели линейной регрессии на преобразованных полиномиальных признаках
|
||||
model.fit(X_poly_train, y_train)
|
||||
# Выполнение прогноза
|
||||
y_pred = model.predict(X_poly_test)
|
||||
# Вычисление коэффициента детерминации
|
||||
r_sq = model.score(X_poly_test, y_test)
|
||||
# Создание графика
|
||||
plt.plot(y_test, c="#bd0000", label="\"y\" исходная")
|
||||
plt.plot(y_pred, c="#00BFFF",
|
||||
label="\"y\" предсказанная \n" "Кд = " + str(r_sq))
|
||||
plt.legend(loc='lower left')
|
||||
plt.title("Полиномиальная регрессия")
|
||||
plt.savefig('static/charts/PolynomialRegressionChart.png')
|
||||
plt.close()
|
||||
|
||||
|
||||
# Модель: персептрон
|
||||
def perceptron():
|
||||
# Модель персептрона
|
||||
model = Perceptron()
|
||||
# Обучение на тренировочных данных
|
||||
model.fit(X_train, y_train)
|
||||
# Выполнение прогноза
|
||||
y_pred = model.predict(X_test)
|
||||
# Вычисление точности работы персептрона
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
# Создание графика
|
||||
plt.plot(y_test, c="#bd0000", label="\"y\" исходная")
|
||||
plt.plot(y_pred, c="#00BFFF",
|
||||
label="\"y\" предсказанная \n" "Точность = " + str(accuracy))
|
||||
plt.legend(loc='lower left')
|
||||
plt.title("Персептрон")
|
||||
plt.savefig('static/charts/PerceptronChart.png')
|
||||
plt.close()
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
linear_regression()
|
||||
polynomial_regression()
|
||||
perceptron()
|
||||
|
After Width: | Height: | Size: 92 KiB |
BIN
kochkareva_elizaveta_lab_1/static/charts/PerceptronChart.png
Normal file
|
After Width: | Height: | Size: 106 KiB |
|
After Width: | Height: | Size: 93 KiB |
136
kochkareva_elizaveta_lab_2/README.md
Normal file
@@ -0,0 +1,136 @@
|
||||
|
||||
# Лабораторная работа 2. Вариант 15
|
||||
|
||||
### Задание
|
||||
Выполнить ранжирование признаков с помощью указанных по
|
||||
варианту моделей. Отобразить получившиеся значения\оценки каждого
|
||||
признака каждым методом\моделью и среднюю оценку.
|
||||
|
||||
3 модели:
|
||||
- Случайное Лассо (RandomizedLasso)
|
||||
- Рекурсивное сокращение признаков (Recursive Feature Elimination – RFE)
|
||||
- Линейная корреляция (f_regression)
|
||||
|
||||
### Как запустить лабораторную работу
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
|
||||
### Какие технологии использовали
|
||||
- Библиотека *numpy* для работы с массивами.
|
||||
- Библиотека *itemgetter* для использования функции для выбора элементов из коллекции.
|
||||
- Библиотека *sklearn*:
|
||||
- *LinearRegression* для создания и работы с моделью Линейной регрессии.
|
||||
- *Ridge* для создания и работы с моделью линейной регрессии с регуляризацией
|
||||
- *MinMaxScaler* - для нормализации данных путем масштабирования значений признаков в диапазоне от 0 до 1.
|
||||
- *RFE, f_regression* - RFE используется для рекурсивного отбора признаков, а f_regression - для вычисления корреляции между каждым признаком и целевой переменной.
|
||||
|
||||
|
||||
### Описание лабораторной работы
|
||||
#### Генерация данных
|
||||
Создаем массив `X` размером (750, 14), где каждый элемент выбирается случайным образом из равномерного распределения на интервале от 0 до 1. Затем вычисляем массив `Y`, используя формулу, отрадающую зависимость значения `Y` от значений в массиве `X` и состоящую из случайного шума.
|
||||
Изменяем значения последних четырех столбцов массива `X`. Значения этих столбцов становятся суммой первых четырех столбцов и случайного шума. Создаем список names, который содержит названия признаков, и пустой словарь ranks, который будет использоваться для хранения значений важности признаков.
|
||||
|
||||
```python
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
# Задаем функцию-выход: регрессионную проблему Фридмана
|
||||
Y = (10 * np.sin(np.pi*X[:, 0]*X[:, 1]) + 20*(X[:, 2] - .5)**2 + 10*X[:, 3] + 5*X[:, 4]**5 + np.random.normal(0, 1))
|
||||
# Добавляем зависимость признаков
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
names = ["x%s" % i for i in range(1, 15)] # - список признаков вида ['x1', 'x2', 'x3', ..., 'x14']
|
||||
ranks = dict()
|
||||
```
|
||||
#### Обработка результатов
|
||||
Создаем функцию `rank_to_dict`, которая принимает два аргумента: `ranks` (оценки важности признаков) и `names` (названия признаков). В данной функции создается словарь, используя `zip` для объединения названий признаков и округленных оценок важности признаков. Названия признаков становятся ключами словаря, а округленные оценки - значениями.
|
||||
|
||||
```python
|
||||
def rank_to_dict(ranks, names):
|
||||
# получение абсолютных значений оценок(модуля)
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
# преобразование данных
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
# округление элементов массива
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
# преобразование данных
|
||||
return dict(zip(names, ranks))
|
||||
```
|
||||
|
||||
#### Модель Ridge
|
||||
|
||||
Так как по заданию необходимо работать с устаревшей моделью случайное *Лассо (RandomizedLasso)*, воспользуемся *Ridge-регрессией (Ridge Regression)*.
|
||||
Создадим экземпляр модели *Ridge*, которая используется для выполнения регрессии с использованием линейной комбинации признаков, которая применяет регуляризацию L2 для уменьшения влияния мультиколлинеарности в данных.
|
||||
Обучаем модель *Ridge* с использованием метода `.fit(X, Y)`. Здесь `X` представляет собой матрицу признаков (независимые переменные), а `Y` - вектор целевой переменной (зависимая переменная). Модель обучается на этих данных, чтобы найти оптимальные значения коэффициентов регрессии. Далее отправляем полученные коэффициенты в метод `rank_to_dict` для обрезования данных в необходимый вид.
|
||||
|
||||
```python
|
||||
ridge_model = Ridge()
|
||||
ridge_model.fit(X, Y)
|
||||
ranks['Ridge'] = rank_to_dict(ridge_model.coef_, names)
|
||||
```
|
||||
|
||||
#### Модель рекурсивное сокращение признаков (Recursive Feature Elimination – RFE)
|
||||
Для работы с моделью рекурсивного сокрщения признаков создадим две функции: `recursive_feature_elimination()` и `rank_to_dict_rfe(ranking, names)`.
|
||||
|
||||
В функции `recursive_feature_elimination()` создаем экземпляр модели *LinearRegression* под именем `estimator`. Далее создаем экземпляр модели *RFE (Recursive Feature Elimination)* под именем `rfe_model`, передавая `estimator` в качестве аргумента конструктора. Обучаем `rfe_model` на данных `X` и `Y`. Затем добавляем ранги признаков, полученные от `rfe_model`, в словарь `ranks` под ключом *'Recursive Feature Elimination'*, используя функцию `rank_to_dict_rfe()`.
|
||||
|
||||
```python
|
||||
def recursive_feature_elimination():
|
||||
# создание модели LinearRegression
|
||||
estimator = LinearRegression()
|
||||
# создание модели RFE
|
||||
rfe_model = RFE(estimator)
|
||||
rfe_model.fit(X, Y)
|
||||
ranks['Recursive Feature Elimination'] = rank_to_dict_rfe(rfe_model.ranking_, names)
|
||||
```
|
||||
В функции `rank_to_dict_rfe(ranking, names)` находит обратные значения рангов признаков, делим 1 на каждый ранг. Округляем элементы полученного массива до двух знаков после запятой, используя функцию `round()`. И возвращаем словарь, где имена признаков из `names` являются ключами, а значениями являются округленные обратные значения рангов.
|
||||
```python
|
||||
def rank_to_dict_rfe(ranking, names):
|
||||
# нахождение обратных значений рангов
|
||||
n_ranks = [float(1 / i) for i in ranking]
|
||||
# округление элементов массива
|
||||
n_ranks = map(lambda x: round(x, 2), n_ranks)
|
||||
# преобразование данных
|
||||
return dict(zip(names, n_ranks))
|
||||
```
|
||||
|
||||
#### Линейная корреляция (f_regression)
|
||||
Для работы с линейной корреляцией выполним линейную корреляцию между признаками в матрице `X` и целевой переменной `Y`. Для этого используем функцию `f_regression()` для выполнения линейной регрессии между каждым признаком в матрице `X` и целевой переменной `Y`. После этого возвращается два массива: `correlation` содержит значения коэффициентов корреляции между признаками и `Y`, а `p_values` содержит соответствующие p-значения для каждого коэффициента корреляции. После чего создаем новую запись в словаре `ranks` с ключом *'linear correlation'*.
|
||||
|
||||
```python
|
||||
correlation, p_values = f_regression(X, Y)
|
||||
ranks['linear correlation'] = rank_to_dict(correlation, names)
|
||||
```
|
||||
|
||||
### Вывод
|
||||
|
||||
Согласно условию задания значимыми параметрами были: *x1, x2, x3, x4, x5*. А зависимыми от них *x10, x11, x12, x13, x14*.
|
||||
|
||||
После сортировки полученных результатов работы моделей, можем увидеть следующее:
|
||||
```
|
||||
Ridge
|
||||
[('x4', 1.0), ('x1', 0.98), ('x2', 0.8), ('x14', 0.61), ('x5', 0.54), ('x12', 0.39), ('x3', 0.25), ('x13', 0.19), ('x11', 0.16), ('x6', 0.08), ('x8', 0.07), ('x7', 0.02), ('x10', 0.02), ('x9', 0.0)]
|
||||
Recursive Feature Elimination
|
||||
[('x1', 1.0), ('x2', 1.0), ('x3', 1.0), ('x4', 1.0), ('x5', 1.0), ('x11', 1.0), ('x13', 1.0), ('x12', 0.5), ('x14', 0.33), ('x8', 0.25), ('x6', 0.2), ('x10', 0.17), ('x7', 0.14), ('x9', 0.12)]
|
||||
linear correlation
|
||||
[('x4', 1.0), ('x14', 0.98), ('x2', 0.45), ('x12', 0.44), ('x1', 0.3), ('x11', 0.29), ('x5', 0.04), ('x8', 0.02), ('x7', 0.01), ('x9', 0.01), ('x3', 0.0), ('x6', 0.0), ('x10', 0.0), ('x13', 0.0)]
|
||||
|
||||
```
|
||||
Как можно заметить в модели *Ridge* параметры *x1, x2, x4, x5* имеют наибольшую значимость, что соответстует исходному условию задания, однако был потерян признак *x3*, значимость которого была показана низкой.
|
||||
|
||||
Модель *Recursive Feature Elimination* правильно показала все наиболее значиме признаки *x1, x2, x3, x4, x5*.
|
||||
|
||||
В модели линейной корреляции параметры *'x4'* и *'x14'* имеют наибольшую корреляцию, равную 1.0. Параметры *'x3', 'x6', 'x10' и 'x13'* имеют наименьшую корреляцию, равную 0.0. Таким образом, показав наихудний результат среди трех моделей.
|
||||
|
||||
В среднем по работе трех моделей имеем следующий результат, где параметр *'x4'* имеет наибольшую значимость, равную 1.0, параметр *'x9'* имеет наименьшую значимость, равную 0.04.:
|
||||
|
||||
```
|
||||
Mean
|
||||
[('x4', 1.0), ('x1', 0.76), ('x2', 0.75), ('x14', 0.64), ('x5', 0.53), ('x11', 0.48), ('x12', 0.44), ('x3', 0.42), ('x13', 0.4), ('x8', 0.11), ('x6', 0.09), ('x7', 0.06), ('x10', 0.06), ('x9', 0.04)]
|
||||
|
||||
```
|
||||
|
||||
|
||||
Таким образом, можно сделать вывод о том, лучше всех справилась модель *Recursive Feature Elimination*, а также, что порядок значимости параметров может немного различаться в зависимости от модели.
|
||||
88
kochkareva_elizaveta_lab_2/main.py
Normal file
@@ -0,0 +1,88 @@
|
||||
from operator import itemgetter
|
||||
import numpy as np
|
||||
from sklearn.feature_selection import RFE, f_regression
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
from sklearn.linear_model import Ridge
|
||||
from sklearn.linear_model import LinearRegression
|
||||
|
||||
# генерируем исходные данные: 750 строк-наблюдений и 14 столбцов-признаков
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
X = np.random.uniform(0, 1, (size, 14))
|
||||
# Задаем функцию-выход: регрессионную проблему Фридмана
|
||||
Y = (10 * np.sin(np.pi*X[:, 0]*X[:, 1]) + 20*(X[:, 2] - .5)**2 + 10*X[:, 3] + 5*X[:, 4]**5 + np.random.normal(0, 1))
|
||||
# Добавляем зависимость признаков
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
names = ["x%s" % i for i in range(1, 15)] # - список признаков вида ['x1', 'x2', 'x3', ..., 'x14']
|
||||
ranks = dict()
|
||||
|
||||
|
||||
def rank_to_dict(ranks, names):
|
||||
# получение абсолютных значений оценок(модуля)
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
# преобразование данных
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(14, 1)).ravel()
|
||||
# округление элементов массива
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
# преобразование данных
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
|
||||
# Модель: случайное Лассо (RandomizedLasso) - устаревшее, поэтому используем Ridge-регрессия (Ridge Regression)
|
||||
def ridge_regressions():
|
||||
# Создание экземпляра модели Ridge
|
||||
ridge_model = Ridge()
|
||||
ridge_model.fit(X, Y)
|
||||
ranks['Ridge'] = rank_to_dict(ridge_model.coef_, names)
|
||||
|
||||
|
||||
# Модель: рекурсивное сокращение признаков (Recursive Feature Elimination – RFE)
|
||||
def recursive_feature_elimination():
|
||||
# создание модели LinearRegression
|
||||
estimator = LinearRegression()
|
||||
# создание модели RFE
|
||||
rfe_model = RFE(estimator)
|
||||
rfe_model.fit(X, Y)
|
||||
ranks['Recursive Feature Elimination'] = rank_to_dict_rfe(rfe_model.ranking_, names)
|
||||
|
||||
|
||||
def rank_to_dict_rfe(ranking, names):
|
||||
# нахождение обратных значений рангов
|
||||
n_ranks = [float(1 / i) for i in ranking]
|
||||
# округление элементов массива
|
||||
n_ranks = map(lambda x: round(x, 2), n_ranks)
|
||||
# преобразование данных
|
||||
return dict(zip(names, n_ranks))
|
||||
|
||||
|
||||
# Модель: линейная корреляция (f_regression)
|
||||
def linear_correlation():
|
||||
# вычисление линейной корреляции между X и y
|
||||
correlation, p_values = f_regression(X, Y)
|
||||
ranks['linear correlation'] = rank_to_dict(correlation, names)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
ridge_regressions()
|
||||
recursive_feature_elimination()
|
||||
linear_correlation()
|
||||
|
||||
for key, value in ranks.items(): # Вывод нормализованных оценок важности признаков каждой модели
|
||||
ranks[key] = sorted(value.items(), key=itemgetter(1), reverse=True)
|
||||
for key, value in ranks.items():
|
||||
print(key)
|
||||
print(value)
|
||||
|
||||
mean = {} # - нахождение средних значений оценок важности по 3м моделям
|
||||
for key, value in ranks.items():
|
||||
for item in value:
|
||||
if item[0] not in mean:
|
||||
mean[item[0]] = 0
|
||||
mean[item[0]] += item[1]
|
||||
for key, value in mean.items():
|
||||
res = value / len(ranks)
|
||||
mean[key] = round(res, 2)
|
||||
mean = sorted(mean.items(), key=itemgetter(1), reverse=True)
|
||||
print("Mean")
|
||||
print(mean)
|
||||
123
kochkareva_elizaveta_lab_3/README.md
Normal file
@@ -0,0 +1,123 @@
|
||||
|
||||
# Лабораторная работа 3. Вариант 15
|
||||
|
||||
### Задание
|
||||
Выполнить ранжирование признаков и решить с помощью библиотечной реализации дерева решений задачу классификации на 99% данных из курсовой работы. Проверить работу модели на оставшемся проценте, сделать вывод.
|
||||
|
||||
Модель:
|
||||
- дерево решений DecisionTreeClassifier.
|
||||
|
||||
### Как запустить лабораторную работу
|
||||
Для запуска программы необходимо с помощью командной строки в корневой директории файлов прокета прописать:
|
||||
```
|
||||
python main.py
|
||||
```
|
||||
|
||||
### Какие технологии использовали
|
||||
- Библиотека *numpy* для работы с массивами.
|
||||
- Библиотека *pandas* для для работы с данными и таблицами.
|
||||
- Библиотека *sklearn*:
|
||||
- *train_test_split* - для разделения данных на обучающую и тестовую выборки.
|
||||
- *MinMaxScaler* - для нормализации данных путем масштабирования значений признаков в диапазоне от 0 до 1.
|
||||
- *DecisionTreeClassifier* - для использования алгоритма дерева решений для задачи классификации.
|
||||
|
||||
### Описание лабораторной работы
|
||||
#### Описание набора данных
|
||||
В качестве набора данных был взят: *"Job Dataset"* - набор данных, содержащий объявления о вакансиях.
|
||||
Набор данных состоит из следующих столбцов:
|
||||
Descriptions for each of the columns in the dataset:
|
||||
- Job Id - Уникальный идентификатор для каждой публикации вакансии.
|
||||
- Experience - Требуемый или предпочтительный многолетний опыт работы на данной должности.
|
||||
- Qualifications - Уровень образования, необходимый для работы.
|
||||
- Salary Range - Диапазон окладов или компенсаций, предлагаемых за должность.
|
||||
- Location - Город или область, где находится работа.
|
||||
- Country - Страна, в которой находится работа.
|
||||
- Latitude - Координата широты местоположения работы.
|
||||
- Longitude - Координата долготы местоположения работы.
|
||||
- Work Type - Тип занятости (например, полный рабочий день, неполный рабочий день, контракт).
|
||||
- Company Size - Приблизительный размер или масштаб компании, принимающей на работу.
|
||||
- Job Posting Date - Дата, когда публикация о вакансии была опубликована.
|
||||
- Preference - Особые предпочтения или требования к кандидатам (например, только мужчины или только женщины, или и то, и другое).
|
||||
- Contact Person - Имя контактного лица или рекрутера для работы.
|
||||
- Contact - Контактная информация для запросов о работе.
|
||||
- Job Title - Название должности
|
||||
- Role - Роль или категория работы (например, разработчик программного обеспечения, менеджер по маркетингу).
|
||||
- Job Portal - Платформа или веб-сайт, на котором была размещена вакансия.
|
||||
- Job Description - Подробное описание должностных обязанностей и требований.
|
||||
- Benefits - Информация о льготах, предоставляемых в связи с работой (например, медицинская страховка, пенсионные планы).
|
||||
- Skills - Навыки или квалификация, необходимые для работы.
|
||||
- Responsibilities - Конкретные обязанности, связанные с работой.
|
||||
- Company Name - Название компании, принимающей на работу.
|
||||
- Company Profile - Краткий обзор истории компании и миссии.
|
||||
|
||||
Ссылка на страницу набора на kuggle: [Job Dataset](https://www.kaggle.com/datasets/ravindrasinghrana/job-description-dataset)
|
||||
|
||||
#### Подготовка данных
|
||||
Для обеспечения качественного анализа данных и построения точных моделей машинного обучения, необходимо провести предварительную обработку данных. В данном проекте была выполнена следующая предобработка данных:
|
||||
- Были удалены незначищие столбцы: *"Job Id", "latitude", "longitude", "Contact Person", "Contact", "Job Description", "Responsibilities"*.
|
||||
```python
|
||||
df_job.drop(["Job Id", "latitude", "longitude", "Contact Person", "Contact", "Job Description", "Responsibilities"], axis=1,
|
||||
inplace=True)
|
||||
```
|
||||
- Кодирование категориальных признаков, преобразованние их в уникальные числовые значения для каждого столбца, чтобы модель машинного обучения могла работать с ними, для столбцов: *'location', 'Country', 'Work Type','Preference', 'Job Title', 'Role', 'Job Portal', 'skills', 'Company', 'Sector'*. Пример кодирования категориальных признаков:
|
||||
```python
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
qualifications_dict = {qual: i for i, qual in enumerate(df_job['Qualifications'].unique())}
|
||||
# Заменяем значения в столбце "Qualifications" соответствующими числовыми идентификаторами
|
||||
df_job['Qualifications'] = df_job['Qualifications'].map(qualifications_dict)
|
||||
```
|
||||
- Данные столбцов *'Experience' и 'Salary Range'* были разделены соответственно на дополнительные столбцы: *'Min Experience', 'Max Experience', 'Min Salary', 'Max Salary'*. А сами столбцы *'Experience' и 'Salary Range'* удалены.
|
||||
Пример разделения:
|
||||
```python
|
||||
# Разделяем значения 'Years' на минимальное и максимальное
|
||||
# Удаляем символы валюты и другие символы
|
||||
df_job['Experience'] = df_job['Experience'].apply(lambda x: str(x).replace('Years', '') if x is not None else x)
|
||||
df_job[['Min Experience', 'Max Experience']] = df_job['Experience'].str.split(' to ', expand=True)
|
||||
# Преобразуем значения в числовой формат
|
||||
df_job['Min Experience'] = pd.to_numeric(df_job['Min Experience'])
|
||||
df_job['Max Experience'] = pd.to_numeric(df_job['Max Experience'])
|
||||
```
|
||||
- Данные столбцы *'Job Posting Date'* были разбиты на дополнительные столбцы: *'year', 'month', 'day'*. А сам столбец *'Job Posting Date'* был удален.
|
||||
- Данные ячеек столбца *'Company Profile'* имеют структуру вида *{"Sector":"Diversified","Industry":"Diversified Financials","City":"Sunny Isles Beach","State":"Florida","Zip":"33160","Website":"www.ielp.com","Ticker":"IEP","CEO":"David Willetts"}*, поэтому были разделены на дополнительные столбцы и закодированы для избежания категориальных признаков: *'Sector', 'Industry', 'City', 'State', 'Ticker'*, а данные о *'Zip', 'Website', 'CEO'* были удалены, как наименее важные. Также был удален сам столбец *'Company Profile'*.
|
||||
|
||||
#### Выявление значимых параметров
|
||||
|
||||
Создаем переменную y, которая содержит значения целевой переменной *"Qualifications"* из нашего подготовленного набора данных `data`. Разделяем данные на обучающую и тестовую выборки, где `corr.values` содержит значения признаков, которые будут использоваться для обучения модели, `y.values` содержит значения целевой переменной, а `test_size=0.2` указывает, что 20% данных будет использоваться для тестирования модели. Затем создаем экземпляр классификатора `DecisionTreeClassifier` и обучаем классификатор на обучающих данных. После чего получаем важности признаков из обученной модели, которые показывают, насколько сильно каждый признак влияет на прогнозы модели.
|
||||
```python
|
||||
# определение целевой переменной
|
||||
y = data['Qualifications']
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(corr.values, y.values, test_size=0.2)
|
||||
# Создание экземпляра классификатора дерева решений
|
||||
clf = DecisionTreeClassifier(random_state=241)
|
||||
# Обучение модели на обучающей выборке
|
||||
clf.fit(X_train, y_train)
|
||||
# Прогнозирование классов для тестовой выборки
|
||||
y_pred = clf.predict(X_test)
|
||||
importances = clf.feature_importances_
|
||||
print("Важность признаков: ")
|
||||
print(importances)
|
||||
print("Отсортированная важность признаков: ")
|
||||
conversion_ratings(importances)
|
||||
```
|
||||
Для того, чтобы получить отсортированный список важности признаков и их значения создаем дополнительный метод `conversion_ratings` с аналогичной логикой работы сортировки данных, как в лабораторной работе 2.
|
||||
|
||||
После запуска имеем следующий результат:
|
||||
```
|
||||
Важность признаков:
|
||||
[0.04535517 0.04576875 0.03236705 0.07819966 0.02279837 0.0608208
|
||||
0.04189454 0.04985896 0.0418959 0.03571376 0.03675038 0.04229454
|
||||
0.04054691 0.05188657 0.03849015 0.04226668 0.04105321 0.03616932
|
||||
0.03535738 0.01584379 0.04569225 0.0588709 0.00620841 0.00620682
|
||||
0.00606359 0.00595985 0.00568906 0.00345068 0.00343211 0.00491702
|
||||
0.00614867 0.00568446 0.00634429]
|
||||
Отсортированная важность признаков:
|
||||
{'Company Size': 1.0, 'Job Title': 0.77, 'day': 0.74, 'Max Salary': 0.65, 'Job Portal': 0.62, 'Country': 0.57, 'month': 0.57, 'location': 0.56, 'Max Experience': 0.52, 'Industry': 0.52, 'Role': 0.51, 'skills': 0.51, 'Min Salary': 0.5, 'City': 0.5, 'Sector': 0.47, 'Min Experience': 0.45, 'State': 0.44, 'Company': 0.43, 'Ticker': 0.43, 'Work Type': 0.39, 'Preference': 0.26, 'year': 0.17, "'Casual Dress Code, Social and Recreational Activities, Employee Referral Programs, Health and Wellness Facilities, Life and Disability Insurance'": 0.04, "'Childcare Assistance, Paid Time Off (PTO), Relocation Assistance, Flexible Work Arrangements, Professional Development'": 0.04, "'Employee Assistance Programs (EAP), Tuition Reimbursement, Profit-Sharing, Transportation Benefits, Parental Leave'": 0.04, "'Life and Disability Insurance, Stock Options or Equity Grants, Employee Recognition Programs, Health Insurance, Social and Recreational Activities'": 0.04, "'Tuition Reimbursement, Stock Options or Equity Grants, Parental Leave, Wellness Programs, Childcare Assistance'": 0.04, "'Employee Referral Programs, Financial Counseling, Health and Wellness Facilities, Casual Dress Code, Flexible Spending Accounts (FSAs)'": 0.03, "'Flexible Spending Accounts (FSAs), Relocation Assistance, Legal Assistance, Employee Recognition Programs, Financial Counseling'": 0.03, "'Transportation Benefits, Professional Development, Bonuses and Incentive Programs, Profit-Sharing, Employee Discounts'": 0.03, "'Legal Assistance, Bonuses and Incentive Programs, Wellness Programs, Employee Discounts, Retirement Plans'": 0.02, "'Health Insurance, Retirement Plans, Flexible Work Arrangements, Employee Assistance Programs (EAP), Bonuses and Incentive Programs'": 0.0, "'Health Insurance, Retirement Plans, Paid Time Off (PTO), Flexible Work Arrangements, Employee Assistance Programs (EAP)'": 0.0}
|
||||
|
||||
```
|
||||
|
||||
### Вывод
|
||||
|
||||
Таким образом, можно сделать вывод о том, что наиболее важным признаком является "Company Size" с важностью 1.0, за ним следуют "Job Title" (0.77), "day" (0.74) и "Max Salary" (0.65). Исходя из значений важности признаков, можно сделать вывод, что как числовые, так и категориальные признаки вносят вклад в прогнозирование целевой переменной.
|
||||
|
||||
В целом, результаты лабораторной работы позволяют оценить важность каждого признака в прогнозировании целевой переменной и помогают понять, какие признаки следует учитывать при анализе данных и принятии решений.
|
||||
194
kochkareva_elizaveta_lab_3/main.py
Normal file
@@ -0,0 +1,194 @@
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
|
||||
|
||||
def data_preprocessing():
|
||||
df_job_orig = pd.read_csv('D:/Интеллектуальные информационные системы/Dataset/job_descriptions.csv')
|
||||
df_job_orig = pd.DataFrame(df_job_orig)
|
||||
desired_rows = int(0.99 * len(df_job_orig))
|
||||
df_job = df_job_orig.copy()
|
||||
df_job = df_job[:desired_rows]
|
||||
df_job.drop(["Job Id", "latitude", "longitude", "Contact Person", "Contact", "Job Description", "Responsibilities"], axis=1,
|
||||
inplace=True)
|
||||
# digitization
|
||||
# --------------------------'Years'------------------------
|
||||
# Разделяем значения 'Years' на минимальное и максимальное
|
||||
# Удаляем символы валюты и другие символы
|
||||
df_job['Experience'] = df_job['Experience'].apply(lambda x: str(x).replace('Years', '') if x is not None else x)
|
||||
df_job[['Min Experience', 'Max Experience']] = df_job['Experience'].str.split(' to ', expand=True)
|
||||
# Преобразуем значения в числовой формат
|
||||
df_job['Min Experience'] = pd.to_numeric(df_job['Min Experience'])
|
||||
df_job['Max Experience'] = pd.to_numeric(df_job['Max Experience'])
|
||||
# --------------------------'Salary Range'------------------------
|
||||
# Удаляем символы валюты и другие символы
|
||||
df_job['Salary Range'] = df_job['Salary Range'].str.replace('$', '').str.replace('K', '000')
|
||||
# Разделяем значения на минимальное и максимальное
|
||||
df_job[['Min Salary', 'Max Salary']] = df_job['Salary Range'].str.split('-', expand=True)
|
||||
# Преобразуем значения в числовой формат
|
||||
df_job['Min Salary'] = pd.to_numeric(df_job['Min Salary'])
|
||||
df_job['Max Salary'] = pd.to_numeric(df_job['Max Salary'])
|
||||
# --------------------------'Qualifications'------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
qualifications_dict = {qual: i for i, qual in enumerate(df_job['Qualifications'].unique())}
|
||||
# Заменяем значения в столбце "Qualifications" соответствующими числовыми идентификаторами
|
||||
df_job['Qualifications'] = df_job['Qualifications'].map(qualifications_dict)
|
||||
# --------------------------'location'------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
locations_dict = {locat: i for i, locat in enumerate(df_job['location'].unique())}
|
||||
# Заменяем значения в столбце "location" соответствующими числовыми идентификаторами
|
||||
df_job['location'] = df_job['location'].map(locations_dict)
|
||||
# --------------------------'Country'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
countries_dict = {countr: i for i, countr in enumerate(df_job['Country'].unique())}
|
||||
# Заменяем значения в столбце "Country" соответствующими числовыми идентификаторами
|
||||
df_job['Country'] = df_job['Country'].map(countries_dict)
|
||||
# --------------------------'Work Type'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
wt_dict = {wt: i for i, wt in enumerate(df_job['Work Type'].unique())}
|
||||
# Заменяем значения в столбце "Work Type" соответствующими числовыми идентификаторами
|
||||
df_job['Work Type'] = df_job['Work Type'].map(wt_dict)
|
||||
# --------------------------'Preference gender'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
gender_dict = {gender: i for i, gender in enumerate(df_job['Preference'].unique())}
|
||||
# Заменяем значения в столбце "Preference" соответствующими числовыми идентификаторами
|
||||
df_job['Preference'] = df_job['Preference'].map(gender_dict)
|
||||
# --------------------------'Job Title'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
jt_dict = {jt: i for i, jt in enumerate(df_job['Job Title'].unique())}
|
||||
# Заменяем значения в столбце "Job Title" соответствующими числовыми идентификаторами
|
||||
df_job['Job Title'] = df_job['Job Title'].map(jt_dict)
|
||||
# --------------------------'Role'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
role_dict = {role: i for i, role in enumerate(df_job['Role'].unique())}
|
||||
# Заменяем значения в столбце "Role" соответствующими числовыми идентификаторами
|
||||
df_job['Role'] = df_job['Role'].map(role_dict)
|
||||
# --------------------------'Job Portal'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
jp_dict = {jp: i for i, jp in enumerate(df_job['Job Portal'].unique())}
|
||||
# Заменяем значения в столбце "Job Portal" соответствующими числовыми идентификаторами
|
||||
df_job['Job Portal'] = df_job['Job Portal'].map(jp_dict)
|
||||
# --------------------------'Company'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
comp_dict = {comp: i for i, comp in enumerate(df_job['Company'].unique())}
|
||||
# Заменяем значения в столбце "Company" соответствующими числовыми идентификаторами
|
||||
df_job['Company'] = df_job['Company'].map(comp_dict)
|
||||
# --------------------------'Company Profile'-------------------------
|
||||
df_company_profile = df_job['Company Profile'].str.split('",', expand=True)
|
||||
df_company_profile.columns = ['Sector', 'Industry', 'City', 'State', 'Zip', 'Website', 'Ticker', 'CEO']
|
||||
df_company_profile = df_company_profile.apply(
|
||||
lambda x: x.str.replace('{', '').str.replace('"', '').str.replace('}', '')
|
||||
.str.replace('Sector', '').str.replace('Industry', '').str.replace('City', '')
|
||||
.str.replace('State', '').str.replace('Zip', '').str.replace('Website', '')
|
||||
.str.replace('Ticker', '').str.replace('CEO', '').str.replace(':', ''))
|
||||
df_company_profile.drop(["CEO", "Website", "Zip"], axis=1, inplace=True)
|
||||
# --------------------------'Sector'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
comp_dict = {sector: i for i, sector in enumerate(df_company_profile['Sector'].unique())}
|
||||
# Заменяем значения в столбце "Sector" соответствующими числовыми идентификаторами
|
||||
df_company_profile['Sector'] = df_company_profile['Sector'].map(comp_dict)
|
||||
# --------------------------'Industry'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
comp_dict = {industry: i for i, industry in enumerate(df_company_profile['Industry'].unique())}
|
||||
# Заменяем значения в столбце "Industry" соответствующими числовыми идентификаторами
|
||||
df_company_profile['Industry'] = df_company_profile['Industry'].map(comp_dict)
|
||||
# --------------------------'City'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
comp_dict = {city: i for i, city in enumerate(df_company_profile['City'].unique())}
|
||||
# Заменяем значения в столбце "City" соответствующими числовыми идентификаторами
|
||||
df_company_profile['City'] = df_company_profile['City'].map(comp_dict)
|
||||
# --------------------------'State'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
comp_dict = {state: i for i, state in enumerate(df_company_profile['State'].unique())}
|
||||
# Заменяем значения в столбце "State" соответствующими числовыми идентификаторами
|
||||
df_company_profile['State'] = df_company_profile['State'].map(comp_dict)
|
||||
# --------------------------'Ticker'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
comp_dict = {ticker: i for i, ticker in enumerate(df_company_profile['Ticker'].unique())}
|
||||
# Заменяем значения в столбце "Ticker" соответствующими числовыми идентификаторами
|
||||
df_company_profile['Ticker'] = df_company_profile['Ticker'].map(comp_dict)
|
||||
# Объединение преобразованных столбцов с исходным датасетом
|
||||
df_job = pd.concat([df_job, df_company_profile], axis=1)
|
||||
# --------------------------'Job Posting Date'-------------------------
|
||||
df_job[['year', 'month', 'day']] = df_job['Job Posting Date'].str.split('-', expand=True)
|
||||
df_job['year'] = pd.to_numeric(df_job['year'])
|
||||
df_job['month'] = pd.to_numeric(df_job['month'])
|
||||
df_job['day'] = pd.to_numeric(df_job['day'])
|
||||
# --------------------------'Benefits'-------------------------
|
||||
df_job['Benefits'] = df_job['Benefits'].str.replace('{', '').str.replace('}', '')
|
||||
# Применить метод get_dummies для оцифровки столбца 'Benefits'
|
||||
benefits_encoded = pd.get_dummies(df_job['Benefits'], dtype=int)
|
||||
# Соединить исходный DataFrame с оцифрованными данными
|
||||
df_job = pd.concat([df_job, benefits_encoded], axis=1)
|
||||
# --------------------------'skills'-------------------------
|
||||
# Создаем словарь для отображения уникальных значений в числовые идентификаторы
|
||||
comp_dict = {skill: i for i, skill in enumerate(df_job['skills'].unique())}
|
||||
# Заменяем значения в столбце "skills" соответствующими числовыми идентификаторами
|
||||
df_job['skills'] = df_job['skills'].map(comp_dict)
|
||||
df_job.drop(["Company Profile", "Experience", "Salary Range", "Benefits", "Job Posting Date"], axis=1, inplace=True)
|
||||
print(df_job.dtypes)
|
||||
df_job.to_csv('D:/Интеллектуальные информационные системы/Dataset/updated_job_descriptions.csv', index=False)
|
||||
|
||||
|
||||
def decision_tree_classifier():
|
||||
data = pd.read_csv('D:/Интеллектуальные информационные системы/Dataset/updated_job_descriptions.csv')
|
||||
corr = data[['location', 'Country', 'Work Type', 'Company Size', 'Preference', 'Job Title', 'Role', 'Job Portal', 'skills', 'Company', 'Min Experience', 'Max Experience', 'Min Salary',
|
||||
'Max Salary', 'Sector', 'Industry', 'City', 'State', 'Ticker', 'year', 'month', 'day',
|
||||
"'Casual Dress Code, Social and Recreational Activities, Employee Referral Programs, Health and Wellness Facilities, Life and Disability Insurance'",
|
||||
"'Childcare Assistance, Paid Time Off (PTO), Relocation Assistance, Flexible Work Arrangements, Professional Development'",
|
||||
"'Employee Assistance Programs (EAP), Tuition Reimbursement, Profit-Sharing, Transportation Benefits, Parental Leave'",
|
||||
"'Employee Referral Programs, Financial Counseling, Health and Wellness Facilities, Casual Dress Code, Flexible Spending Accounts (FSAs)'",
|
||||
"'Flexible Spending Accounts (FSAs), Relocation Assistance, Legal Assistance, Employee Recognition Programs, Financial Counseling'",
|
||||
"'Health Insurance, Retirement Plans, Flexible Work Arrangements, Employee Assistance Programs (EAP), Bonuses and Incentive Programs'",
|
||||
"'Health Insurance, Retirement Plans, Paid Time Off (PTO), Flexible Work Arrangements, Employee Assistance Programs (EAP)'",
|
||||
"'Legal Assistance, Bonuses and Incentive Programs, Wellness Programs, Employee Discounts, Retirement Plans'",
|
||||
"'Life and Disability Insurance, Stock Options or Equity Grants, Employee Recognition Programs, Health Insurance, Social and Recreational Activities'",
|
||||
"'Transportation Benefits, Professional Development, Bonuses and Incentive Programs, Profit-Sharing, Employee Discounts'",
|
||||
"'Tuition Reimbursement, Stock Options or Equity Grants, Parental Leave, Wellness Programs, Childcare Assistance'"]]
|
||||
print(corr.head())
|
||||
# определение целевой переменной
|
||||
y = data['Qualifications']
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(corr.values, y.values, test_size=0.2)
|
||||
# Создание экземпляра классификатора дерева решений
|
||||
clf = DecisionTreeClassifier(random_state=241)
|
||||
# Обучение модели на обучающей выборке
|
||||
clf.fit(X_train, y_train)
|
||||
# Прогнозирование классов для тестовой выборки
|
||||
y_pred = clf.predict(X_test)
|
||||
importances = clf.feature_importances_
|
||||
print("Важность признаков: ")
|
||||
print(importances)
|
||||
print("Отсортированная важность признаков: ")
|
||||
conversion_ratings(importances)
|
||||
|
||||
|
||||
def conversion_ratings(rank):
|
||||
column_names = ['location', 'Country', 'Work Type', 'Company Size', 'Preference', 'Job Title', 'Role', 'Job Portal', 'skills', 'Company', 'Min Experience', 'Max Experience', 'Min Salary',
|
||||
'Max Salary', 'Sector', 'Industry', 'City', 'State', 'Ticker', 'year', 'month', 'day',
|
||||
"'Casual Dress Code, Social and Recreational Activities, Employee Referral Programs, Health and Wellness Facilities, Life and Disability Insurance'",
|
||||
"'Childcare Assistance, Paid Time Off (PTO), Relocation Assistance, Flexible Work Arrangements, Professional Development'",
|
||||
"'Employee Assistance Programs (EAP), Tuition Reimbursement, Profit-Sharing, Transportation Benefits, Parental Leave'",
|
||||
"'Employee Referral Programs, Financial Counseling, Health and Wellness Facilities, Casual Dress Code, Flexible Spending Accounts (FSAs)'",
|
||||
"'Flexible Spending Accounts (FSAs), Relocation Assistance, Legal Assistance, Employee Recognition Programs, Financial Counseling'",
|
||||
"'Health Insurance, Retirement Plans, Flexible Work Arrangements, Employee Assistance Programs (EAP), Bonuses and Incentive Programs'",
|
||||
"'Health Insurance, Retirement Plans, Paid Time Off (PTO), Flexible Work Arrangements, Employee Assistance Programs (EAP)'",
|
||||
"'Legal Assistance, Bonuses and Incentive Programs, Wellness Programs, Employee Discounts, Retirement Plans'",
|
||||
"'Life and Disability Insurance, Stock Options or Equity Grants, Employee Recognition Programs, Health Insurance, Social and Recreational Activities'",
|
||||
"'Transportation Benefits, Professional Development, Bonuses and Incentive Programs, Profit-Sharing, Employee Discounts'",
|
||||
"'Tuition Reimbursement, Stock Options or Equity Grants, Parental Leave, Wellness Programs, Childcare Assistance'"]
|
||||
ranks = dict()
|
||||
ranks = np.abs(rank)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(np.array(ranks).reshape(33, 1)).ravel() # - преобразование данных
|
||||
ranks = map(lambda x: round(x, 2), ranks) # - округление элементов массива
|
||||
my_dict = dict(zip(column_names, ranks))
|
||||
sorted_dict = dict(sorted(my_dict.items(), key=lambda x: x[1], reverse=True))
|
||||
print(sorted_dict)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
#data_preprocessing()
|
||||
decision_tree_classifier()
|
||||
44
kondrashin_mikhail_lab_1/README.md
Normal file
@@ -0,0 +1,44 @@
|
||||
#### Кондрашин Михаил ПИбд-41
|
||||
|
||||
## Лабораторная работа 1. Работа с типовыми наборами данных и различными моделями
|
||||
|
||||
### Задание:
|
||||
|
||||
**Данные:** make_classification (n_samples=500, n_features=2, n_redundant=0, n_informative=2, random_state=rs,
|
||||
n_clusters_per_class=1)
|
||||
|
||||
**Модели:**
|
||||
|
||||
* Линейная регрессия
|
||||
* Полиномиальная регрессия (со степенью 3)
|
||||
* Гребневая полиномиальная регрессия (со степенью 4, alpha = 1.0)
|
||||
|
||||
### Запуск лабораторной работы:
|
||||
|
||||
* установить `python`, `numpy`, `matplotlib`, `sklearn`
|
||||
* запустить проект (стартовая точка класс `main.py`)
|
||||
|
||||
### Используемые технологии:
|
||||
|
||||
* Язык программирования `Python`,
|
||||
* Библиотеки `numpy`, `matplotlib`, `sklearn`
|
||||
* Среда разработки `IntelliJ IDEA` (В версии "Ultimate edition" можно писать на python)
|
||||
|
||||
### Описание решения:
|
||||
|
||||
* Программа генерирует данные с make_classification (n_samples=500, n_features=2, n_redundant=0, n_informative=2,
|
||||
random_state=rs, n_clusters_per_class=1)
|
||||
* Сравнивает три типа моделей: линейная, полиномиальная, гребневая полиномиальная регрессии
|
||||
* Выдает графики и оценки качества по коэффициенту детерминации для каждой модели
|
||||
|
||||
### Результат:
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
* Результат расчета оценки качества:
|
||||

|
||||
|
||||
По результатам оценки качества можно сказать, что **полиномиальная регрессия** показала наибольшую оценку
|
||||
|
||||