Merge pull request 'faskhutdinov_idris_lab_1 is ready' (#304) from faskhutdinov_idris_lab_1 into main

Reviewed-on: http://student.git.athene.tech/Alexey/IIS_2023_1/pulls/304
This commit is contained in:
Alexey 2024-01-16 09:14:31 +04:00
commit 0419bce8c3
5 changed files with 131 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,40 @@
# Лабораторная работа №1. Работа с типовыми наборами данных и различными моделями
## 6 вариант
### Задание:
Используя код из пункта «Регуляризация и сеть прямого
распространения» из источника (стр. 228), сгенерируйте определенный тип данных и
сравните на нем 3 модели (по варианту). Постройте графики, отобразите
качество моделей, объясните полученные результаты.
Данные: make_classification (n_samples=500, n_features=2,
n_redundant=0, n_informative=2, random_state=rs, n_clusters_per_class=1)
Модели:
* Линейную регрессию
* Полиномиальную регрессию (со степенью 4)
* Гребневую полиномиальную регрессию (со степенью 4, alpha = 1.0)
### Как запустить лабораторную
1. Запустить файл main.py
### Используемые технологии
1. Библиотека matplotlib
2. Библиотека scikit-learn
3. Python
4. IDE PyCharm
### Описание лабораторной работы
Программа генерирует набор данных с помощью функции make_classification в функции main.
После чего делит данные на тестовую и обучающую выборки. В итоге запускает функции linear_regression, polin_regression_4, gr_polin_regression_4,
передавая им набор данных как аргументы. В вышеперечисленных функциях происходит обучение моделей на тестовой выборке, после чего предсказываются
данные на оставшейся выборке. В заключении строятся графики, которые отображают модели, в консоль выводится оценка их работы
### Результат
Программа выводит в консоль следующие данные:
Линейная регрессия: 0.8857142857142857
Полиномиальная регрессия: 0.9714285714285714
Гребневая полиномиальная регрессия: 0.7732479926366043
Выходит, что наиболее качественная для решения задачи-полиномиальная регрессия, а хуже всего справилась гребневая полиномиальная.
Скриншоты работы программы представлены в папке с лабораторной работой.

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,91 @@
# 6 вариант
# Данные: make_classification (n_samples=500, n_features=2,
# n_redundant=0, n_informative=2, random_state=rs, n_clusters_per_class=1)
# Модели:
# · Линейная регрессия
# · Полиномиальная регрессия (со степенью 4)
# · Гребневая полиномиальная регрессия (со степенью 4, alpha = 1.0)
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression, LinearRegression
from sklearn.preprocessing import PolynomialFeatures, StandardScaler
from sklearn.pipeline import make_pipeline
from sklearn.datasets import make_moons, make_circles, make_classification
from sklearn.neural_network import MLPClassifier
from sklearn.linear_model import Ridge
# Задаем параметры генерации данных
n_samples = 500
n_features = 2
n_redundant = 0
n_informative = 2
random_state = 42
n_clusters_per_class = 1
def main():
# Генерация данных
X, y = make_classification(n_samples=n_samples,
n_features=n_features,
n_redundant=n_redundant,
n_informative=n_informative,
random_state=random_state,
n_clusters_per_class=n_clusters_per_class)
# Тестовая и обучающая выборки
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.65, random_state=random_state)
# Создание моделей
linear_regression(X_train, X_test, y_train, y_test)
polin_regression_4(X_train, X_test, y_train, y_test)
gr_polin_regression_4(X_train, X_test, y_train, y_test)
# Создание линейной регрессии
def linear_regression(X_train, X_test, y_train, y_test):
linear_regression = LogisticRegression()
linear_regression.fit(X_train, y_train)
linear_regression_score = linear_regression.score(X_train, y_train)
linear_pred = linear_regression.predict(X_test)
plt.scatter(X_test[:, 0], X_test[:, 1], c=linear_pred, cmap="bwr")
plt.title("Линейная регрессия")
plt.xlabel("Признак 1")
plt.ylabel("Признак 2")
plt.show()
print("Линейная регрессия: {}".format(linear_regression_score))
#Создание полиномиальной регрессии со степенью 4
def polin_regression_4(X_train, X_test, y_train, y_test):
poly_regression = make_pipeline(PolynomialFeatures(degree=4), LogisticRegression())
poly_regression.fit(X_train, y_train)
polynomial_regression_score = poly_regression.score(X_train, y_train)
poly_pred = poly_regression.predict(X_test)
plt.scatter(X_test[:, 0], X_test[:, 1], c=poly_pred, cmap="bwr")
plt.title("Полиномиальная регрессия")
plt.xlabel("Признак 1")
plt.ylabel("Признак 2")
plt.show()
print("Полиномиальная регрессия: {}".format(polynomial_regression_score))
#Создание гребневой полиномиальной регрессии со степенью 4 и alpha = 1.0
def gr_polin_regression_4(X_train, X_test, y_train, y_test):
ridge_regression = make_pipeline(PolynomialFeatures(degree=4), Ridge(alpha=1.0))
ridge_regression.fit(X_train, y_train)
ridge_regression_score = ridge_regression.score(X_train, y_train)
ridge_pred = ridge_regression.predict(X_test)
plt.scatter(X_test[:, 0], X_test[:, 1], c=ridge_pred, cmap="bwr")
plt.title("Гребневая полиномиальная регрессия")
plt.xlabel("Признак 1")
plt.ylabel("Признак 2")
plt.show()
print("Гребневая полиномиальная регрессия: {}".format(ridge_regression_score))
main()