Compare commits
90 Commits
arzamaskin
...
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 | |||
| 9ac110d9ab | |||
| d2627b6a38 | |||
|
|
de0a8ee5bc | ||
| a4aa458bc5 | |||
| c24c21caf3 | |||
| c47e1e3012 | |||
| 5729ed64a9 | |||
| 49d703350e | |||
| d29da45383 | |||
| 90954dfa89 | |||
|
|
4c08267e74 | ||
|
|
bc33af764d | ||
| 2b2eb9b72d | |||
| 3b1bd034a7 | |||
| 2a1d17c98f | |||
| d62368540e | |||
|
|
2dbadb666a | ||
|
|
9789f9772b | ||
|
|
2670375d98 | ||
|
|
690fd745de | ||
|
|
cc021ad78a | ||
|
|
cc1802b4f0 | ||
|
|
53818e12e5 | ||
|
|
7c63fc79f6 | ||
| 88f5268b31 | |||
| 3a316d94a1 | |||
| 481a18c68d | |||
| 27d25c8f14 | |||
| 8eb27373e0 | |||
|
|
f0334fdc44 | ||
| 7eda432471 | |||
| ebf64afcf2 | |||
| 637083470c | |||
| c3aa36cc7b | |||
| e80da1c4ce | |||
| 2506e7cd95 | |||
| 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()
|
||||
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 |
BIN
orlov_artem_lab_1/gr.png
Normal file
|
After Width: | Height: | Size: 134 KiB |
53
orlov_artem_lab_1/main.py
Normal file
@@ -0,0 +1,53 @@
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn.datasets import make_moons
|
||||
from sklearn.linear_model import LinearRegression, Ridge
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
|
||||
# Генерируем данные
|
||||
rs = 42
|
||||
X, y = make_moons(noise=0.3, random_state=rs)
|
||||
|
||||
# Линейная регрессия
|
||||
lr = LinearRegression()
|
||||
lr.fit(X, y)
|
||||
lr_score = lr.score(X, y)
|
||||
|
||||
# Полиномиальная регрессия
|
||||
poly = PolynomialFeatures(degree=5)
|
||||
X_poly = poly.fit_transform(X)
|
||||
lr_poly = LinearRegression()
|
||||
lr_poly.fit(X_poly, y)
|
||||
lr_poly_score = lr_poly.score(X_poly, y)
|
||||
|
||||
# Гребневая регрессия
|
||||
ridge = Ridge(alpha=1.0)
|
||||
ridge.fit(X_poly, y)
|
||||
ridge_score = ridge.score(X_poly, y)
|
||||
|
||||
# Выводим результаты
|
||||
print(f'Линейная регрессия: {lr_score}')
|
||||
print(f'Полиномиальная регрессия: {lr_poly_score}')
|
||||
print(f'Гребневая регрессия: {ridge_score}')
|
||||
|
||||
# Построение графиков
|
||||
plt.figure(figsize=(12, 6))
|
||||
|
||||
plt.subplot(141)
|
||||
plt.scatter(X[:, 0], X[:, 1], c=y)
|
||||
plt.title('Данные')
|
||||
|
||||
plt.subplot(142)
|
||||
plt.scatter(X[:, 0], lr.predict(X), c=y)
|
||||
plt.title('Линейная регрессия')
|
||||
|
||||
plt.subplot(143)
|
||||
plt.scatter(X[:, 0], ridge.predict(X_poly), c=y)
|
||||
plt.title('Гребневая регрессия')
|
||||
|
||||
# Добавляем график с полиномиальной регрессией
|
||||
plt.subplot(144)
|
||||
plt.scatter(X[:, 0], lr_poly.predict(X_poly), c=y)
|
||||
plt.title('Полиномиальная регрессия')
|
||||
|
||||
plt.tight_layout()
|
||||
plt.show()
|
||||
114
orlov_artem_lab_2/app.py
Normal file
@@ -0,0 +1,114 @@
|
||||
from flask import Flask, request, render_template
|
||||
from sklearn.linear_model import LinearRegression, Ridge, Lasso
|
||||
from sklearn.preprocessing import MinMaxScaler
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
# Generate random data
|
||||
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, size))
|
||||
X[:, 10:] = X[:, :4] + np.random.normal(0, .025, (size, 4))
|
||||
|
||||
# Define and train models
|
||||
lr = LinearRegression()
|
||||
ridge = Ridge()
|
||||
lasso = Lasso(alpha=0.1) # Example alpha value, you can adjust
|
||||
|
||||
# Number of bootstrap samples
|
||||
n_bootstrap = 100
|
||||
|
||||
# Dictionary to store rankings
|
||||
feature_rankings = {}
|
||||
|
||||
|
||||
# Function to rank features using linear regression
|
||||
def rank_lr():
|
||||
lr.fit(X, Y)
|
||||
coef = lr.coef_
|
||||
ranking = np.abs(coef)
|
||||
ranking = min_max_scale(ranking)
|
||||
return ranking
|
||||
|
||||
|
||||
# Function to rank features using ridge regression
|
||||
def rank_ridge():
|
||||
ridge.fit(X, Y)
|
||||
coef = ridge.coef_
|
||||
ranking = np.abs(coef)
|
||||
ranking = min_max_scale(ranking)
|
||||
return ranking
|
||||
|
||||
# Function to rank features using lasso
|
||||
def rank_lasso():
|
||||
lasso.fit(X, Y)
|
||||
coef = lasso.coef_
|
||||
ranking = np.abs(coef)
|
||||
ranking = min_max_scale(ranking)
|
||||
return ranking
|
||||
|
||||
# Function to rank features using lasso with bootstrap
|
||||
def rank_randomized_lasso():
|
||||
n_features = X.shape[1]
|
||||
scores = np.zeros(n_features)
|
||||
|
||||
for _ in range(n_bootstrap):
|
||||
indices = np.random.choice(size, size=size, replace=True)
|
||||
X_bootstrap = X[indices]
|
||||
Y_bootstrap = Y[indices]
|
||||
|
||||
lasso.fit(X_bootstrap, Y_bootstrap)
|
||||
scores += np.abs(lasso.coef_)
|
||||
|
||||
scores /= n_bootstrap
|
||||
scores = min_max_scale(scores)
|
||||
return scores
|
||||
|
||||
|
||||
# Function to scale scores to the range [0, 1]
|
||||
def min_max_scale(arr):
|
||||
scaler = MinMaxScaler()
|
||||
scaled = scaler.fit_transform(np.array(arr).reshape(-1, 1))
|
||||
return scaled
|
||||
|
||||
|
||||
# Function to perform ranking and compute mean ranking
|
||||
def rank_features():
|
||||
feature_rankings['Linear Regression'] = rank_lr()
|
||||
feature_rankings['Ridge'] = rank_ridge()
|
||||
feature_rankings['Lasso'] = rank_lasso()
|
||||
feature_rankings['Randomized Lasso'] = rank_randomized_lasso()
|
||||
|
||||
# Mean ranking
|
||||
mean_ranking = np.mean(list(feature_rankings.values()), axis=0)
|
||||
feature_rankings['Mean Ranking'] = mean_ranking
|
||||
|
||||
# Get indices of the top 4 most important features
|
||||
top_4_indices = np.argsort(mean_ranking)[-4:][::-1]
|
||||
|
||||
# Get feature names based on indices
|
||||
top_4_feature_names = [f'Feature {i + 1}' for i in top_4_indices]
|
||||
|
||||
# Add X and Y values to the context
|
||||
return {
|
||||
'feature_rankings': feature_rankings,
|
||||
'X_values': X[:, top_4_indices].tolist(),
|
||||
'Y_values': Y.tolist(),
|
||||
'top_4_feature_names': top_4_feature_names # Add the most important features
|
||||
}
|
||||
|
||||
|
||||
@app.route('/', methods=['GET', 'POST'])
|
||||
def index():
|
||||
if request.method == 'POST':
|
||||
context = rank_features()
|
||||
return render_template('index.html', **context)
|
||||
return render_template('index.html', feature_rankings=feature_rankings)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug=True)
|
||||
29
orlov_artem_lab_2/readme.md
Normal file
@@ -0,0 +1,29 @@
|
||||
Общее задание:
|
||||
Используя код из [1] (пункт «Решение задачи ранжирования признаков», стр. 205), выполните ранжирование признаков с помощью указанных по
|
||||
варианту моделей. Отобразите получившиеся значения\оценки каждого признака каждым методом\моделью и среднюю оценку. Проведите анализ
|
||||
получившихся результатов. Какие четыре признака оказались самыми 45 важными по среднему значению? (Названия\индексы признаков и будут
|
||||
ответом на задание).
|
||||
|
||||
Вариант 19:
|
||||
Линейная регрессия (LinearRegression), Гребневая регрессия (Ridge), Лассо (Lasso), Случайное Лассо (RandomizedLasso)
|
||||
|
||||
Запуск приложения: запуск файла app.py
|
||||
|
||||
Использованные технологии:
|
||||
Flask: Веб-фреймворк для Python, используемый для создания веб-приложения.
|
||||
scikit-learn (sklearn): Библиотека машинного обучения для Python. В коде используются модели линейной регрессии (LinearRegression), гребневой регрессии (Ridge), лассо (Lasso), а также Случайное Лассо (RandomizedLasso).
|
||||
NumPy: Библиотека для работы с многомерными массивами и математическими функциями в Python.
|
||||
Pandas: Библиотека для обработки и анализа данных в Python.
|
||||
MinMaxScaler: Инструмент из scikit-learn для масштабирования данных в интервал [0, 1].
|
||||
|
||||
Краткое описание работы программы:
|
||||
Генерируются случайные данные X и Y.
|
||||
Создаются и обучаются модели линейной регрессии, гребневой регрессии и случайного Лассо.
|
||||
Реализованы функции для ранжирования признаков с использованием различных моделей.
|
||||
Веб-приложение на Flask отображает результаты ранжирования признаков, средние оценки и важные признаки.
|
||||
|
||||
Пример входных данных:
|
||||
Генерированные случайные данные X (матрица признаков) и Y (вектор целевой переменной).
|
||||
|
||||
Пример выходных данных:
|
||||
Веб-страница с результатами ранжирования признаков, средними оценками и списком самых важных признаков.
|
||||