lab 1 ready
This commit is contained in:
parent
7ce7f86d4b
commit
ae4894e12d
49
belyaeva_ekaterina_lab_1/README.md
Normal file
49
belyaeva_ekaterina_lab_1/README.md
Normal file
@ -0,0 +1,49 @@
|
||||
## Задание
|
||||
|
||||
Вариант 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)
|
||||
|
||||
## Как запустить лабораторную
|
||||
|
||||
Запустить файл main.py
|
||||
|
||||
## Используемые технологии
|
||||
|
||||
Библиотеки matplotlib, scikit-learn, их компоненты, все описано ниже
|
||||
|
||||
## Описание лабораторной (программы)
|
||||
|
||||
Программа генерирует набор данных с помощью функции make_classification с параметрами из задания
|
||||
Далее происходит разделение данных на обучащей и тестовый наборы с помощью функции train_test_split
|
||||
Потом происходит обучение моделей на тестовой выборке
|
||||
И предсказание уже на данных, которые остались
|
||||
В конце программа строит графики, отображающие данные в задании модели и выводит в консоль оценку их работы
|
||||
|
||||
## Результат
|
||||
|
||||
В результате программа выводит графики, скриншоты которых находятся в репозитории, а также оценки производительности обучения, полученные через model.score:
|
||||
Линейная регрессия: 0.92
|
||||
Полиномиальная регрессия: 0.96
|
||||
Гребневая полиномиальная регрессия: 0.7958276459808132
|
||||
Из результата видно, что наиболее качественной для решения данной задачи оказалась полиномиальная регрессия, наименее - гребневая полиномиальная
|
||||
|
||||
После полученных результатов я решила провести несколько тестов и вот что из этого вышло:
|
||||
|
||||
Если поменять test_size c 0.8 на 0.2, то результат работы моделей ухудшится, и чем хуже он был до этого, тем еще более хуже стал
|
||||
Линейная регрессия: 0.8725
|
||||
Полиномиальная регрессия: 0.955
|
||||
Гребневая полиномиальная регрессия: 0.6678458571780717
|
||||
|
||||
Если изменить количество samples с 500 на 2500, то результат работы моделей значительно улучшится:
|
||||
Линейная регрессия: 0.996
|
||||
Полиномиальная регрессия: 0.998
|
||||
Гребневая полиномиальная регрессия: 0.9701030991054763
|
||||
Несмотря на это, по качеству модели выстроены все в том же порядке, что и при вводе дефолтных данных, хотя по результату все они решают задачу достаточно хорошо при получении достаточного количества данных
|
BIN
belyaeva_ekaterina_lab_1/data.png
Normal file
BIN
belyaeva_ekaterina_lab_1/data.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 192 KiB |
BIN
belyaeva_ekaterina_lab_1/linearRegression.png
Normal file
BIN
belyaeva_ekaterina_lab_1/linearRegression.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 196 KiB |
74
belyaeva_ekaterina_lab_1/main.py
Normal file
74
belyaeva_ekaterina_lab_1/main.py
Normal file
@ -0,0 +1,74 @@
|
||||
import matplotlib.pyplot as plt
|
||||
from sklearn.datasets import make_classification
|
||||
from sklearn.model_selection import train_test_split
|
||||
from sklearn.linear_model import LogisticRegression
|
||||
from sklearn.preprocessing import PolynomialFeatures
|
||||
from sklearn.pipeline import make_pipeline
|
||||
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
|
||||
|
||||
# Генерируем данные
|
||||
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.8, random_state=random_state)
|
||||
|
||||
# Обучение моделей
|
||||
# Линейная регрессия
|
||||
linear_regression = LogisticRegression()
|
||||
linear_regression.fit(X_train, y_train)
|
||||
linear_regression_score = linear_regression.score(X_train, y_train)
|
||||
|
||||
# Полиномиальная регрессия со степенью 4
|
||||
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)
|
||||
|
||||
# Гребневая полиномиальная регрессия со степенью 4 и alpha = 1.0
|
||||
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)
|
||||
|
||||
# Предсказание на тестовом наборе
|
||||
linear_pred = linear_regression.predict(X_test)
|
||||
poly_pred = poly_regression.predict(X_test)
|
||||
ridge_pred = ridge_regression.predict(X_test)
|
||||
|
||||
# Построение графиков
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap="bwr")
|
||||
plt.title("График исходных данных")
|
||||
plt.xlabel("Признак 1")
|
||||
plt.ylabel("Признак 2")
|
||||
plt.show()
|
||||
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=linear_pred, cmap="bwr")
|
||||
plt.title("График предсказаний линейной регрессии")
|
||||
plt.xlabel("Признак 1")
|
||||
plt.ylabel("Признак 2")
|
||||
plt.show()
|
||||
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=poly_pred, cmap="bwr")
|
||||
plt.title("График предсказаний полиномиальной регрессии")
|
||||
plt.xlabel("Признак 1")
|
||||
plt.ylabel("Признак 2")
|
||||
plt.show()
|
||||
|
||||
plt.scatter(X_test[:, 0], X_test[:, 1], c=ridge_pred, cmap="bwr")
|
||||
plt.title("График предсказаний гребневой полиномиальной регрессии")
|
||||
plt.xlabel("Признак 1")
|
||||
plt.ylabel("Признак 2")
|
||||
plt.show()
|
||||
|
||||
print("Результаты моделей:")
|
||||
print("Линейная регрессия: {}".format(linear_regression_score))
|
||||
print("Полиномиальная регрессия: {}".format(polynomial_regression_score))
|
||||
print("Гребневая полиномиальная регрессия: {}".format(ridge_regression_score))
|
BIN
belyaeva_ekaterina_lab_1/polyRegression.png
Normal file
BIN
belyaeva_ekaterina_lab_1/polyRegression.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 198 KiB |
BIN
belyaeva_ekaterina_lab_1/ridgePolyRegression.png
Normal file
BIN
belyaeva_ekaterina_lab_1/ridgePolyRegression.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 216 KiB |
Loading…
Reference in New Issue
Block a user