91 lines
3.9 KiB
Python
91 lines
3.9 KiB
Python
|
# 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()
|