74 lines
3.2 KiB
Python
74 lines
3.2 KiB
Python
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)) |