Compare commits
89 Commits
verina_dar
...
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 | ||
|
|
cc1802b4f0 | ||
|
|
53818e12e5 | ||
|
|
7c63fc79f6 | ||
| 88f5268b31 | |||
| 3a316d94a1 | |||
| 481a18c68d | |||
| 27d25c8f14 | |||
| 8eb27373e0 | |||
|
|
f0334fdc44 | ||
| 7eda432471 | |||
| ebf64afcf2 | |||
| 637083470c | |||
| c3aa36cc7b | |||
| e80da1c4ce | |||
| 2506e7cd95 | |||
| 6298d561f8 | |||
| 294764b582 | |||
| 54eea76599 | |||
| 4c8da5afb3 | |||
| 21552b4c19 | |||
|
|
220b176be4 | ||
|
|
0d1e5a83f4 | ||
|
|
c4bd132891 |
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])
|
||||
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}")
|
||||
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)
|
||||
* Сравнивает три типа моделей: линейная, полиномиальная, гребневая полиномиальная регрессии
|
||||
* Выдает графики и оценки качества по коэффициенту детерминации для каждой модели
|
||||
|
||||
### Результат:
|
||||
|
||||

|
||||

|
||||

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

|
||||
|
||||
По результатам оценки качества можно сказать, что **полиномиальная регрессия** показала наибольшую оценку
|
||||
|
||||
47
kondrashin_mikhail_lab_1/funcs.py
Normal file
@@ -0,0 +1,47 @@
|
||||
from matplotlib import pyplot as plt
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.linear_model import Ridge
|
||||
from sklearn.pipeline import Pipeline
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
|
||||
|
||||
def lin(x_train, x_test, y_train, y_test):
|
||||
plt.scatter(x_test, y_test)
|
||||
model = LinearRegression().fit(x_train, y_train)
|
||||
y_predict = model.intercept_ + model.coef_ * x_test
|
||||
plt.plot(x_test, y_predict, color='red')
|
||||
plt.title('Линейная регрессия')
|
||||
plt.savefig('images/linear.png')
|
||||
plt.show()
|
||||
|
||||
print('Линейная регрессия')
|
||||
print('Оценка качества:', model.score(x_train, y_train))
|
||||
|
||||
|
||||
def polynom(x_train, y_train):
|
||||
plt.scatter(x_train, y_train)
|
||||
x_poly = PolynomialFeatures(degree=4).fit_transform(x_train)
|
||||
pol_reg = LinearRegression()
|
||||
model = pol_reg.fit(x_poly, y_train)
|
||||
y_predict = pol_reg.predict(x_poly)
|
||||
plt.plot(x_train, y_predict, color='green')
|
||||
plt.title('Полиномиальная регрессия')
|
||||
plt.savefig('images/polynomial.png')
|
||||
plt.show()
|
||||
|
||||
print('Полиномиальная регрессия')
|
||||
print('Оценка качества:', model.score(x_poly, y_train))
|
||||
|
||||
|
||||
def greb_polynom(x_train, x_test, y_train, y_test):
|
||||
plt.scatter(x_test, y_test)
|
||||
pipeline = Pipeline([("polynomial_features", PolynomialFeatures(degree=4)), ("ridge", Ridge(alpha=1.0))])
|
||||
model = pipeline.fit(x_train, y_train)
|
||||
y_predict = pipeline.predict(x_test)
|
||||
plt.plot(x_test, y_predict, color='blue')
|
||||
plt.title('Гребневая полиномиальная регрессия')
|
||||
plt.savefig('images/greb_polynom.png')
|
||||
plt.show()
|
||||
|
||||
print('Гребневая полиномиальная регрессия')
|
||||
print('Оценка качества:', model.score(x_train, y_train))
|
||||
BIN
kondrashin_mikhail_lab_1/images/greb_polynom.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
kondrashin_mikhail_lab_1/images/linear.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
kondrashin_mikhail_lab_1/images/polynomial.png
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
kondrashin_mikhail_lab_1/images/result.png
Normal file
|
After Width: | Height: | Size: 54 KiB |
16
kondrashin_mikhail_lab_1/main.py
Normal file
@@ -0,0 +1,16 @@
|
||||
import numpy as np
|
||||
from sklearn.datasets import make_classification
|
||||
from sklearn.model_selection import train_test_split
|
||||
|
||||
from funcs import *
|
||||
|
||||
x, y = make_classification(n_samples=500, n_features=2, n_redundant=0, n_informative=2, random_state=0,
|
||||
n_clusters_per_class=1)
|
||||
|
||||
x = x[:, np.newaxis, 1]
|
||||
|
||||
x_train, x_test, y_train, y_test = train_test_split(x, y)
|
||||
|
||||
lin(x_train, x_test, y_train, y_test)
|
||||
polynom(x_train, y_train)
|
||||
greb_polynom(x_train, x_test, y_train, y_test)
|
||||
36
kondrashin_mikhail_lab_2/README.md
Normal file
@@ -0,0 +1,36 @@
|
||||
#### Кондрашин Михаил ПИбд-41
|
||||
|
||||
## Лабораторная работа 2. Ранжирование признаков
|
||||
|
||||
### Задание:
|
||||
|
||||
* Линейная регрессия (LinearRegression)
|
||||
* Сокращение признаков случайными деревьями (Random Forest Regressor)
|
||||
* Линейная корреляция (f_regression)
|
||||
|
||||
### Запуск лабораторной работы:
|
||||
|
||||
* установить `python`, `numpy`, `matplotlib`, `sklearn`
|
||||
* запустить проект (стартовая точка класс `main.py`)
|
||||
|
||||
### Используемые технологии:
|
||||
|
||||
* Язык программирования `Python`,
|
||||
* Библиотеки `numpy`, `matplotlib`, `sklearn`
|
||||
* Среда разработки `IntelliJ IDEA` (В версии "Ultimate edition" можно писать на python)
|
||||
|
||||
### Описание решения:
|
||||
|
||||
Программа выполняет ранжирование признаков для регрессионной модели:
|
||||
* Линейная регрессия (LinearRegression)
|
||||
* Сокращение признаков Случайными деревьями (Random Forest Regressor)
|
||||
* Линейная корреляция (f_regression)
|
||||
|
||||
*14 признаков
|
||||
*750 наблюдений
|
||||
|
||||
### Результат:
|
||||

|
||||
* Лучше всего показал себя метод линейной корреляции (x4, x14, x2, x12). Хотя признаки x1 и x3 не были выявлены, их влияние может быть учтено через скоррелированные параметры x12 и x14.
|
||||
* Самые важные признаки по среднему значению: x1, x4, x2, x11
|
||||
|
||||
12
kondrashin_mikhail_lab_2/data.py
Normal file
@@ -0,0 +1,12 @@
|
||||
import numpy as np
|
||||
|
||||
|
||||
def generate_data():
|
||||
size = 750
|
||||
np.random.seed(0)
|
||||
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))
|
||||
|
||||
return X, Y
|
||||
BIN
kondrashin_mikhail_lab_2/images/result.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
22
kondrashin_mikhail_lab_2/main.py
Normal file
@@ -0,0 +1,22 @@
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.feature_selection import f_regression
|
||||
from sklearn.linear_model import LinearRegression
|
||||
|
||||
from data import generate_data
|
||||
from ranks import mean_calc_and_sort, get_ranks
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
x, y = generate_data()
|
||||
|
||||
linear = LinearRegression()
|
||||
linear.fit(x, y)
|
||||
|
||||
rfr = RandomForestRegressor(bootstrap=True)
|
||||
rfr.fit(x, y)
|
||||
|
||||
f, p_val = f_regression(x, y, center=True)
|
||||
|
||||
ranks = get_ranks(linear, rfr, f)
|
||||
|
||||
print("mean", mean_calc_and_sort(ranks))
|
||||
40
kondrashin_mikhail_lab_2/ranks.py
Normal file
@@ -0,0 +1,40 @@
|
||||
import numpy as np
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
|
||||
|
||||
def get_ranks(linear, rfr, f):
|
||||
ranks = dict()
|
||||
features = ["x%s" % i for i in range(1, 15)]
|
||||
|
||||
ranks['Linear'] = rank_to_dict(linear.coef_, features)
|
||||
ranks['RFR'] = rank_to_dict(rfr.feature_importances_, features)
|
||||
ranks['f_reg'] = rank_to_dict(f, features)
|
||||
|
||||
return ranks
|
||||
|
||||
|
||||
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))
|
||||
|
||||
|
||||
def mean_calc_and_sort(ranks):
|
||||
mean = {}
|
||||
|
||||
for key, value in ranks.items():
|
||||
print(key, value)
|
||||
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)
|
||||
|
||||
return mean
|
||||
|
||||
26
kondrashin_mikhail_lab_3/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
#### Кондрашин Михаил ПИбд-41
|
||||
|
||||
## Лабораторная работа 3. Деревья решений
|
||||
|
||||
### Запуск лабораторной работы:
|
||||
|
||||
* установить `python`, `numpy`, `matplotlib`, `sklearn`
|
||||
* запустить проект (стартовая точка класс `main.py`)
|
||||
|
||||
### Используемые технологии:
|
||||
|
||||
* Язык программирования `Python`,
|
||||
* Библиотеки `numpy`, `matplotlib`, `sklearn`
|
||||
* Среда разработки `IntelliJ IDEA` (В версии "Ultimate edition" можно писать на python)
|
||||
|
||||
### Описание решения:
|
||||
|
||||
* Выполняет ранжирование признаков для регрессионной модели
|
||||
* По данным "WindData" решает задачу классификации (с помощью дерева решений), в которой необходимо определить статистические параметры ветра, влияющие на классификацию по каждому из классов интенсивности турбулентности в соответствии с международной классификацией IEC-614000-1 ed.3.
|
||||
|
||||
|
||||
### Результат:
|
||||

|
||||
|
||||
Как видно из результата работы программы - для каждого класса интенсивности турбулентности ключевым является показатель скорости ветра, наиболее выражено это для класса "С", наименее - для класса "B"
|
||||
|
||||
49656
kondrashin_mikhail_lab_3/WindData.csv
Normal file
BIN
kondrashin_mikhail_lab_3/images/result.png
Normal file
|
After Width: | Height: | Size: 79 KiB |
41
kondrashin_mikhail_lab_3/main.py
Normal file
@@ -0,0 +1,41 @@
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
pd.options.mode.chained_assignment = None
|
||||
|
||||
FILE_PATH = "WindData.csv"
|
||||
REQUIRED_COLUMNS = ['TI1', 'V1']
|
||||
TARGET_COLUMN_1 = 'TurbulenceIntensityClassA'
|
||||
TARGET_COLUMN_2 = 'TurbulenceIntensityClassB'
|
||||
TARGET_COLUMN_3 = 'TurbulenceIntensityClassC'
|
||||
|
||||
|
||||
def print_classifier_info(feature_importance):
|
||||
feature_names = REQUIRED_COLUMNS
|
||||
embarked_score = feature_importance[-3:].sum()
|
||||
scores = np.append(feature_importance[:2], embarked_score)
|
||||
scores = map(lambda score: round(score, 2), scores)
|
||||
print(dict(zip(feature_names, scores)))
|
||||
|
||||
|
||||
def actions(target_column):
|
||||
data = pd.read_csv(FILE_PATH)
|
||||
|
||||
X = data[REQUIRED_COLUMNS]
|
||||
y = data[target_column]
|
||||
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=100)
|
||||
|
||||
classifier_tree = DecisionTreeClassifier(random_state=100)
|
||||
classifier_tree.fit(X_train, y_train)
|
||||
|
||||
print_classifier_info(classifier_tree.feature_importances_)
|
||||
print("Оценка качества классификации ", target_column, " - ", classifier_tree.score(X_test, y_test))
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
actions(TARGET_COLUMN_1)
|
||||
actions(TARGET_COLUMN_2)
|
||||
actions(TARGET_COLUMN_3)
|
||||
44
kutygin_andrey_lab_1/README.md
Normal file
@@ -0,0 +1,44 @@
|
||||
**Задание**
|
||||
***
|
||||
|
||||
Вариант 16
|
||||
|
||||
***Данные:*** make_moons (noise=0.3, random_state=rs)
|
||||
|
||||
***Модели:***
|
||||
|
||||
· Линейную регрессию
|
||||
|
||||
· Многослойный персептрон с 10-ю нейронами в скрытом слое (alpha = 0.01)
|
||||
|
||||
· Персептрон
|
||||
|
||||
***Как запустить лабораторную:***
|
||||
***
|
||||
Запустить файл lab1.py
|
||||
|
||||
***Используемые технологии***
|
||||
***
|
||||
Библиотеки numpy, matplotlib, sklearn и их компоненты
|
||||
|
||||
***Описание лабораторной (программы)***
|
||||
***
|
||||
Реализация использования NumPy, Matplotlib и scikit-learn в данном коде позволяет создавать и обучать модели машинного обучения на наборе данных make_moons.
|
||||
|
||||
Первым шагом является генерация набора данных make_moons, которая представляет собой двумерный набор точек, распределенных в форме двух связных полумесяцев. Это набор данных, используемый для задачи классификации.
|
||||
|
||||
Затем модели линейной регрессии, многослойного персептрона и персептрона обучаются на этом наборе данных. В процессе обучения модели адаптируют свои внутренние параметры для предсказания целевых значений.
|
||||
|
||||
После обучения моделей создается сетка точек, чтобы предсказать значения моделей на этой сетке. Это позволяет визуализировать, как модели классифицируют пространство точек.
|
||||
|
||||
В конце кода данные и предсказания моделей визуализируются на графиках. Это позволяет сравнить и оценить, насколько хорошо каждая модель справляется с задачей классификации и как они различаются друг от друга.
|
||||
|
||||
***Результат***
|
||||
***
|
||||
В результате программа выводит графики и оценки производительности обучения, полученные через model.score библиотеки sclearn.
|
||||
|
||||
Линейная регрессия: 0.5453845246295626
|
||||
|
||||
Многослойный персептрон: 0.10895145407108087
|
||||
|
||||
Персептрон: 0.5
|
||||
55
kutygin_andrey_lab_1/lab1.py
Normal file
@@ -0,0 +1,55 @@
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn.datasets import make_moons
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.neural_network import MLPClassifier, MLPRegressor
|
||||
from sklearn.metrics import accuracy_score, mean_squared_error
|
||||
|
||||
|
||||
X, y = make_moons(noise=0.3, random_state=42)
|
||||
|
||||
# Линейная регрессия
|
||||
lr = LinearRegression()
|
||||
lr.fit(X, y)
|
||||
|
||||
# Многослойный персептрон
|
||||
mlp = MLPRegressor(hidden_layer_sizes=(10,), alpha=0.01, random_state=42)
|
||||
mlp.fit(X, y)
|
||||
|
||||
# Персептрон
|
||||
perceptron = MLPClassifier(hidden_layer_sizes=(1,), random_state=42)
|
||||
perceptron.fit(X, y)
|
||||
|
||||
# Создаем сетку точек для предсказания моделей
|
||||
xx, yy = np.meshgrid(np.linspace(-2, 3, 1000), np.linspace(-2, 2, 1000))
|
||||
Z_lr = lr.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
|
||||
Z_mlp = mlp.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
|
||||
Z_perceptron = perceptron.predict(np.c_[xx.ravel(), yy.ravel()]).reshape(xx.shape)
|
||||
|
||||
# Отображаем данные и предсказания моделей
|
||||
plt.figure(figsize=(18, 6))
|
||||
|
||||
# График линейной регрессии
|
||||
plt.subplot(1, 3, 1)
|
||||
plt.contourf(xx, yy, Z_lr, cmap=plt.cm.RdBu, alpha=0.8)
|
||||
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.RdBu, edgecolors='k')
|
||||
plt.title("Линейная регрессия")
|
||||
|
||||
# График многослойного персептрона
|
||||
plt.subplot(1, 3, 2)
|
||||
plt.contourf(xx, yy, Z_mlp, cmap=plt.cm.RdBu, alpha=0.8)
|
||||
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.RdBu, edgecolors='k')
|
||||
plt.title("Многослойный персептрон")
|
||||
|
||||
# График персептрона
|
||||
plt.subplot(1, 3, 3)
|
||||
plt.contourf(xx, yy, Z_perceptron, cmap=plt.cm.RdBu, alpha=0.8)
|
||||
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.RdBu, edgecolors='k')
|
||||
plt.title("Персептрон")
|
||||
|
||||
print("Линейная регрессия:", lr.score(X, y))
|
||||
print("Многослойный персептрон:", mlp.score(X, y))
|
||||
print("Персептрон:", perceptron.score(X, y))
|
||||
|
||||
# Показываем графики
|
||||
plt.show()
|
||||
71
kutygin_andrey_lab_2/README.md
Normal file
@@ -0,0 +1,71 @@
|
||||
**Задание**
|
||||
***
|
||||
Используя код из пункта «Решение задачи ранжирования признаков», выполните ранжирование признаков с помощью указанных по варианту моделей. Отобразите получившиеся оценки каждого признака каждой моделью и среднюю оценку. Проведите анализ получившихся результатов. Какие четыре признака оказались самыми важными по среднему значению? (Названия\индексы признаков и будут ответом на задание).
|
||||
|
||||
**Вариант 16:**
|
||||
|
||||
Линейная регрессия (LinearRegression)
|
||||
|
||||
Случайное Лассо (RandomizedLasso)
|
||||
|
||||
Линейная корреляция (f_regression)
|
||||
|
||||
|
||||
**Как запустить лабораторную**
|
||||
***
|
||||
Запустить файл main.py
|
||||
|
||||
**Используемые технологии**
|
||||
***
|
||||
Библиотеки numpy, scikit-learn, их компоненты
|
||||
|
||||
**Описание лабораторной (программы)**
|
||||
***
|
||||
Этот код демонстрирует, как выполнить ранжирование признаков в задаче регрессии с использованием моделей Linear Regression и Random Forest Regression, а также метода f_regression.
|
||||
|
||||
Первым этапом является создание случайных данных с помощью функции make_regression. Затем мы обучаем модель Linear Regression на этих данных и сохраняем оценки весов признаков. То же самое мы делаем и с моделью Random Forest Regression, сохраняя значения "важности" признаков, полученные от этой модели. Кроме того, мы применяем метод f_regression для получения оценок важности каждого признака.
|
||||
|
||||
Далее мы вычисляем среднее значение оценок признаков от трех методов / моделей. Затем мы выводим все оценки важности признаков.
|
||||
|
||||
В конце кода мы выбираем четыре наиболее важных признака на основе средних оценок и выводим их значения.
|
||||
|
||||
Важность признака определяется по его оценке/значению, где более высокие значения указывают на бОльшую важность. Очевидно, что самые важные признаки будут те, у которых оценки/значения выше всего.
|
||||
**Результат**
|
||||
***
|
||||
В результате получаем следующее:
|
||||
|
||||
Признак 0: 0.8672604223819891
|
||||
|
||||
Признак 1: 0.7708510602186707
|
||||
|
||||
Признак 2: 0.03116023013554309
|
||||
|
||||
Признак 3: 0.6998726361290992
|
||||
|
||||
Признак 4: 1.0
|
||||
|
||||
Признак 5: 0.08986896281166205
|
||||
|
||||
Признак 6: 0.669155851030746
|
||||
|
||||
Признак 7: 0.1410044322180913
|
||||
|
||||
Признак 8: 0.043892111747763814
|
||||
|
||||
Признак 9: 0.5011547461825057
|
||||
|
||||
4 Наиболее значимых признака:
|
||||
|
||||
Признак 3: 0.6998726361290992
|
||||
|
||||
Признак 1: 0.7708510602186707
|
||||
|
||||
Признак 0: 0.8672604223819891
|
||||
|
||||
Признак 4: 1.0
|
||||
|
||||
Вывод: Исходя из выполненного кода, мы получили оценки важности признаков для задачи регрессии с использованием моделей Linear Regression, Random Forest Regression и метода f_regression.
|
||||
|
||||
Наиболее важные признаки, определенные на основе средних оценок, оказались: признак 1, признак 6, признак 0 и признак 4.
|
||||
|
||||
Эти признаки имеют наибольшее влияние на результат задачи регрессии и следует обратить на них особое внимание при анализе данных и принятии решений.
|
||||
42
kutygin_andrey_lab_2/lab2.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import numpy as np
|
||||
from sklearn.datasets import make_regression
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.feature_selection import f_regression
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
|
||||
# Создание случайных данных
|
||||
X, y = make_regression(n_samples=100, n_features=10, random_state=42)
|
||||
|
||||
# Масштабирование признаков
|
||||
scaler = MinMaxScaler()
|
||||
X_scaled = scaler.fit_transform(X)
|
||||
|
||||
# Ранжирование признаков с помощью Linear Regression
|
||||
linreg = LinearRegression()
|
||||
linreg.fit(X_scaled, y)
|
||||
linreg_scores = np.abs(linreg.coef_)
|
||||
|
||||
# Ранжирование признаков с помощью Random Forest Regression
|
||||
rfreg = RandomForestRegressor()
|
||||
rfreg.fit(X_scaled, y)
|
||||
rfreg_scores = rfreg.feature_importances_
|
||||
|
||||
# Ранжирование признаков с помощью f_regression
|
||||
freg_scores, _ = f_regression(X_scaled, y)
|
||||
|
||||
# Вычисление средней оценки
|
||||
avg_scores = np.mean([linreg_scores, rfreg_scores, freg_scores], axis=0)
|
||||
|
||||
# Масштабирование score в интервал от 0 до 1
|
||||
scaled_scores = avg_scores / np.max(avg_scores)
|
||||
|
||||
# Вывод результатов
|
||||
for i, score in enumerate(scaled_scores):
|
||||
print(f"Признак {i}: {score}")
|
||||
|
||||
# Получение индексов четырех наиболее важных признаков
|
||||
top_features_indices = np.argsort(scaled_scores)[-4:]
|
||||
print("4 Наиболее значимых признака:")
|
||||
for idx in top_features_indices:
|
||||
print(f"Признак {idx}: {scaled_scores[idx]}")
|
||||
57
malkova_anastasia_lab_2/README.md
Normal file
@@ -0,0 +1,57 @@
|
||||
# Лабораторная работа №2
|
||||
|
||||
> Ранжирование признаков
|
||||
|
||||
### Как запустить лабораторную работу
|
||||
|
||||
1. Установить python, numpy, sklearn
|
||||
2. Запустить команду `python main.py` в корне проекта
|
||||
|
||||
### Использованные технологии
|
||||
|
||||
* Язык программирования `python`
|
||||
* Библиотеки `numpy, sklearn`
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает программа?
|
||||
|
||||
Выполняет ранжирование 14 признаков для регрессионной проблемы Фридмана с помощью моделей:
|
||||
|
||||
- Лассо (Lasso)
|
||||
- Рекурсивное сокращение признаков (Recursive Feature Elimination – RFE)
|
||||
- Линейная корреляция (f_regression)
|
||||
|
||||
Было проведено несколько экспериментов с разными параметрами моделей, чтобы оценить их влияние на итоговый результат:
|
||||
|
||||
#### Тест 1
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### Тест 2
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### Тест 3
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
#### Тест 4
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
Первые 2 эксперимента выявили, что признаки x4, x2, x1, x5 оказались самыми важными по среднему значению.
|
||||
|
||||
Другие 2 эксперимента выявили, что признаки x4, x2, x1, x11 оказались самыми важными по среднему значению.
|
||||
|
||||
Так как мы изначально знаем, что от признаков x1, x2, x3, x4 зависит наша функция и x11, x12, x13, x14 соответсвенно зависят от них, то лучшим исходом будут эти признаки.
|
||||
Но ни один эксперимент не смог точно их выявить. Лучшими оказались эксперименты 3 и 4, так как в отличии от 1-го и 2-го они выявили ещё признак x11 вместо x5, который не влияет на нашу функцию вообще.
|
||||
|
||||
Из данных моделей лучше всего определила признаки модель Lasso с alpha=0.001
|
||||
5
malkova_anastasia_lab_2/config.py
Normal file
@@ -0,0 +1,5 @@
|
||||
LASSO_TITLE = 'LASSO'
|
||||
RFE_TITLE = 'RFE'
|
||||
F_REGRESSION_TITLE = 'f_regression'
|
||||
|
||||
FEATURES_AMOUNT = 14
|
||||
14
malkova_anastasia_lab_2/dataset.py
Normal file
@@ -0,0 +1,14 @@
|
||||
import config
|
||||
import numpy as np
|
||||
|
||||
|
||||
def generate_dataset():
|
||||
np.random.seed(0)
|
||||
size = 750
|
||||
x = np.random.uniform(0, 1, (size, config.FEATURES_AMOUNT))
|
||||
# Задаем функцию-выход: регрессионную проблему Фридмана
|
||||
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))
|
||||
return x, y
|
||||
BIN
malkova_anastasia_lab_2/exp_1.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
malkova_anastasia_lab_2/exp_2.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
malkova_anastasia_lab_2/exp_3.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
malkova_anastasia_lab_2/exp_4.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
malkova_anastasia_lab_2/exp_console_1.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
BIN
malkova_anastasia_lab_2/exp_console_2.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
malkova_anastasia_lab_2/exp_console_3.png
Normal file
|
After Width: | Height: | Size: 34 KiB |
BIN
malkova_anastasia_lab_2/exp_console_4.png
Normal file
|
After Width: | Height: | Size: 33 KiB |
15
malkova_anastasia_lab_2/fit.py
Normal file
@@ -0,0 +1,15 @@
|
||||
from sklearn.linear_model import Lasso
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.feature_selection import RFE, f_regression
|
||||
|
||||
|
||||
def fit_models(x, y):
|
||||
lasso = Lasso(alpha=0.001)
|
||||
lasso.fit(x, y)
|
||||
|
||||
rfe = RFE(lasso, step=2)
|
||||
rfe.fit(x, y)
|
||||
|
||||
f, val = f_regression(x, y, center=False)
|
||||
|
||||
return lasso, rfe, f
|
||||
13
malkova_anastasia_lab_2/main.py
Normal file
@@ -0,0 +1,13 @@
|
||||
from dataset import generate_dataset
|
||||
from fit import fit_models
|
||||
from ranks import calc_mean, get_ranks
|
||||
|
||||
x, y = generate_dataset()
|
||||
|
||||
lasso, rfe, f = fit_models(x, y)
|
||||
|
||||
ranks = get_ranks(lasso, rfe, f)
|
||||
|
||||
mean = calc_mean(ranks)
|
||||
|
||||
print("MEAN", mean)
|
||||
42
malkova_anastasia_lab_2/ranks.py
Normal file
@@ -0,0 +1,42 @@
|
||||
import config
|
||||
import numpy as np
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
from operator import itemgetter
|
||||
|
||||
|
||||
def rank_to_dict(ranks, names):
|
||||
ranks = np.abs(ranks)
|
||||
minmax = MinMaxScaler()
|
||||
ranks = minmax.fit_transform(
|
||||
np.array(ranks).reshape(config.FEATURES_AMOUNT, 1)).ravel()
|
||||
ranks = map(lambda x: round(x, 2), ranks)
|
||||
return dict(zip(names, ranks))
|
||||
|
||||
|
||||
def flip_array(arr):
|
||||
return-1 * arr + np.max(arr)
|
||||
|
||||
|
||||
def get_ranks(lasso, rfe, f):
|
||||
ranks = dict()
|
||||
names = ["x%s" % i for i in range(1, config.FEATURES_AMOUNT+1)]
|
||||
|
||||
ranks[config.LASSO_TITLE] = rank_to_dict(lasso.coef_, names)
|
||||
ranks[config.RFE_TITLE] = rank_to_dict(flip_array(rfe.ranking_), names)
|
||||
ranks[config.F_REGRESSION_TITLE] = rank_to_dict(f, names)
|
||||
|
||||
return ranks
|
||||
|
||||
|
||||
def calc_mean(ranks):
|
||||
mean = {}
|
||||
for key, value in ranks.items():
|
||||
print(key, value)
|
||||
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)
|
||||
return sorted(mean.items(), key=itemgetter(1), reverse=True)
|
||||
83
malkova_anastasia_lab_3/README.md
Normal file
@@ -0,0 +1,83 @@
|
||||
# Лабораторная работа №3
|
||||
|
||||
> Деревья решений
|
||||
|
||||
### Как запустить лабораторную работу
|
||||
|
||||
1. Установить python, numpy, sklearn
|
||||
1. Для запуска на наборе данных первого задания `python titanic.py`
|
||||
1. Для запуска на наборе данных второго задания `python cars.py`
|
||||
|
||||
### Использованные технологии
|
||||
|
||||
* Язык программирования `python`
|
||||
* Библиотеки `numpy, sklearn`
|
||||
* Среда разработки `PyCharm`
|
||||
|
||||
### Что делает программа?
|
||||
|
||||
#### Часть 1
|
||||
|
||||
По данным о пассажирах Титаника решите задачу классификации (с помощью дерева решений), в которой по различным характеристикам пассажиров требуется найти у выживших пассажиров два наиболее важных признака из трех рассматриваемых (по варианту).
|
||||
|
||||
Вариант 18 Pclass, Age, Ticket.
|
||||
|
||||
Была использована модель DecisionTreeClassifier
|
||||
|
||||
#### Набор данных titanic.csv
|
||||
|
||||

|
||||
|
||||
Оценка модели 0.68
|
||||
|
||||
2 ключевых параметра, выделенных моделью: Age, Ticket(Fare)
|
||||
|
||||
#### Часть 2
|
||||
|
||||
Решите с помощью библиотечной реализации дерева решений задачу из лабораторной работы «Веб-сервис «Дерево решений» по предмету «Методы искусственного интеллекта» на 99% ваших данных. Проверьте работу модели на оставшемся проценте, сделайте вывод.
|
||||
|
||||
#### Данные
|
||||
|
||||
Набор данных о машинах на вторичном рынке.
|
||||
> Ссылка на набор данных: https://www.kaggle.com/datasets/harikrishnareddyb/used-car-price-predictions
|
||||
|
||||
#### Цель
|
||||
|
||||
С помощью дерева решений классифицировать цену автомобилей
|
||||
|
||||
#### Модель
|
||||
|
||||
Модель использованная в ходе эксперимента DecisionTreeClassifier из пакета sklearn
|
||||
|
||||
#### Набор данных true_car_listings.csv
|
||||
|
||||

|
||||
|
||||
Выбранный начальный набор параметров:
|
||||
|
||||
- Mileage
|
||||
- Year
|
||||
- Model
|
||||
|
||||
**Количество данных:**
|
||||
[30000 rows x 3 columns]
|
||||
|
||||
**Оценка:**
|
||||
0.01
|
||||
|
||||
**Важность параметров:**
|
||||
[0.8780813 0.04707369 0.074845 ]
|
||||
|
||||
Качество неудовлетворительное.
|
||||
|
||||
Параметр, имеющий самую большую значимость: Mileage(пробег)
|
||||
|
||||
### Вывод
|
||||
|
||||
Главный вывод работы, состоит в том, что модель DecisionTreeClassifier
|
||||
не подходит для решения 2 части данной задачи, поэтому решение не может быть применено на практике.
|
||||
|
||||
Причина низкой точности модели заключается в том, что цена автомобиля на вторичном рынке зависит не только от пробега,
|
||||
но и от множества других факторов, таких как кол-во аварий, общего состояние автомобиля и экономической обстановке на рынке -
|
||||
и эти фаткоры могут оказывать такое же существенное воздействие на конечную цену. Однако, можно сделать выводы по влиянию
|
||||
пробега автомобиля на его стоимость и использовать это в дальнейшем при реализации задач.
|
||||
BIN
malkova_anastasia_lab_3/cars.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
30
malkova_anastasia_lab_3/cars.py
Normal file
@@ -0,0 +1,30 @@
|
||||
import pandas as pd
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
from sklearn.model_selection import train_test_split
|
||||
|
||||
slice_size = 30000
|
||||
data = pd.read_csv('true_car_listings.csv', index_col='Vin')[:slice_size]
|
||||
|
||||
unique_numbers = list(set(data['Model']))
|
||||
data['Model'] = data['Model'].apply(unique_numbers.index)
|
||||
|
||||
clf = DecisionTreeClassifier(random_state=341)
|
||||
|
||||
# Выбираем параметры
|
||||
Y = data['Price']
|
||||
X = data[['Mileage', 'Year', 'Model']]
|
||||
print(X)
|
||||
|
||||
# Разделяем набор на тренировочные и тестовые данные
|
||||
X_train, X_test, y_train, y_test = train_test_split(
|
||||
X, Y, test_size=0.2, random_state=42)
|
||||
|
||||
# Запуск на тренировочных данных
|
||||
clf.fit(X_train, y_train)
|
||||
|
||||
# Точность модели
|
||||
print(f'Score: {clf.score(X_test, y_test)}')
|
||||
|
||||
# Значимость параметров
|
||||
importances = clf.feature_importances_
|
||||
print(f'Means {importances}')
|
||||
1310
malkova_anastasia_lab_3/titanic.csv
Normal file
BIN
malkova_anastasia_lab_3/titanic.png
Normal file
|
After Width: | Height: | Size: 36 KiB |
26
malkova_anastasia_lab_3/titanic.py
Normal file
@@ -0,0 +1,26 @@
|
||||
import pandas as pd
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
from sklearn.model_selection import train_test_split
|
||||
|
||||
data = pd.read_csv('titanic.csv', index_col='Passengerid')
|
||||
clf = DecisionTreeClassifier(random_state=241)
|
||||
|
||||
# Выбираем параметры
|
||||
Y = data['2urvived']
|
||||
X = data[['Pclass', 'Age', 'Fare', ]]
|
||||
print(X)
|
||||
|
||||
# Разделяем набор на тренировочные и тестовые данные
|
||||
X_train, X_test, y_train, y_test = train_test_split(
|
||||
X, Y, test_size=0.05, random_state=42)
|
||||
|
||||
# Запуск на тренировочных данных
|
||||
clf.fit(X_train, y_train)
|
||||
|
||||
# Точность модели
|
||||
print(f'Score: {clf.score(X_test, y_test)}')
|
||||
|
||||
# Значимость параметров
|
||||
importances = clf.feature_importances_
|
||||
print(f'Means: {importances}')
|
||||
|
||||
852123
malkova_anastasia_lab_3/true_car_listings.csv
Normal file
43
martysheva_tamara_lab_3/README.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# Лабораторная работа 3. Деревья решений
|
||||
### Вариант № 18
|
||||
Решите с помощью библиотечной реализации дерева решений задачу
|
||||
из лабораторной работы «Веб-сервис «Дерево решений» по предмету
|
||||
«Методы искусственного интеллекта» на 99% ваших данных.
|
||||
Проверьте работу модели на оставшемся проценте, сделайте вывод.
|
||||
|
||||
***
|
||||
## *Как запустить лабораторную работу:*
|
||||
Чтобы запустить программу, открываем файл lab3 в PyCharm и нажимаем на зеленый треугольник в правом верхнем углу.
|
||||
***
|
||||
## *Использованные технологии:*
|
||||
**Scikit-learn** - один из наиболее широко используемых пакетов Python для Data Science и Machine Learning. Он позволяет выполнять множество операций и предоставляет множество алгоритмов.
|
||||
|
||||
**Pandas** — это библиотека с открытым исходным кодом, предоставляющая высокопроизводительные, простые в использовании структуры данных и инструменты анализа данных для языка программирования Python.
|
||||
|
||||
***
|
||||
## *Что делает ЛР:*
|
||||
В данной работе анализируется работа дерева решений DecisionTreeClassifier и решается задача классификации ответчиков на регулярно занимающихся
|
||||
и не занимающихся физическими упражнениями на основе характеристик. Имеется набор данных (clean_data),
|
||||
содержащий результаты опроса добровольцев на тему их состояния здоровья. Были выбраны 5 признаков:
|
||||
* age - возраст респондента;
|
||||
* weight - вес респондента;
|
||||
* work - уровень физ. активности на работе;
|
||||
* phy_health - оценка состояния здоровья;
|
||||
* gymtime - время, проведенное в тренажерном зале.
|
||||
|
||||
Среди них необходимо выявить 2 наиболее важных признака по целевой переменной exercise_reg - занимается или не занимается респондент физ. упражнениями,
|
||||
построенной на основе признака phy_ex - оценка важности физических упражнений. Значение exercise_reg = 1, если значение phy_ex >= 7, и 0 - в остальных случаях.
|
||||
Необходимо обучить модель на 99% данных и оценить качество модели на оставшемся проценте.
|
||||
|
||||
**Результатом работы программы** являются: вывод первых 15 строк подготовленных данных, вывод оценок важности признаков и вывод оценки качества модели (в консоли).
|
||||
***
|
||||
## *Пример выходных данных:*
|
||||
>Вывод в консоли:
|
||||
|
||||

|
||||
***
|
||||
**Вывод**:
|
||||
|
||||
Модель DecisionTreeClassifier выделила 2 наиболее важных параметра, а именно **вес** и **оценка важности физ. упражнений**, остальные
|
||||
признаки имеют минимальную значимость, однако возраст достаточно близок по оценке важности к весу. Оценка качества модели говорит о том, что
|
||||
модель достаточно точно предсказывает классы для данных по характеристикам.
|
||||
262
martysheva_tamara_lab_3/clean_data.csv
Normal file
@@ -0,0 +1,262 @@
|
||||
"","ts","age","sex","work","phy_ff","phy_health","phy_bw","phy_ex","meal","height","weight","exercise","fruit","veg","cook","spend","income","gymtime","disease","review","rate"
|
||||
"2","2021-10-19 20:05:43",21,"Male","Moderate",7,8,6,7,"5",182.88,76,"Others",1,2,1,1000,50000,"Not at all","No","",4
|
||||
"3","2021-10-19 20:18:40",23,"Male","Moderate",6,9,8,8,"5",170.688,70,"Others",1,2,4,300,6500,"1 Hour","No","",5
|
||||
"4","2021-10-20 11:03:47",21,"Male","Moderate",7,6,7,8,"5+",182.88,77,"Walk, Run, Outdoor Games, Others",1,2,2,3000,50000,"Not at all","No","",5
|
||||
"5","2021-10-20 11:06:04",23,"Male","Moderate",6,9,8,8,"5",170.688,70,"Walk, Weight lifting, Outdoor Games, Others",0,2,3,500,6500,"1 Hour","No","It's really good.",5
|
||||
"6","2021-10-20 11:19:54",22,"Male","Moderate",2,2,2,2,"2",170.688,85,"Walk, Do not interested",1,1,1,0,100000,"Not at all","Nahi","",5
|
||||
"7","2021-10-20 11:44:06",22,"Male","Moderate",3,4,3,4,"5",182.88,101,"Run, Outdoor Games",0,3,1,500,35000,"Not at all","No","",5
|
||||
"8","2021-10-20 11:44:44",21,"Male","Moderate",9,9,10,8,"5",173.736,60,"Run, Outdoor Games",1,2,1,2000,50000,"Not at all","No","",5
|
||||
"9","2021-10-20 11:45:38",21,"Male","Hardwork",2,3,3,2,"4",155.448,55,"Walk",1,0,1,0,35000,"Not at all","No","",4
|
||||
"10","2021-10-20 11:46:49",21,"Male","Moderate",3,2,3,1,"5+",173.736,69,"Walk, Run, Outdoor Games",1,2,1,0,1000000,"Not at all","No","",4
|
||||
"11","2021-10-20 11:47:29",22,"Male","Moderate",6,7,10,10,"5",182.88,78,"Others",4,4,3,0,200000,"Not at all","No","Welcome",5
|
||||
"12","2021-10-20 11:48:16",23,"Male","Moderate",7,6,6,8,"5",176.784,65,"Walk, Run, Outdoor Games",4,4,2,1000,30000,"Not at all","No","",3
|
||||
"13","2021-10-20 11:48:28",21,"Male","Moderate",3,4,4,4,"4",170.688,80,"Others",1,2,0,0,150000,"Not at all","Cough and cold","It's nearly impossible for someone to know their exact family income. So that should have been in groups like
|
||||
Below 10,000
|
||||
10,000-30,000
|
||||
30,000-60,000
|
||||
Above 60,000",3
|
||||
"14","2021-10-20 11:50:53",22,"Male","Moderate",4,6,7,5,"5",179.832,58,"Walk, Others",1,2,0,500,150000,"Not at all","Alopecia Totalis","",4
|
||||
"15","2021-10-20 11:55:03",26,"Male","Moderate",3,2,4,3,"4",158.496,53,"Outdoor Games, Others",0,2,1,0,50000,"Not at all","Cholesterol","",4
|
||||
"16","2021-10-20 11:57:30",22,"Male","Moderate",2,2,3,2,"5",173.736,72,"Walk, Outdoor Games",1,2,1,0,50000,"Not at all","Hyperthyroidism","",4
|
||||
"17","2021-10-20 12:01:13",23,"Male","Moderate",3,2,2,3,"4",182.88,72,"Run, Outdoor Games, Others",1,2,0,0,10000,"Not at all","No","",4
|
||||
"18","2021-10-20 12:04:42",23,"Male","Moderate",8,6,7,4,"5",125.2728,48,"Walk, Outdoor Games",1,3,1,0,5000,"Not at all","No","",4
|
||||
"19","2021-10-20 12:07:32",22,"Female","Moderate",1,4,4,1,"5+",161.544,72,"Walk, Others",1,2,3,0,50000,"Not at all","No","You should've given income range. ",3
|
||||
"20","2021-10-20 12:07:40",24,"Male","Moderate",7,5,10,10,"4",167.64,82,"Walk, Run, Weight lifting, Outdoor Games",1,3,0,2000,32000,"1 Hour","Asthma","Questionnaire forming is good",4
|
||||
"21","2021-10-20 12:15:47",22,"Male","Sedentary",4,7,7,5,"4",176.784,63,"Walk, Outdoor Games, Others",1,2,3,0,10000,"Not at all","Nope","",3
|
||||
"22","2021-10-20 12:20:34",22,"Male","Moderate",4,5,1,3,"5",176.784,71,"Walk, Run, Swim",1,2,5,0,26000,"Not at all","Stomach problems, basically Digestion problem.","much good",5
|
||||
"23","2021-10-20 12:25:37",21,"Male","Hardwork",3,4,4,3,"5",179.832,74,"Walk, Others",1,2,0,500,30000,"Not at all","Lower back pain","Home exercise should be considered in the fitness. Training option",4
|
||||
"24","2021-10-20 12:30:44",22,"Male","Moderate",7,10,10,10,"4",173.736,78,"Walk, Run, Weight lifting",0,2,1,1000,80000,"2 Hour","Common cold","Go ahead w your project . All the best .",4
|
||||
"25","2021-10-20 13:00:29",20,"Male","Moderate",7,5,7,6,"5",173.736,60,"Walk, Run, Outdoor Games",1,3,3,0,40000,"Not at all","no","",4
|
||||
"26","2021-10-20 13:01:48",23,"Male","Moderate",7,6,9,9,"4",188.976,78,"Run, Weight lifting",1,2,1,500,85000,"1 Hour","No","",5
|
||||
"27","2021-10-20 13:08:54",20,"Male","Moderate",5,4,8,5,"4",155.448,55,"Walk, Others",1,1,0,0,22500,"Not at all","Hyperthyroidism","",5
|
||||
"28","2021-10-20 13:17:33",23,"Male","Moderate",8,3,8,7,"4",176.784,70,"Walk, Run, Weight lifting",1,2,1,1000,5000,"Not at all","No","",5
|
||||
"29","2021-10-20 14:27:29",22,"Male","Hardwork",2,2,3,3,"5",155.7528,64,"Walk, Run, Swim",2,2,2,500,15000,"Not at all","Appendicitis","",5
|
||||
"30","2021-10-20 14:50:44",20,"Male","Moderate",8,8,6,9,"5",155.7528,95,"Walk",1,2,0,0,35000,"Not at all","No","",5
|
||||
"31","2021-10-20 14:53:47",21,"Male","Moderate",3,3,3,2,"2",179.832,65,"Walk, Outdoor Games",1,2,1,0,0,"Not at all","No","",3
|
||||
"32","2021-10-20 14:56:35",21,"Male","Moderate",2,5,6,2,"5",164.592,52,"Walk, Run, Swim",4,4,0,500,40000,"Not at all","Cold","It's a good experience",5
|
||||
"33","2021-10-20 15:02:49",21,"Male","Moderate",3,4,1,3,"2",179.832,95,"Walk",1,1,2,0,80000,"Not at all","No","",5
|
||||
"34","2021-10-20 15:34:32",28,"Female","Hardwork",3,3,4,4,"4",121.92,40,"Walk, Run, Others",3,3,0,10000,50000,"More than 3 hours","Migraine","Thanks",5
|
||||
"35","2021-10-20 15:36:13",24,"Male","Sedentary",3,3,2,2,"5",158.496,50,"Run, Outdoor Games",1,2,1,100,30000,"Not at all","No","",4
|
||||
"36","2021-10-20 15:41:09",22,"Male","Moderate",4,6,8,4,"4",164.592,88,"Do not interested",0,3,1,300,16000,"Not at all","No","I would specify there should be an others section in gender .",4
|
||||
"37","2021-10-20 15:54:06",22,"Female","Moderate",2,4,3,2,"5",164.592,65,"Dance",2,2,1,0,35000,"Not at all","No","Interesting ",4
|
||||
"38","2021-10-20 17:17:30",18,"Female","Hardwork",3,2,4,3,"5",170.688,56,"Walk, Others",2,3,0,5000,2200000,"1 Hour","No","",5
|
||||
"39","2021-10-20 19:16:57",23,"Male","Moderate",6,9,10,10,"4",179.832,84,"Weight lifting, Outdoor Games",0,1,2,2000,30000,"2 Hour","No","Good",4
|
||||
"40","2021-10-20 21:04:27",22,"Male","Moderate",3,3,4,3,"5",173.736,90,"Run",3,3,1,500,40000,"Not at all","No","",5
|
||||
"41","2021-10-21 09:01:29",21,"Male","Moderate",5,7,6,4,"5+",155.448,95,"Do not interested",0,4,2,0,35500,"Not at all","Weak Stomach","",4
|
||||
"42","2021-10-21 09:20:34",20,"Male","Moderate",9,8,10,10,"5+",155.7528,70,"Walk, Outdoor Games, Others",3,4,4,200,5000,"Not at all","No","",5
|
||||
"43","2021-10-21 11:24:37",21,"Female","Sedentary",5,5,5,5,"5",161.544,49,"Dance",2,4,3,100,20000,"Not at all","No","No ",5
|
||||
"44","2021-10-23 18:45:38",21,"Male","Moderate",7,5,6,7,"4",182.88,72,"Outdoor Games",0,3,3,0,11000,"Not at all","no","",5
|
||||
"45","2021-10-23 23:17:57",22,"Male","Moderate",7,2,9,10,"5+",173.736,60,"Walk, Run, Outdoor Games, Others",2,3,1,3000,27000,"1 Hour","No","",5
|
||||
"46","2021-10-20 11:25:38",24,"Male","Moderate",2,2,3,3,"4",173.736,73,"Others",0,1,1,1000,12000,"Not at all","No","",4
|
||||
"47","2021-10-20 11:26:15",24,"Female","Moderate",2,3,2,3,"5",164.592,69,"Walk, Dance, Outdoor Games, Others",0,2,1,0,10000,"Not at all","No","",3
|
||||
"48","2021-10-20 11:30:49",20,"Male","Hardwork",5,10,10,10,"5",167.64,70,"Walk, Run",3,5,5,0,30000,"Not at all","No","Very goodod survey it was.",5
|
||||
"49","2021-10-20 11:39:07",20,"Male","Moderate",3,3,2,1,"5+",155.7528,85,"Walk, Weight lifting",1,2,1,200,90000,"Not at all","No","✌🏻",5
|
||||
"50","2021-10-20 11:39:28",20,"Male","Moderate",2,2,4,4,"4",170.688,58,"Walk, Weight lifting, Others",1,2,0,0,10000,"1 Hour","Sinusitis ","",3
|
||||
"51","2021-10-20 11:39:41",21,"Male","Hardwork",9,8,9,9,"3",182.88,85,"Walk, Outdoor Games",4,4,4,2000,0,"2 Hour","No","Thanks",5
|
||||
"52","2021-10-20 11:41:26",25,"Male","Moderate",5,6,7,6,"5",164.592,55,"Walk, Run",1,2,1,200,20000,"Not at all","No","",2
|
||||
"53","2021-10-20 11:43:39",23,"Male","Moderate",2,3,4,4,"5",164.592,48,"Walk, Outdoor Games",0,1,2,1000,35000,"1 Hour","Pancriatitis","",4
|
||||
"54","2021-10-20 11:43:48",21,"Male","Moderate",10,5,10,8,"5",180.4416,90,"Walk, Outdoor Games",1,4,2,0,45000,"Not at all","No","",5
|
||||
"55","2021-10-20 11:44:26",21,"Male","Moderate",2,2,3,3,"5",182.88,76,"Swim",0,1,1,1000,30000,"Not at all","No","",5
|
||||
"56","2021-10-20 11:47:21",22,"Female","Sedentary",6,9,10,6,"4",170.688,60,"Walk",1,3,1,0,150000,"Not at all","No","",3
|
||||
"57","2021-10-20 11:47:38",23,"Male","Moderate",1,1,2,1,"5",167.64,70,"Walk",0,1,0,0,10000,"Not at all","No","",3
|
||||
"58","2021-10-20 11:48:08",23,"Female","Moderate",3,1,3,3,"5+",152.4,65,"Others",1,3,0,500,50000,"1 Hour","PCOS","",4
|
||||
"59","2021-10-20 11:51:59",20,"Female","Moderate",5,4,3,2,"5",155.448,60,"Walk",2,3,1,200,7000,"Not at all","No","",4
|
||||
"60","2021-10-20 11:52:34",23,"Female","Hardwork",2,2,2,2,"5",152.4,51,"Dance",1,1,2,500,20000,"Not at all","No","Eat healthy stay healthy ",4
|
||||
"61","2021-10-20 11:54:14",26,"Male","Moderate",3,1,3,3,"5",167,63,"Walk",0,1,1,0,3600,"Not at all","No","",4
|
||||
"62","2021-10-20 11:54:31",18,"Female","Hardwork",2,2,2,1,"4",176.784,57,"Walk, Run, Outdoor Games",1,1,1,2300,56000,"Not at all","No","",5
|
||||
"63","2021-10-20 11:54:41",56,"Male","Hardwork",4,4,4,4,"5+",152.4,65,"Dance",3,3,3,25000,300000,"3 Hours","No","Yes",5
|
||||
"64","2021-10-20 11:57:15",23,"Male","Sedentary",7,9,9,8,"3",185.928,56,"Outdoor Games, Others",0,2,2,0,180000,"Not at all","No","Thank you",4
|
||||
"65","2021-10-20 11:58:30",24,"Female","Moderate",7,7,9,8,"4",164.592,65,"Walk, Outdoor Games, Others",2,2,1,500,20000,"Not at all","No","",4
|
||||
"66","2021-10-20 11:59:36",20,"Male","Moderate",10,10,10,10,"2",173.736,71.4,"Weight lifting",2,3,1,3000,40000,"2 Hour","No","Pretty good survey ",4
|
||||
"67","2021-10-20 11:59:42",20,"Male","Hardwork",2,1,1,3,"5",155.7528,65,"Swim",1,2,2,2500,100000,"3 Hours","No","",5
|
||||
"68","2021-10-20 11:59:49",18,"Female","Moderate",5,10,5,7,"5",164.592,56,"Run, Dance, Outdoor Games",1,3,1,500,400000,"Not at all","No.","",4
|
||||
"69","2021-10-20 12:00:54",24,"Male","Moderate",3,2,2,3,"5",173.736,69,"Walk, Run, Outdoor Games, Others",1,2,1,1500,25000,"Not at all","no","",4
|
||||
"70","2021-10-20 12:01:03",20,"Female","Moderate",3,4,3,2,"5",164.592,45,"Walk",3,1,3,2500,40000,"Not at all","Thyroid ","",5
|
||||
"71","2021-10-20 12:03:22",21,"Male","Hardwork",2,2,4,4,"4",170.688,85,"Walk",1,2,1,0,5009,"Not at all","No","Excellent",5
|
||||
"72","2021-10-20 12:06:20",21,"Male","Hardwork",4,2,4,4,"4",182.88,80,"Run, Swim, Outdoor Games",1,3,3,1000,50000,"Not at all","no","",5
|
||||
"73","2021-10-20 12:06:21",23,"Female","Moderate",9,6,8,8,"5",152.4,54,"Walk, Dance, Others",1,3,1,700,50000,"Not at all","No","",4
|
||||
"74","2021-10-20 12:06:58",22,"Male","Moderate",7,8,10,9,"4",167.64,56,"Walk, Others",1,4,1,300,8000,"Not at all","Yes, gastric","",4
|
||||
"75","2021-10-20 12:08:13",20,"Female","Moderate",2,1,2,3,"4",146.304,50,"Walk",1,2,0,500,5000,"Not at all","PCOD ","",5
|
||||
"76","2021-10-20 12:08:20",23,"Male","Moderate",6,3,10,10,"5+",176.784,70,"Walk, Weight lifting",1,2,1,3000,35000,"1 Hour","Crohn's disease","",4
|
||||
"77","2021-10-20 12:09:33",24,"Female","Moderate",7,10,10,9,"5",161.544,38,"Others",1,3,1,3000,14000,"Not at all","No","Interesting survey..",5
|
||||
"78","2021-10-20 12:10:50",21,"Female","Moderate",7,4,9,6,"4",170.688,58,"Walk",0,2,1,0,40000,"Not at all","No","",4
|
||||
"79","2021-10-20 12:11:02",21,"Female","Sedentary",2,3,3,3,"5+",161.544,49,"Others",2,1,1,1000,70000,"Not at all","Anemia","It's ammezing",4
|
||||
"80","2021-10-20 12:11:30",23,"Female","Moderate",7,10,9,8,"5",161.544,70,"Walk",1,2,1,2500,35000,"2 Hour","Diabetes","",5
|
||||
"81","2021-10-20 12:11:46",25,"Male","Hardwork",8,7,9,10,"5",176.784,60.2,"Walk, Run",4,3,4,250,32500,"Not at all","Back pain.","Please correct some spelling mistakes and write the meaning of each ratings. It will be helpful for the respondents.
|
||||
A little suggestion: try to put more questions about time of exercise, type of exercises, food habits etc.
|
||||
Wishing you a great success in this survey as well as analysis. ",3
|
||||
"82","2021-10-20 12:11:49",20,"Female","Sedentary",2,2,2,2,"5",161.544,56,"Walk",1,1,1,3000,140000,"Not at all","no","",4
|
||||
"83","2021-10-20 12:11:54",20,"Female","Sedentary",2,1,1,3,"4",167.64,55,"Walk",1,2,2,1500,50000,"1 Hour","No","Good.",5
|
||||
"84","2021-10-20 12:13:57",21,"Male","Moderate",2,2,4,3,"5",161.544,70,"Walk, Outdoor Games",2,2,1,100,15000,"Not at all","No","",5
|
||||
"85","2021-10-20 12:18:59",21,"Male","Hardwork",3,4,3,2,"4",179.832,82,"Others",1,1,0,0,40000,"Not at all","sneezing","Nice",4
|
||||
"86","2021-10-20 12:19:37",20,"Female","Sedentary",2,10,10,10,"5+",164.592,65,"Walk, Dance",1,2,1,2500,60000,"2 Hour","No","Very good",4
|
||||
"87","2021-10-20 12:20:00",24,"Female","Moderate",7,9,9,8,"4",155,45,"Walk",3,4,1,200,100000,"Not at all","Psoriasis","",4
|
||||
"88","2021-10-20 12:24:37",23,"Female","Moderate",8,5,6,7,"4",173.4312,51,"Walk",1,5,2,500,40000,"Not at all","No","",4
|
||||
"89","2021-10-20 12:30:14",26,"Female","Hardwork",3,2,4,4,"5",164.592,56,"Walk, Others",2,3,1,1000,100000,"Not at all","No","Hope your study completes soon, and come out with good result.",4
|
||||
"90","2021-10-20 12:34:50",25,"Female","Moderate",4,4,4,3,"4",167.64,53,"Walk",0,2,3,3000,0,"Not at all","No ","",3
|
||||
"91","2021-10-20 12:35:23",23,"Male","Moderate",8,2,10,10,"5+",176.784,64,"Weight lifting",1,2,2,3000,80000,"2 Hour","No","",4
|
||||
"92","2021-10-20 12:40:53",21,"Female","Moderate",5,4,4,8,"5",152.4,51,"Others",2,3,4,1000,30000,"2 Hour","No","Very good",5
|
||||
"93","2021-10-20 12:45:36",24,"Male","Hardwork",5,5,5,4,"4",173.736,56,"Walk",1,1,2,3000,200000,"Not at all","No","❤️",5
|
||||
"94","2021-10-20 12:50:18",25,"Female","Moderate",2,3,1,1,"4",155.448,49,"Walk, Dance",0,1,1,0,400000,"Not at all","No","",5
|
||||
"95","2021-10-20 12:53:40",21,"Male","Moderate",9,1,9,9,"3",173.736,70,"Outdoor Games",0,4,2,1000,20000,"2 Hour","No","",4
|
||||
"96","2021-10-20 12:55:11",20,"Female","Moderate",7,8,10,7,"4",152.4,38,"Walk",3,2,5,500,6000,"Not at all","No","",5
|
||||
"97","2021-10-20 12:57:19",26,"Female","Moderate",4,2,4,3,"5",161.544,55,"Walk, Run",1,3,0,500,90000,"1 Hour","No","",5
|
||||
"98","2021-10-20 12:57:36",20,"Male","Hardwork",4,3,4,4,"5",182.88,77,"Run, Weight lifting",2,3,3,500,45000,"3 Hours","No","Very good",5
|
||||
"99","2021-10-20 12:59:28",30,"Male","Moderate",9,2,7,7,"4",170.688,60,"Walk",1,4,1,0,35000,"Not at all","No","Na",4
|
||||
"100","2021-10-20 12:59:29",24,"Female","Hardwork",3,4,3,3,"5",152.4,46,"Walk, Dance, Swim",1,2,1,100,30000,"Not at all","Ni","Good initiative",5
|
||||
"101","2021-10-20 13:04:42",23,"Female","Moderate",1,2,1,3,"4",149.352,57,"Do not interested",0,1,0,0,35000,"Not at all","No","Great questionnaire",5
|
||||
"102","2021-10-20 13:05:49",22,"Male","Hardwork",4,3,4,4,"5",176.784,69,"Run, Weight lifting, Outdoor Games",1,3,1,1500,500000,"1 Hour","NO ","",5
|
||||
"103","2021-10-20 13:05:51",24,"Male","Moderate",2,1,2,2,"5",176.784,70,"Run",0,1,0,0,10000,"Not at all","No","",5
|
||||
"104","2021-10-20 13:10:16",22,"Male","Moderate",2,3,3,1,"5+",173.736,60,"Walk",2,2,2,500,7000,"Not at all","Cough and cold ","",5
|
||||
"105","2021-10-20 13:19:48",20,"Female","Moderate",6,10,7,5,"5",176.784,57,"Walk, Run, Dance",3,5,1,0,15000,"Not at all","No","",3
|
||||
"106","2021-10-20 13:20:27",22,"Male","Moderate",1,4,3,3,"5",173.736,65,"Walk",1,2,1,0,50000,"Not at all","No","",3
|
||||
"107","2021-10-20 13:21:21",24,"Female","Moderate",2,4,4,4,"4",167.64,58,"Walk",3,3,1,1000,80000,"Not at all","No","",5
|
||||
"108","2021-10-20 13:26:17",22,"Female","Moderate",7,9,10,8,"5",152.4,48,"Do not interested",0,2,4,1000,20000,"Not at all","No","",5
|
||||
"109","2021-10-20 13:26:48",24,"Male","Hardwork",8,8,10,2,"4",172.5168,47,"Walk",0,3,4,0,8000,"Not at all","No","Good",4
|
||||
"110","2021-10-20 13:27:14",26,"Male","Moderate",4,2,3,3,"5",176.784,72,"Walk, Run, Outdoor Games, Others",3,3,1,100,25000,"Not at all","No","",4
|
||||
"111","2021-10-20 13:29:56",20,"Male","Moderate",2,3,2,1,"2",152.4,58,"Walk, Run",0,1,2,400,10000,"Not at all","Vomiting","It's a very good idea for health concern",5
|
||||
"112","2021-10-20 13:37:24",20,"Male","Moderate",2,3,3,3,"3",167.64,67.5,"Walk, Run",0,1,1,0,3000,"Not at all","No","Yeah this is a good thing to do anylysis data",3
|
||||
"113","2021-10-20 13:37:24",23,"Female","Moderate",2,3,2,1,"5",161.544,62,"Do not interested",0,1,2,500,15000,"Not at all","No","",5
|
||||
"114","2021-10-20 13:38:30",25,"Male","Moderate",2,1,3,2,"3",173.736,65,"Walk",1,2,0,3000,60000,"Not at all","No","",4
|
||||
"115","2021-10-20 13:43:32",21,"Male","Moderate",7,9,9,10,"5+",173.736,68,"Swim, Outdoor Games",3,4,3,500,7000,"Not at all","No","",4
|
||||
"116","2021-10-20 13:49:25",19,"Female","Hardwork",3,2,4,3,"5+",161.544,57,"Walk",1,2,1,500,25000,"Not at all","No","",4
|
||||
"117","2021-10-20 13:59:13",24,"Female","Moderate",7,9,9,10,"4",164.592,65,"Dance",2,4,1,0,25000,"Not at all","No","",4
|
||||
"118","2021-10-20 14:03:25",20,"Female","Moderate",3,4,2,4,"5",161.544,65,"Walk",1,2,3,7000,30000,"2 Hour","No","",5
|
||||
"119","2021-10-20 14:05:11",23,"Female","Sedentary",3,2,1,1,"4",170.688,53,"Weight lifting, Outdoor Games",0,0,0,0,10000,"Not at all","No","",5
|
||||
"120","2021-10-20 14:13:12",22,"Female","Moderate",2,4,3,4,"4",152.4,43,"Others",0,1,0,200,10000,"Not at all","Spondilytis, dry eyes, pcos","",4
|
||||
"121","2021-10-20 14:15:36",20,"Female","Moderate",4,2,4,4,"5+",158.496,50,"Others",1,1,2,0,65000,"Not at all","No","",4
|
||||
"122","2021-10-20 14:17:26",20,"Female","Moderate",2,4,3,3,"4",164.592,50,"Dance",1,1,2,1000,5000,"Not at all","No","",4
|
||||
"123","2021-10-20 14:19:59",20,"Male","Moderate",5,6,8,7,"5+",167.64,75,"Walk",2,4,5,0,17000,"Not at all","No","",4
|
||||
"124","2021-10-20 14:20:30",19,"Female","Moderate",6,10,10,7,"5",124.968,36,"Walk, Run, Outdoor Games",4,4,4,1600,4000,"Not at all","No","Necessary survey ",4
|
||||
"125","2021-10-20 14:21:06",19,"Female","Moderate",9,1,7,8,"5",161.544,43.5,"Walk, Run",1,2,0,2000,45000,"1 Hour","No","",4
|
||||
"126","2021-10-20 14:21:55",26,"Male","Moderate",7,8,6,8,"4",173.736,65,"Walk",0,2,1,1000,50000,"Not at all","No","",4
|
||||
"127","2021-10-20 14:22:58",19,"Male","Hardwork",2,4,1,1,"5",179.832,72,"Run, Outdoor Games",1,2,1,1000,20000,"Not at all","No","Thank you,your survey form really helps me to evaluate my daily meals and it also helps me to put emphasis on how I utilize them in exercise and outdoor games...",5
|
||||
"128","2021-10-20 14:31:29",19,"Male","Hardwork",8,10,10,10,"4",161.544,85,"Outdoor Games",1,5,0,0,70000,"Not at all","Yes ( Cough )","",5
|
||||
"129","2021-10-20 14:35:18",20,"Female","Moderate",1,3,2,2,"5",155.448,55,"Walk",1,1,1,0,10000,"Not at all","No.","Very good thing that you are doing, carry on. ",5
|
||||
"130","2021-10-20 14:37:02",26,"Female","Hardwork",3,3,3,4,"3",148,55,"Dance",1,2,2,500,30000,"Not at all","No","",3
|
||||
"131","2021-10-20 14:37:48",26,"Female","Moderate",6,10,10,7,"5",161.544,73,"Walk",1,3,1,1000,46000,"Not at all","PCOS","",4
|
||||
"132","2021-10-20 14:39:32",24,"Female","Hardwork",9,8,9,6,"5",161.544,60,"Walk",1,4,2,0,30000,"Not at all","No","Great project idea. Please share with me the end results. ",5
|
||||
"133","2021-10-20 14:39:44",19,"Male","Hardwork",2,2,3,3,"4",170.688,74,"Walk, Outdoor Games",1,2,0,0,60000,"Not at all","Noo","",4
|
||||
"134","2021-10-20 14:41:36",23,"Male","Hardwork",3,2,3,2,"5",179.832,63,"Walk",2,4,1,0,30000,"Not at all","Allergy","",4
|
||||
"135","2021-10-20 14:41:50",23,"Male","Moderate",8,4,2,9,"3",161.544,59,"Others",3,4,1,0,6000,"Not at all","No","-",4
|
||||
"136","2021-10-20 14:44:52",22,"Male","Hardwork",2,1,1,3,"3",164.592,54,"Walk, Others",0,2,1,1000,20000,"1 Hour","No","This survey is realy very good.",5
|
||||
"137","2021-10-20 14:48:20",20,"Male","Moderate",2,4,3,3,"5",176.784,52,"Walk, Outdoor Games, Others",1,2,2,1000,60000,"Not at all","Allergy","",4
|
||||
"138","2021-10-20 14:52:01",20,"Male","Hardwork",5,6,6,10,"5",176.784,85,"Walk, Run, Weight lifting, Others",5,4,5,4000,50000,"2 Hour","Allergy","",3
|
||||
"139","2021-10-20 14:52:34",26,"Male","Moderate",5,10,10,5,"4",167.64,68,"Walk",1,1,2,2000,300000,"Not at all","No","",5
|
||||
"140","2021-10-20 14:55:26",19,"Female","Sedentary",4,3,4,4,"5",170.688,55,"Walk, Others",2,3,0,200,7000,"Not at all","Yes, common cold disease ","",5
|
||||
"141","2021-10-20 14:55:38",23,"Male","Sedentary",7,5,5,7,"4",152.4,52,"Walk, Run, Swim",1,2,1,0,40000,"Not at all","No","That's amazing. ",4
|
||||
"142","2021-10-20 14:59:25",20,"Female","Moderate",3,3,1,3,"4",161.544,50,"Walk, Dance",2,2,1,0,5000,"Not at all","No","",4
|
||||
"143","2021-10-20 15:03:55",24,"Male","Hardwork",10,5,9,10,"5",176.784,68,"Run, Weight lifting, Others",3,4,4,0,5000,"1 Hour","N0","",4
|
||||
"144","2021-10-20 15:11:01",22,"Male","Hardwork",5,6,9,9,"5",155.7528,66,"Walk, Run, Weight lifting",1,0,1,4000,32000,"1 Hour","Yes.Irritable bowel syndrome.(IBS)","You should what do you do for mental health.As that's very important now days.",4
|
||||
"145","2021-10-20 15:17:51",25,"Male","Moderate",2,1,2,3,"4",179.832,64,"Outdoor Games",1,2,1,1500,15000,"Not at all","No","",4
|
||||
"146","2021-10-20 15:23:11",21,"Male","Moderate",3,3,4,4,"5",157,55,"Run, Outdoor Games",1,2,2,1500,15000,"Not at all","No","Good",4
|
||||
"147","2021-10-20 15:23:32",20,"Male","Moderate",4,2,3,4,"5+",179.832,64,"Walk, Run, Dance, Swim, Outdoor Games",2,1,2,0,30000,"Not at all","No","",5
|
||||
"148","2021-10-20 15:27:02",20,"Male","Moderate",2,2,2,3,"5",170.688,56,"Walk, Run, Dance, Outdoor Games",1,1,1,2000,30000,"1 Hour","No","All the best!👍",5
|
||||
"149","2021-10-20 15:29:27",25,"Female","Hardwork",1,2,2,3,"5",161.544,45,"Walk",1,1,1,1500,4000,"Not at all","No","It's good",3
|
||||
"150","2021-10-20 15:34:22",20,"Female","Moderate",2,3,4,4,"5",152.4,45,"Do not interested",0,2,1,0,40000,"Not at all","Common cold ","Very good initiative to grow awareness among people about their health and nutrition. It will be very helpful to our country. ",3
|
||||
"151","2021-10-20 15:38:42",20,"Male","Moderate",10,3,10,10,"5",179.832,68,"Walk, Run, Outdoor Games",4,5,4,800,45000,"2 Hour","No ","No this is good , And cover all things",5
|
||||
"152","2021-10-20 15:46:20",20,"Female","Moderate",3,3,3,4,"5",152.4,46,"Walk",2,2,2,1000,20000,"Not at all","No","",4
|
||||
"153","2021-10-20 15:49:53",21,"Male","Hardwork",8,10,10,10,"4",179.832,100,"Walk",0,2,5,0,3500,"Not at all","No","",4
|
||||
"154","2021-10-20 16:03:52",11,"Male","Hardwork",2,3,4,1,"1",140.208,59,"Others",3,0,3,2500,10000,"Not at all","Golblader stone","Good",3
|
||||
"155","2021-10-20 16:09:56",26,"Male","Moderate",10,5,10,10,"5",170.688,56,"Walk",4,5,4,5000,20000,"Not at all","No","",3
|
||||
"156","2021-10-20 16:14:17",24,"Male","Moderate",9,2,9,9,"5+",155.448,78,"Walk, Run, Outdoor Games",1,4,0,500,50000,"Not at all","No","Best of luck for your survey . Especially thanks for choosing such a beautiful and important topic .",4
|
||||
"157","2021-10-20 16:17:57",24,"Male","Moderate",6,3,6,5,"4",173.736,76,"Walk, Run, Others",1,2,0,5000,25000,"Not at all","NO","",4
|
||||
"158","2021-10-20 16:29:20",23,"Female","Moderate",1,3,1,2,"4",158.496,51,"Others",1,1,0,0,40000,"Not at all","No","",4
|
||||
"159","2021-10-20 16:43:42",24,"Male","Moderate",3,4,4,4,"4",179.832,74,"Walk, Others",1,3,0,0,70000,"Not at all","No","",4
|
||||
"160","2021-10-20 16:44:39",24,"Female","Moderate",2,2,4,3,"5",152.4,42,"Dance",1,3,0,2500,40000,"Not at all","No","",4
|
||||
"161","2021-10-20 16:51:57",23,"Male","Moderate",3,2,4,3,"4",170.688,60,"Weight lifting",1,3,0,100,80000,"Not at all","No","",4
|
||||
"162","2021-10-20 17:17:00",23,"Female","Moderate",3,2,3,3,"5",155.448,52,"Others",1,2,1,500,25000,"Not at all","No","",3
|
||||
"163","2021-10-20 17:22:02",22,"Male","Moderate",3,1,4,4,"2",155.7528,75,"Run, Outdoor Games",2,3,1,2000,30000,"Not at all","0","",5
|
||||
"164","2021-10-20 17:26:59",23,"Male","Moderate",2,4,4,4,"4",170.688,73,"Others",0,2,0,400,30000,"1 Hour","No","",5
|
||||
"165","2021-10-20 17:33:34",24,"Male","Moderate",2,3,3,4,"4",161.544,59,"Run, Others",1,2,2,500,30000,"Not at all","No","",3
|
||||
"166","2021-10-20 17:49:15",23,"Male","Moderate",4,5,10,8,"5",158.496,48,"Walk",0,2,2,0,40000,"Not at all","Yes, IBS","",4
|
||||
"167","2021-10-20 17:51:59",25,"Male","Moderate",9,7,8,9,"4",179.832,59,"Outdoor Games, Others",1,2,1,1000,5000,"Not at all","No","",4
|
||||
"168","2021-10-20 18:19:11",20,"Male","Moderate",2,3,2,3,"5+",173.736,62,"Run",1,1,1,0,80000,"Not at all","No","The level of questions is very good",5
|
||||
"169","2021-10-20 18:19:23",19,"Male","Moderate",4,10,6,8,"2",167.64,58,"Walk",4,1,1,0,4000,"Not at all","Allergies and cold","Ok",4
|
||||
"170","2021-10-20 18:36:03",24,"Female","Hardwork",9,5,10,10,"4",161.544,49,"Walk, Dance, Others",3,5,3,2000,15000,"Not at all","No","According to me there is a need of a option for writing.",4
|
||||
"171","2021-10-20 19:14:24",22,"Male","Moderate",6,5,10,10,"5",167.64,49,"Walk, Run, Swim, Others",1,4,1,400,4000,"Not at all",NA,"",5
|
||||
"172","2021-10-20 19:18:21",22,"Male","Moderate",10,6,10,10,"5+",173.736,58,"Walk",1,3,1,1000,9000,"1 Hour","No","",5
|
||||
"173","2021-10-20 19:22:57",23,"Male","Hardwork",8,4,8,6,"4",170.688,60,"Outdoor Games",0,5,1,3000,36000,"Not at all","No","No comments",5
|
||||
"174","2021-10-20 19:53:38",20,"Female","Hardwork",3,4,3,3,"5+",164.592,51,"Walk, Run, Dance, Swim, Outdoor Games",1,2,2,0,40000,"Not at all","No","",3
|
||||
"175","2021-10-20 20:21:07",21,"Female","Moderate",8,5,9,10,"5",164.592,46,"Walk, Dance, Outdoor Games, Others",1,3,1,1000,20000,"Not at all","No","Very good",5
|
||||
"176","2021-10-20 20:53:23",20,"Male","Hardwork",4,2,3,2,"5",182.88,65,"Walk, Swim, Others",1,1,2,0,12000,"1 Hour","No","Plase provide gym in free of cost...",4
|
||||
"177","2021-10-20 21:39:14",23,"Female","Moderate",4,3,4,4,"5",155.448,48,"Walk, Run, Dance",3,3,1,2000,40000,"Not at all","No","",4
|
||||
"178","2021-10-20 21:53:49",25,"Male","Moderate",3,4,4,4,"4",155.448,61,"Walk, Others",1,2,0,500,30000,"Not at all","No","",4
|
||||
"179","2021-10-20 22:16:48",22,"Female","Moderate",5,6,5,5,"5",158.496,46,"Walk, Not interested",0,2,1,0,15000,"Not at all","No","",5
|
||||
"180","2021-10-20 22:40:52",25,"Male","Moderate",8,3,10,9,"5",161,70,"Walk, Outdoor Games, Others",1,3,0,500,50000,"Not at all","No","",4
|
||||
"181","2021-10-20 22:43:02",30,"Male","Moderate",3,2,3,4,"4",173.736,71,"Walk, Weight lifting",1,3,0,0,1,"1 Hour","No","",4
|
||||
"182","2021-10-20 22:48:11",26,"Male","Moderate",7,1,1,10,"4",176.784,64,"Walk",1,2,1,0,25000,"Not at all","No","",5
|
||||
"183","2021-10-20 23:11:42",18,"Female","Moderate",3,4,3,3,"5",158.496,45,"Not interested",0,3,0,0,100000,"Not at all","No","",4
|
||||
"184","2021-10-21 01:18:23",19,"Male","Moderate",9,7,8,8,"4",170.688,68,"Walk, Run, Outdoor Games, Others",4,5,3,500,10000,"1 Hour","No","Great",5
|
||||
"185","2021-10-21 07:40:38",24,"Female","Moderate",8,6,9,9,"5",161.544,52,"Walk, Dance, Others",3,5,1,0,20000,"Not at all","No","",4
|
||||
"186","2021-10-21 07:53:59",23,"Male","Moderate",1,2,1,1,"4",173.736,77,"Run",0,1,0,1200,6500,"1 Hour","No","",2
|
||||
"187","2021-10-21 08:09:26",21,"Male","Sedentary",1,3,2,1,"2",170.688,69,"Not interested",0,1,2,0,700000,"Not at all","Tooth decaying","",4
|
||||
"188","2021-10-21 08:30:38",21,"Male","Moderate",6,8,10,9,"5",160.02,50.3,"Walk",0,2,0,0,9000,"Not at all","No","",5
|
||||
"189","2021-10-21 08:31:39",26,"Male","Moderate",3,1,2,3,"4",167.64,72,"Weight lifting, Others",1,2,0,200,20000,"2 Hour","Dust Allergy","",4
|
||||
"190","2021-10-21 08:50:57",22,"Male","Hardwork",9,4,8,10,"4",173.736,75,"Others",3,5,2,1200,30000,"1 Hour","No","Nothing",5
|
||||
"191","2021-10-21 09:46:34",22,"Male","Moderate",3,4,4,3,"5",173.736,70,"Walk, Run, Weight lifting",1,3,1,800,1500000,"2 Hour","No","",3
|
||||
"192","2021-10-21 10:02:50",22,"Male","Moderate",6,3,10,8,"3",173.736,75,"Run, Outdoor Games",0,2,0,0,10000,"Not at all","IBS ","",4
|
||||
"193","2021-10-21 10:07:33",22,"Male","Moderate",1,5,6,1,"5",179.832,64,"Walk, Swim",1,3,0,0,60000,"Not at all","No","Answering height should be on centemetre it's more reliable and accurate. Also in feet it requires to write as 5'9"" which i can't in your form so i had to write 5.9 which doesn't mean 5feet9inches at all.",3
|
||||
"194","2021-10-21 10:25:13",23,"Male","Moderate",3,2,4,4,"2",155.7528,88,"Walk",2,2,1,200,18000,"Not at all","High blood pressure","",5
|
||||
"196","2021-10-21 12:27:41",22,"Female","Moderate",2,4,3,3,"5",155.448,66,"Walk",1,3,0,1000,30000,"2 Hour","Headache","",5
|
||||
"197","2021-10-21 12:35:53",25,"Male","Sedentary",3,8,6,5,"4",188.976,110,"Walk",1,1,1,300,60000,"1 Hour","No","",3
|
||||
"198","2021-10-21 12:40:30",23,"Male","Hardwork",9,3,7,8,"3",179.832,73,"Walk, Run, Weight lifting, Outdoor Games",2,2,1,0,20000,"Not at all","No","",4
|
||||
"199","2021-10-21 13:03:39",21,"Male","Hardwork",2,1,2,3,"4",170.688,56,"Walk, Swim",1,2,0,100,15000,"Not at all","No","",4
|
||||
"200","2021-10-21 13:35:20",22,"Male","Hardwork",2,4,1,1,"5+",170.688,56,"Outdoor Games",3,3,1,200,300000,"Not at all","No","",4
|
||||
"201","2021-10-21 14:05:12",30,"Female","Moderate",3,3,3,3,"5",152.4,93,"Walk, Dance, Weight lifting",2,2,1,500,2000,"2 Hour","Rice","No",2
|
||||
"202","2021-10-21 15:37:13",42,"Male","Moderate",9,2,5,9,"5",182.88,99,"Walk, Others",1,3,0,1500,100000,"Not at all","High Cholesterol","",3
|
||||
"203","2021-10-21 15:43:06",23,"Male","Hardwork",9,7,10,8,"5",155.448,78,"Walk, Outdoor Games, Others",4,4,4,1000,35000,"Not at all","No","Good",4
|
||||
"204","2021-10-23 20:09:06",19,"Male","Hardwork",10,7,10,10,"5",155.448,72,"Run, Swim, Outdoor Games",1,2,3,0,20000,"Not at all","no","",5
|
||||
"205","2021-10-24 15:00:24",26,"Male","Moderate",7,5,7,10,"5",155.448,92,"Outdoor Games",2,4,3,1000,15000,"Not at all","No","Field study is a important to any research work...it's a process of data collection in a right way...keep it up...good job...",5
|
||||
"206","2021-10-25 15:33:06",24,"Female","Moderate",2,3,1,1,"4",170.688,57,"Walk",1,1,1,1500,15000,"Not at all","No","",4
|
||||
"207","2021-10-29 11:32:22",23,"Male","Moderate",6,5,8,6,"5",192.024,92,"Walk, Run",2,3,2,500,15000,"Not at all","No","",4
|
||||
"208","2021-10-29 11:33:31",31,"Male","Sedentary",10,5,2,2,"4",164.592,50,"Not interested",0,2,0,0,18000,"Not at all","No","Good",3
|
||||
"209","2021-10-29 11:34:03",27,"Male","Hardwork",2,1,3,2,"4",182.88,61.5,"Outdoor Games",1,2,0,1000,65000,"Not at all","No","Good question available here",3
|
||||
"210","2021-10-29 11:45:54",23,"Male","Hardwork",7,2,10,10,"5",164.592,55,"Walk",1,3,0,500,5000,"1 Hour","No","",4
|
||||
"211","2021-10-29 11:50:48",19,"Female","Moderate",7,5,9,8,"4",158.496,48,"Others",3,5,2,0,10000,"Not at all","No","Ok ",4
|
||||
"212","2021-10-29 11:57:06",24,"Male","Moderate",3,3,3,3,"4",179.832,63,"Walk",1,2,0,0,35000,"Not at all","No","",4
|
||||
"213","2021-10-29 11:57:07",20,"Male","Sedentary",3,3,3,2,"5",182,60,"Outdoor Games",0,0,1,2000,600000,"Not at all","No","",3
|
||||
"214","2021-10-29 11:57:43",20,"Male","Hardwork",4,1,1,1,"4",173.736,70,"Walk, Run, Weight lifting, Others",0,0,0,1000,36000,"1 Hour","Yes in runny nose👃💦","",5
|
||||
"215","2021-10-29 11:58:12",19,"Male","Moderate",6,6,8,5,"4",173.736,62,"Outdoor Games",1,4,3,0,40000,"Not at all","cold and cough ","",4
|
||||
"216","2021-10-29 11:58:24",20,"Male","Moderate",1,1,2,1,"4",170.688,85,"Run",1,2,1,2000,25000,"Not at all","Yes.Masturbation problem and general weakness ","",5
|
||||
"217","2021-10-29 11:58:43",21,"Male","Hardwork",4,2,4,4,"5",176.784,75,"Walk, Run",2,2,2,0,48000,"Not at all","Gas","",4
|
||||
"218","2021-10-29 12:02:07",18,"Female","Hardwork",4,3,4,4,"4",161.544,50,"Others",3,0,2,0,100000,"Not at all","No","",3
|
||||
"219","2021-10-29 12:04:10",22,"Male","Moderate",4,4,4,4,"5",173.736,74,"Outdoor Games",1,4,0,0,50000,"Not at all","No","",4
|
||||
"220","2021-10-29 12:05:30",20,"Female","Hardwork",3,3,4,4,"4",161.544,61,"Walk, Others",1,3,1,0,30000,"Not at all","No","I would really appreciate if you could share your project with us after finishing your analysis and inferences.",5
|
||||
"221","2021-10-29 12:09:32",20,"Male","Moderate",3,3,4,4,"4",170.688,70,"Walk, Run, Outdoor Games",2,3,2,200,50000,"Not at all","No","Good",5
|
||||
"222","2021-10-29 12:21:14",18,"Male","Moderate",3,3,3,3,"2",164.592,54,"Walk, Run, Outdoor Games, Others",1,2,1,500,30000,"Not at all","No","",4
|
||||
"223","2021-10-29 12:27:48",18,"Male","Sedentary",8,10,7,6,"5",167.64,65,"Walk, Run, Outdoor Games, Others",2,3,1,5000,550000,"Not at all","No","",5
|
||||
"225","2021-10-29 12:31:50",23,"Male","Moderate",6,7,8,9,"5",176.784,80,"Walk",2,3,4,300,30000,"Not at all","Yes, cold","",4
|
||||
"226","2021-10-29 12:32:20",17,"Female","Moderate",6,6,10,10,"5",161.544,64,"Dance, Others",1,2,0,500,60000,"Not at all","Ovary sist","",4
|
||||
"227","2021-10-29 12:34:51",17,"Female","Hardwork",7,6,7,10,"5+",158.496,36,"Dance",5,5,5,2500,35500,"Not at all","10","Good",5
|
||||
"228","2021-10-29 12:36:48",29,"Female","Hardwork",8,6,10,8,"5",158.496,50,"Others",2,5,2,500,30000,"Not at all","No","",4
|
||||
"229","2021-10-29 12:37:37",21,"Female","Moderate",1,3,1,3,"2",167.64,67,"Walk, Others",1,2,0,0,300000,"Not at all","Painful periods, digestion","",5
|
||||
"230","2021-10-29 12:49:09",18,"Male","Moderate",7,8,3,5,"4",167.64,57,"Walk",2,2,4,1500,20000,"Not at all","No","",5
|
||||
"231","2021-10-29 12:53:05",20,"Female","Moderate",6,7,3,8,"3",164.592,39,"Walk",0,2,0,0,50000,"Not at all","No","",5
|
||||
"232","2021-10-29 12:53:22",17,"Female","Hardwork",10,10,10,10,"5",152.4,40,"Walk",5,5,5,1000,21000,"1 Hour","No","",5
|
||||
"233","2021-10-29 12:53:23",24,"Male","Moderate",3,2,3,2,"4",167.64,64,"Walk",0,2,0,0,5600,"Not at all","No","",5
|
||||
"234","2021-10-29 13:00:06",18,"Male","Moderate",7,1,9,10,"5",179.832,58,"Weight lifting, Outdoor Games",1,2,0,4000,70000,"1 Hour","No","It's awesome",5
|
||||
"235","2021-10-29 13:13:19",20,"Female","Hardwork",7,9,9,10,"4",170.688,58,"Walk",2,3,0,1000,1560000,"1 Hour","Headache","",4
|
||||
"236","2021-10-29 13:21:48",27,"Male","Moderate",6,5,7,3,"5",173.736,65,"Walk, Others",0,4,3,0,240000,"Not at all","Allergy ","",4
|
||||
"237","2021-10-29 13:39:18",17,"Female","Hardwork",5,10,9,10,"4",167.64,59,"Walk, Dance",1,2,1,1000,100000,"Not at all","No","",5
|
||||
"238","2021-10-29 14:01:19",21,"Male","Hardwork",4,2,4,3,"4",176.784,67,"Walk, Run, Outdoor Games, Others",1,3,3,100,40000,"Not at all","No","",3
|
||||
"239","2021-10-29 14:02:08",30,"Male","Moderate",3,2,3,4,"5",176.784,82,"Run, Outdoor Games, Others",1,2,1,1200,50000,"Not at all","Cold, dust allergic ","Very good ",4
|
||||
"240","2021-10-29 17:22:09",19,"Female","Hardwork",4,4,4,4,"4",161.544,55,"Run",3,3,3,4000,80000,"2 Hour","No","Nothing",5
|
||||
"241","2021-10-29 19:40:14",19,"Male","Moderate",3,2,4,3,"4",155.448,66,"Walk, Run, Others",2,2,1,1000,50000,"Not at all","No","",3
|
||||
"242","2021-10-29 21:18:38",20,"Male","Moderate",6,10,7,6,"5",177,64,"Walk, Run, Outdoor Games, Others",0,1,1,0,21000,"Not at all","Nope","",5
|
||||
"243","2021-10-29 21:28:43",22,"Male","Moderate",3,1,3,3,"5+",155.448,64,"Others",1,1,1,450,60000,"Not at all","No","",4
|
||||
"244","2021-10-29 21:30:40",19,"Female","Hardwork",10,5,10,10,"5+",152.4,50,"Others",2,5,1,3000,30000,"Not at all","No","Thank you",5
|
||||
"245","2021-10-29 22:06:39",20,"Female","Moderate",3,4,4,4,"5+",149.352,45,"Dance",1,2,1,700,30000,"2 Hour","No","",4
|
||||
"246","2021-10-29 22:42:33",18,"Male","Hardwork",3,3,3,3,"5",167.64,49,"Walk, Run, Outdoor Games",2,2,2,1000,200000,"Not at all","No","Ok",3
|
||||
"247","2021-10-29 23:06:06",19,"Female","Hardwork",1,2,4,2,"5+",161.544,41,"Walk",2,2,1,0,600000,"Not at all","Anxiety, Depression","Try asking something about time of meal, will it help in your survey?!",5
|
||||
"248","2021-10-29 23:48:05",20,"Male","Moderate",9,6,10,8,"5",170.688,52,"Walk",1,3,0,1500,60000,"Not at all","No",".",4
|
||||
"249","2021-10-30 06:36:45",55,"Female","Sedentary",2,2,3,3,"4",167.64,64,"Walk, Others",1,2,0,500,15000,"Not at all","No","",3
|
||||
"250","2021-10-30 15:51:53",23,"Male","Hardwork",7,1,2,4,"4",182.88,78,"Walk, Run, Dance, Others",0,2,0,4000,30000,"Not at all","No","Work preference question is not clear to me. I consider it how hard working are you and answered.",4
|
||||
"251","2021-10-31 15:59:53",23,"Male","Moderate",4,3,3,4,"1",173.736,54,"Walk, Run, Swim",2,2,1,3000,20000,"1 Hour","No","",4
|
||||
"252","2021-10-31 16:12:34",23,"Male","Moderate",4,4,4,4,"4",164.592,65,"Others",2,1,2,0,12000,"Not at all","No","Nice project 👍",5
|
||||
"253","2021-11-01 10:52:26",30,"Male","Moderate",2,2,2,2,"3",176.784,70,"Walk",0,1,0,0,30000,"Not at all","Allergies","Ok",2
|
||||
"254","2021-11-02 07:36:14",19,"Male","Moderate",6,1,7,7,"3",167.64,78,"Run, Others",1,2,2,0,30000,"Not at all","No","",5
|
||||
"255","2021-11-06 10:46:54",21,"Female","Hardwork",2,1,2,2,"5+",167.64,56,"Walk",1,1,1,20,35500,"Not at all","asidity","",5
|
||||
"256","2021-11-06 14:14:40",21,"Female","Hardwork",1,1,1,1,"5+",167.64,56,"Walk",2,2,0,20,1000,"1 Hour","asidity","good",2
|
||||
"257","2021-11-06 15:07:09",21,"Female","Hardwork",2,1,3,2,"4",152.4,56,"Others",1,1,2,2000,15000,"Not at all","No","",5
|
||||
"258","2021-11-06 17:37:15",23,"Female","Moderate",3,2,3,2,"5",155.448,43,"Not interested",2,1,1,2000,50000,"Not at all","Yes, Hypothyroidism","",3
|
||||
|
47
martysheva_tamara_lab_3/lab3.py
Normal file
@@ -0,0 +1,47 @@
|
||||
import pandas
|
||||
import numpy as np
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.metrics import accuracy_score
|
||||
|
||||
#Данные
|
||||
data = pandas.read_csv('clean_data.csv')
|
||||
|
||||
#Приведение строчных значений к числовым
|
||||
#work
|
||||
factorized_data_work, unique_values_work = pandas.factorize(data['work'])
|
||||
data['work'] = factorized_data_work
|
||||
#gymtime
|
||||
factorized_data_gymtime, unique_values_gymtime = pandas.factorize(data['gymtime'])
|
||||
data['gymtime'] = factorized_data_gymtime
|
||||
|
||||
#Создание столбца exercise_reg
|
||||
data['exercise_reg'] = np.where(data['phy_ex'] >= 7, 1, 0)
|
||||
|
||||
#Отбор нужных столбцов
|
||||
x = data[['age', 'weight', 'work', 'phy_health', 'gymtime']]
|
||||
|
||||
#Определение целевой переменной
|
||||
y = data['exercise_reg']
|
||||
|
||||
#Получение обучающей и тестовой выборки
|
||||
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
|
||||
|
||||
#Создание и обучение модели
|
||||
model = DecisionTreeClassifier()
|
||||
model.fit(x_train, y_train)
|
||||
|
||||
#Прогнозирование на тестовом наборе
|
||||
y_pred = model.predict(x_test)
|
||||
|
||||
#Оценка производительности модели
|
||||
accuracy = accuracy_score(y_test, y_pred)
|
||||
|
||||
#Важности признаков
|
||||
importances_clf = model.feature_importances_
|
||||
|
||||
#Вывод результатов
|
||||
print(x.head(15))
|
||||
print(importances_clf)
|
||||
print("Качество модели DecisionTreeClassifier: ", model.score(x_test, y_test))
|
||||
print("Качество классификации accuracy:", accuracy)
|
||||
59
mashkova_margarita_lab_1/README.md
Normal file
@@ -0,0 +1,59 @@
|
||||
# Лабораторная работа №1
|
||||
## ПИбд-42 Машкова Маргарита (Вариант 19)
|
||||
## Задание
|
||||
Cгенерировать определенный тип данных и сравнить на нем 3 модели по варианту.
|
||||
Построить графики, отобразить качество моделей, объяснить полученные результаты.
|
||||
|
||||
### Данные:
|
||||
> make_moons (noise=0.3, random_state=rs)
|
||||
|
||||
### Модели:
|
||||
|
||||
> - Линейная регрессия
|
||||
> - Полиномиальная регрессия (со степенью 5)
|
||||
> - Гребневая полиномиальная регрессия (со степенью 5, alpha= 1.0)
|
||||
|
||||
## Запуск программы
|
||||
Для запуска программы необходимо запустить файл main.py
|
||||
|
||||
## Используемые технологии
|
||||
> **Язык программирования:** python
|
||||
>
|
||||
> **Библиотеки:**
|
||||
> - `matplotlib` - пакет для визуализации данных.
|
||||
> - `sklearn` - предоставляет широкий спектр инструментов для машинного обучения, статистики и анализа данных.
|
||||
## Описание работы программы
|
||||
|
||||
Изначально генерируются синтетические данные Х и у для проведения экспериментов при помощи функции `make_moons` с заданными параметрами.
|
||||
Функция `train_test_split` делит данные так, что тестовая выборка составляет 40% от исходного набора данных.
|
||||
Разделение происходит случайным образом (т.е. элементы берутся из исходной выборки не последовательно).
|
||||
После чего для каждой из заданных по варианту моделей выполняются следующие действия:
|
||||
1. Создание модели с заданными параметрами.
|
||||
2. Обучение модели на исходных данных.
|
||||
3. Предсказание модели на тестовых данных.
|
||||
4. Оценка качества модели по 3 метрикам:
|
||||
|
||||
* **Коэффициент детерминации**: метрика, которая измеряет, насколько хорошо модель соответствует данным.
|
||||
Принимает значения от 0 до 1, где 1 означает идеальное соответствие модели данным, а значения ближе к 0 указывают на то,
|
||||
что модель плохо объясняет вариацию в данных. Для вычисления коэффициента детерминации модели используется метод `score` библиотеки scikit-learn.
|
||||
|
||||
* **Средняя абсолютная ошибка (MAE):** Для вычисления данной метрики используется метод `mean_absolute_error` библиотеки scikit-learn.
|
||||
* **Средняя квадратичная ошибка (MSE):** Для вычисления данной метрики используется метод `mean_squared_error` библиотеки scikit-learn.
|
||||
|
||||
Последние 2 метрики измеряют разницу между предсказанными значениями модели и фактическими значениями.
|
||||
Меньшие значения MAE и MSE указывают на лучшую производительность модели.
|
||||
|
||||
Вычисленные значения метрик выводятся в консоль.
|
||||
|
||||
После чего строятся графики, отображающие работу моделей. На первом графике отображаются ожидаемые результаты предсказания,
|
||||
на остальных - предсказания моделей. Чем меньше прозрачных точек - тем лучше отработала модель.
|
||||
|
||||
## Тесты
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
**Вывод:** исходя из полученных результатов, схожую хорошую производительность имеют
|
||||
линейная регрессия и гребневая полиномиальная регрессия.
|
||||
Самую низкую производительность имеет полиномиальная регрессия.
|
||||
BIN
mashkova_margarita_lab_1/console.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
85
mashkova_margarita_lab_1/main.py
Normal file
@@ -0,0 +1,85 @@
|
||||
from random import randrange
|
||||
from sklearn.datasets import make_moons
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import LinearRegression
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.pipeline import make_pipeline
|
||||
from sklearn.linear_model import Ridge
|
||||
from sklearn.metrics import mean_absolute_error, mean_squared_error
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
rs = randrange(42)
|
||||
|
||||
# Генерация данных
|
||||
X, y = make_moons(noise=0.3, random_state=rs)
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random_state=rs)
|
||||
|
||||
# Линейная регрессия
|
||||
linear = LinearRegression()
|
||||
# Обучение модели
|
||||
linear.fit(X_train, y_train)
|
||||
# Предсказание на тестовых данных
|
||||
y_pred_linear = linear.predict(X_test)
|
||||
# Оценка модели на тестовых данных (коэффициент детерминации)
|
||||
linear_score = linear.score(X_test, y_test)
|
||||
# Оценка модели на тестовых данных (cредняя абсолютная ошибка)
|
||||
linear_mae = mean_absolute_error(y_test, y_pred_linear)
|
||||
# Оценка модели на тестовых данных (cредняя квадратичная ошибка)
|
||||
linear_mse = mean_squared_error(y_test, y_pred_linear)
|
||||
|
||||
# Полиномиальная регрессия
|
||||
poly = make_pipeline(PolynomialFeatures(degree=5), LinearRegression())
|
||||
# Обучение модели
|
||||
poly.fit(X_train, y_train)
|
||||
# Предсказание на тестовых данных
|
||||
y_pred_poly = poly.predict(X_test)
|
||||
# Оценка модели на тестовых данных (коэффициент детерминации)
|
||||
poly_score = poly.score(X_test, y_test)
|
||||
# Оценка модели на тестовых данных (cредняя абсолютная ошибка)
|
||||
poly_mae = mean_absolute_error(y_test, y_pred_poly)
|
||||
# Оценка модели на тестовых данных (cредняя квадратичная ошибка)
|
||||
poly_mse = mean_squared_error(y_test, y_pred_poly)
|
||||
|
||||
# Гребневая полиномиальная регрессия
|
||||
ridge = make_pipeline(PolynomialFeatures(degree=5), Ridge(alpha=1.0))
|
||||
# Обучение модели
|
||||
ridge.fit(X_train, y_train)
|
||||
# Предсказание на тестовых данных
|
||||
y_pred_ridge = ridge.predict(X_test)
|
||||
# Оценка модели на тестовых данных (коэффициент детерминации)
|
||||
ridge_score = ridge.score(X_test, y_test)
|
||||
# Оценка модели на тестовых данных (cредняя абсолютная ошибка)
|
||||
ridge_mae = mean_absolute_error(y_test, y_pred_ridge)
|
||||
# Оценка модели на тестовых данных (cредняя квадратичная ошибка)
|
||||
ridge_mse = mean_squared_error(y_test, y_pred_ridge)
|
||||
|
||||
# Вывод оценки качества моделей в консоль
|
||||
print("Оценка качества предсказания моделей на тестовых данных:\n")
|
||||
|
||||
print("Линейная регрессия:")
|
||||
print("Коэффициент детерминации: %f" % linear_score)
|
||||
print("Средняя абсолютная ошибка: %f" % linear_mae)
|
||||
print("Средняя квадратичная ошибка: %f\n" % linear_mse)
|
||||
|
||||
print("Полиномиальная регрессия:")
|
||||
print("Коэффициент детерминации: %f" % poly_score)
|
||||
print("Средняя абсолютная ошибка: %f" % poly_mae)
|
||||
print("Средняя квадратичная ошибка: %f\n" % poly_mse)
|
||||
|
||||
print("Гребневая полиномиальная регрессия:")
|
||||
print("Коэффициент детерминации: %f" % ridge_score)
|
||||
print("Средняя абсолютная ошибка: %f" % ridge_mae)
|
||||
print("Средняя квадратичная ошибка: %f\n" % ridge_mse)
|
||||
|
||||
# Отображение графиков
|
||||
fig, axs = plt.subplots(1, 4, figsize=(15, 5))
|
||||
axs[0].set_title("Исходные тестовые данные")
|
||||
axs[0].scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap="bwr")
|
||||
axs[1].set_title("Линейная регрессия")
|
||||
axs[1].scatter(X_test[:, 0], X_test[:, 1], c=y_pred_linear, cmap="bwr")
|
||||
axs[2].set_title("Полиномиальная регрессия")
|
||||
axs[2].scatter(X_test[:, 0], X_test[:, 1], c=y_pred_poly, cmap="bwr")
|
||||
axs[3].set_title("Гребневая полиномиальная регрессия")
|
||||
axs[3].scatter(X_test[:, 0], X_test[:, 1], c=y_pred_ridge, cmap="bwr")
|
||||
plt.savefig('plots.png')
|
||||
plt.show()
|
||||
BIN
mashkova_margarita_lab_1/plots.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
63
mashkova_margarita_lab_2/README.md
Normal file
@@ -0,0 +1,63 @@
|
||||
# Лабораторная работа №2
|
||||
## ПИбд-42 Машкова Маргарита (Вариант 19)
|
||||
## Задание
|
||||
Выполнить ранжирование признаков с помощью указанных по варианту моделей.
|
||||
Отобразить получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку.
|
||||
Провести анализ получившихся результатов. Какие четыре признака оказались самыми важными по среднему значению?
|
||||
|
||||
### Модели:
|
||||
|
||||
> - Линейная регрессия (LinearRegression)
|
||||
> - Гребневая регрессия (Ridge)
|
||||
> - Лассо (Lasso)
|
||||
> - Случайное Лассо (RandomizedLasso)
|
||||
|
||||
|
||||
> **Note**
|
||||
>
|
||||
> Модель `RandomizedLasso` была признана устаревшей в scikit-learn 0.19 и удалена в 0.21.
|
||||
Вместо нее будет использоваться регрессор случайного леса `RandomForestRegressor`.
|
||||
|
||||
|
||||
## Запуск программы
|
||||
Для запуска программы необходимо запустить файл main.py
|
||||
|
||||
## Используемые технологии
|
||||
> **Язык программирования:** python
|
||||
>
|
||||
> **Библиотеки:**
|
||||
> - `numpy` - используется для работы с массивами.
|
||||
> - `sklearn` - предоставляет широкий спектр инструментов для машинного обучения, статистики и анализа данных.
|
||||
## Описание работы программы
|
||||
|
||||
Для начала необходимо сгенерировать исходные данные (Х) - 750 строк-наблюдений и 14 столбцов-признаков.
|
||||
Затем задать функцию-выход (Y): регрессионную проблему Фридмана, когда на вход моделей подается 14 факторов,
|
||||
выход рассчитывается по формуле, использующей только пять факторов, но факторы 11-14 зависят от факторов 1-4.
|
||||
Соотвественно, далее добавляется зависимость для признаков (факторов) х11, х12, х13, х14 от х1, х2, х3, х4.
|
||||
|
||||
Далее создаются модели, указанные в варианте задания, и выполняется их обучение.
|
||||
|
||||
После чего в единый массив размера 4×14 (количество_моделей и количество_признаков) выгружаются все оценки
|
||||
моделей по признакам. Находятся средние оценки и выводится результат в формате списка пар `{номер_признака – средняя_оценка}`,
|
||||
отсортированном по убыванию. Оценки признаков получаются через поле `coef_` у моделей LinearRegression, Ridge и Lasso.
|
||||
У модели RandomForestRegressor - через поле `feature_importances_`.
|
||||
Для удобства отображения данных оценки помещаются в конструкцию вида:
|
||||
`[имя_модели : [{имя_признака : оценка},{имя_признака : оценка}...]]`.
|
||||
Таким образом, получаем словарь, в котором располагаются 4 записи из четырнадцати пар каждая.
|
||||
Ключом является имя модели.
|
||||
|
||||
## Тесты
|
||||
|
||||
### Оценки важности признаков моделями
|
||||

|
||||
### Оценки важности признаков моделями, отсортированные по убыванию
|
||||

|
||||
### Средние оценки важности признаков
|
||||

|
||||
|
||||
**Вывод:** основываясь на средних оценках, четырьмя наиболее важными празнаками оказались:
|
||||
`x4 (0.86), x1 (0.8), x2 (0.73), x14 (0.51)`.
|
||||
Все модели оценили как наиболее важные признаки x1, x2, x4, и четвертым важным признаком выбрали зависимые признаки:
|
||||
LinearRegression - х11, Ridge - х14, RandomForestRegressor - х14. Модель Lasso включила также независимый признак - х5.
|
||||
|
||||
|
||||
100
mashkova_margarita_lab_2/main.py
Normal file
@@ -0,0 +1,100 @@
|
||||
from sklearn.linear_model import LinearRegression, Ridge, Lasso
|
||||
from sklearn.ensemble import RandomForestRegressor
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import numpy as np
|
||||
|
||||
# Генерация исходных данных: 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))
|
||||
|
||||
# Создание моделей и их обучение
|
||||
# Линейная модель
|
||||
lr = LinearRegression()
|
||||
lr.fit(X, Y)
|
||||
# Гребневая модель
|
||||
ridge = Ridge(alpha=7)
|
||||
ridge.fit(X, Y)
|
||||
# Лассо
|
||||
lasso = Lasso(alpha=.05)
|
||||
lasso.fit(X, Y)
|
||||
# Регрессор случайного леса
|
||||
rfr = RandomForestRegressor()
|
||||
rfr.fit(X, Y)
|
||||
|
||||
# Список, содержащий имена признаков
|
||||
names = ["x%s" % i for i in range(1, 15)]
|
||||
|
||||
|
||||
# Функция создания записи в словаре оценок важности признаков
|
||||
def rank_to_dict(ranks):
|
||||
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_dict = dict()
|
||||
# Добавление записей в словарь
|
||||
ranks_dict["Linear regression"] = rank_to_dict(lr.coef_)
|
||||
ranks_dict["Ridge"] = rank_to_dict(ridge.coef_)
|
||||
ranks_dict["Lasso"] = rank_to_dict(lasso.coef_)
|
||||
ranks_dict["Random Forest Regressor"] = rank_to_dict(rfr.feature_importances_)
|
||||
|
||||
|
||||
def print_ranks():
|
||||
for key, value in ranks_dict.items():
|
||||
print(key)
|
||||
print(value)
|
||||
|
||||
|
||||
def print_ranks_sorted():
|
||||
for key, value in ranks_dict.items():
|
||||
print(key)
|
||||
value_sorted = sorted(value.items(), key=lambda x: x[1], reverse=True)
|
||||
print(value_sorted)
|
||||
|
||||
|
||||
def get_means():
|
||||
# Создаем пустой список для средних оценок
|
||||
mean = {}
|
||||
for key, value in ranks_dict.items():
|
||||
# Пробегаемся по словарю значений ranks, которые являются парой имя:оценка
|
||||
for item in value.items():
|
||||
# Имя будет ключом для нашего mean
|
||||
# Если элемента с текущим ключом в mean нет - добавляем
|
||||
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_dict)
|
||||
mean[key] = round(res, 2)
|
||||
# сортируем список
|
||||
mean_sorted = sorted(mean.items(), key=lambda x: x[1], reverse=True)
|
||||
return mean_sorted
|
||||
|
||||
|
||||
def print_means():
|
||||
for item in get_means():
|
||||
print(item)
|
||||
|
||||
|
||||
print("Оценки каждого признака каждой моделью:")
|
||||
print_ranks()
|
||||
print("\nОценки каждого признака каждой моделью, отсортированные по убыванию:")
|
||||
print_ranks_sorted()
|
||||
print("\nСредние оценки признаков:")
|
||||
print_means()
|
||||
|
||||
BIN
mashkova_margarita_lab_2/means.png
Normal file
|
After Width: | Height: | Size: 9.8 KiB |
BIN
mashkova_margarita_lab_2/ranks.png
Normal file
|
After Width: | Height: | Size: 26 KiB |
BIN
mashkova_margarita_lab_2/ranks_sorted.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
88
mashkova_margarita_lab_3/README.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Лабораторная работа №3
|
||||
## ПИбд-42 Машкова Маргарита (Вариант 19)
|
||||
## Задание
|
||||
Решить с помощью библиотечной реализации дерева решений на 99% данных задачу:
|
||||
Выявить зависимость стоимости телефона от других его признаков.
|
||||
Проверить работу модели на оставшемся проценте, сделать вывод.
|
||||
|
||||
### Данные:
|
||||
> Датасет о характеристиках мобильных телефонов и их ценах
|
||||
>
|
||||
> Ссылка на датасет в kaggle: [Mobile Phone Specifications and Prices](https://www.kaggle.com/datasets/pratikgarai/mobile-phone-specifications-and-prices/data)
|
||||
|
||||
### Модели:
|
||||
|
||||
> - DecisionTreeClassifier
|
||||
|
||||
## Запуск программы
|
||||
Для запуска программы необходимо запустить файл main.py
|
||||
|
||||
## Используемые технологии
|
||||
> **Язык программирования:** python
|
||||
>
|
||||
> **Библиотеки:**
|
||||
> - `pandas` - предоставляет функциональность для обработки и анализа набора данных.
|
||||
> - `sklearn` - предоставляет широкий спектр инструментов для машинного обучения, статистики и анализа данных.
|
||||
## Описание работы программы
|
||||
|
||||
### Описание набора данных
|
||||
Данный набор содержит характеристики различных телефонов, в том числе их цену.
|
||||
|
||||
Названия столбцов набора данных и их описание:
|
||||
|
||||
- **Id** - идентификатор строки (int)
|
||||
- **Name** - наименование телефона (string)
|
||||
- **Brand** - наименование бренда телефона (string)
|
||||
- **Model** - модель телефона (string)
|
||||
- **Battery capacity (mAh)** - емкость аккумулятора в мАч (int)
|
||||
- **Screen size (inches)** - размер экрана в дюймах по противоположным углам (float)
|
||||
- **Touchscreen** - имеет телефон сенсорный экран или нет (string - Yes/No)
|
||||
- **Resolution x** - разрешение телефона по ширине экрана (int)
|
||||
- **Resolution y** - разрешение телефона по высоте экрана (int)
|
||||
- **Processor** - количество ядер процессора (int)
|
||||
- **RAM (MB)** - доступная оперативная память телефона в МБ (int)
|
||||
- **Internal storage (GB)** - внутренняя память телефона в ГБ (float)
|
||||
- **Rear camera** - разрешение задней камеры в МП (0, если недоступно) (float)
|
||||
- **Front camera** - разрешение фронтальной камеры в МП (0, если недоступно) (float)
|
||||
- **Operating system** - ОС, используемая в телефоне (string)
|
||||
- **Wi-Fi** - имеет ли телефон функция Wi-Fi (string - Yes/No)
|
||||
- **Bluetooth** - имеет ли телефон функцию Bluetooth (string - Yes/No)
|
||||
- **GPS** - имеет ли телефон функцию GPS (string - Yes/No)
|
||||
- **Number of SIMs** - количество слотов для SIM-карт в телефоне (int)
|
||||
- **3G** - имеет ли телефон сетевую функкцию 3G (string - Yes/No)
|
||||
- **4G/ LTE** - имеет ли телефон сетевую функкцию 4G/LTE (string - Yes/No)
|
||||
- **Price** - цена телефона в индийских рупиях (int)
|
||||
|
||||
### Обработка данных
|
||||
|
||||
Выведем информацию о данных при помощи функции DataFrame `data.info()`:
|
||||
|
||||

|
||||
|
||||
Данные не содержат пустых строк. Все значения в столбцах необходимо привести к численным значениям.
|
||||
Для преобразования полей, содержащих значения Yes/No воспользуемся числовым кодированием `LabelEncoder`.
|
||||
Значение "Yes" станет равным 1, значение "No" - 0.
|
||||
Остальные строковых поля будем преобразовывать при помощи векторайзер с суммированием `TfidfVectorizer`.
|
||||
|
||||
Данные после обработки:
|
||||
|
||||

|
||||
|
||||
Далее создается Y - массив значений целового признака (цены).
|
||||
Задача классификации решается дважды: сначала на всех признаках, затем на выявленных четырех важных.
|
||||
Сначала в X передаются все признаки, выборка разделяется на тестовые (1%) и обучающие данные (99%),
|
||||
модель дерева решений обучается, отображаются список важности признаков (по убыванию) и оценка модели.
|
||||
Затем из списка берутся первые 4 признаки и задача решается повторно.
|
||||
|
||||
## Тесты
|
||||
### Результат решения задачи классификации на всех признаках:
|
||||
|
||||

|
||||
|
||||
### Результат решения задачи классификации на выявленных четырех важных признаках:
|
||||
|
||||

|
||||
|
||||
**Вывод:** исходя из полученных результатов, средняя точность работы модели на всех признаках составляет 7%,
|
||||
т.е. модель работает слишком плохо на данных. При выборе только важных признаков средняя точность падает до 0.
|
||||
Большое значение среднеквадратичной ошибки подтверждает тот факт, что модель имеет низкое качество.
|
||||
BIN
mashkova_margarita_lab_3/all_features.png
Normal file
|
After Width: | Height: | Size: 50 KiB |
BIN
mashkova_margarita_lab_3/data_info.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
mashkova_margarita_lab_3/data_info_processed.png
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
mashkova_margarita_lab_3/data_processed.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
mashkova_margarita_lab_3/important_features.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
68
mashkova_margarita_lab_3/main.py
Normal file
@@ -0,0 +1,68 @@
|
||||
import pandas as pd
|
||||
from sklearn.feature_extraction.text import TfidfVectorizer
|
||||
from sklearn.preprocessing import LabelEncoder
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.tree import DecisionTreeClassifier
|
||||
from sklearn.metrics import mean_squared_error
|
||||
|
||||
filename = "mobiles.csv"
|
||||
# Считываем данные из файла в DataFrame
|
||||
data = pd.read_csv(filename, sep=',')
|
||||
# Удаляем столбец с идентификатором
|
||||
data.pop("Id")
|
||||
# print(data)
|
||||
# data.info()
|
||||
|
||||
# Приведение строковых значений признаков к численным при помощи векторайзера с суммированием
|
||||
FEATURE_COLUMNS_TO_PROC = ['Name', 'Brand', 'Model', 'Operating system']
|
||||
for column_name in FEATURE_COLUMNS_TO_PROC:
|
||||
vectorizer = TfidfVectorizer()
|
||||
train_text_feature_matrix = vectorizer.fit_transform(data[column_name]).toarray()
|
||||
a = pd.DataFrame(train_text_feature_matrix)
|
||||
data[column_name] = a[a.columns[1:]].apply(lambda x: sum(x.dropna().astype(float)), axis = 1)
|
||||
|
||||
# Приведение строковых значений к численным при помощи числового кодирования LabelEncoder
|
||||
le = LabelEncoder()
|
||||
data['Touchscreen'] = le.fit_transform(data['Touchscreen'])
|
||||
data['Wi-Fi'] = le.fit_transform(data['Wi-Fi'])
|
||||
data['Bluetooth'] = le.fit_transform(data['Bluetooth'])
|
||||
data['GPS'] = le.fit_transform(data['GPS'])
|
||||
data['3G'] = le.fit_transform(data['3G'])
|
||||
data['4G/ LTE'] = le.fit_transform(data['4G/ LTE'])
|
||||
|
||||
# Разделение данных на обучающую и тестовую выборки
|
||||
# В Y помещаем целевой признак - цену
|
||||
Y = data['Price']
|
||||
|
||||
|
||||
def predict(X):
|
||||
# Размер обучающей выборки - 99%, тестовой - 1%
|
||||
X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.01, random_state=42)
|
||||
|
||||
# Создание и обучение модели DecisionTreeClassifier
|
||||
dtc = DecisionTreeClassifier(max_depth=5, random_state=241)
|
||||
dtc.fit(X_train, y_train)
|
||||
|
||||
# Создание DataFrame с именами признаков и их важностью
|
||||
feature_importance_df = pd.DataFrame({'Признак': X_train.columns, 'Важность': dtc.feature_importances_}) \
|
||||
.sort_values(by='Важность', ascending=False)
|
||||
|
||||
print("Важность признаков:")
|
||||
print(feature_importance_df)
|
||||
mean_accuracy = dtc.score(X_test, y_test)
|
||||
y_pred = dtc.predict(X_test)
|
||||
mse = mean_squared_error(y_test, y_pred)
|
||||
print(f"Среднеквадратичная ошибка: {mse}")
|
||||
print(f"Средняя точность: {mean_accuracy}")
|
||||
return feature_importance_df
|
||||
|
||||
|
||||
print("\n***Решение задачи классификации, используя все параметры***")
|
||||
# В Х помещаем все признаки, кроме цены
|
||||
X = data.drop(columns='Price')
|
||||
importance_df = predict(X)
|
||||
print("\n***Решение задачи классификации, используя только 4 значимых параметра***")
|
||||
# Выбираем только 4 значимых признака
|
||||
important_features = importance_df.iloc[:4, 0].tolist()
|
||||
X_important = data[important_features]
|
||||
predict(X_important)
|
||||
1360
mashkova_margarita_lab_3/mobiles.csv
Normal file
27
orlov_artem_lab_1/README.md
Normal file
@@ -0,0 +1,27 @@
|
||||
### Задание:
|
||||
Данные: make_moons (noise=0.3, random_state=rs)
|
||||
Модели:
|
||||
· Линейную регрессию
|
||||
· Полиномиальную регрессию (со степенью 5)
|
||||
· Гребневую полиномиальную регрессию (со степенью 5, alpha= 1.0)
|
||||
|
||||
### как запустить лабораторную работу:
|
||||
Лабораторная работа запускается в файле `main.py` через Run, должно запуститься окно с графиками и вычисления в консоли
|
||||
|
||||
### Технологии:
|
||||
Для решения задач будем использовать следующие библиотеки
|
||||
matplotlib для построения графиков,
|
||||
numpy для математических операций,
|
||||
sklearn для обучения моделей и получения результатов
|
||||
|
||||
### Что делает лабораторная:
|
||||
Выполнение кода выводит точность каждой модели (в консоль) и отображает графики решений для каждой модели.
|
||||
|
||||
### Пример выходных значений:
|
||||
Консоль:
|
||||
|
||||

|
||||
|
||||
Графики:
|
||||
|
||||

|
||||
BIN
orlov_artem_lab_1/console.png
Normal file
|
After Width: | Height: | Size: 23 KiB |