Загрузка данных


import pandas as pd

from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier, MLPRegressor
from sklearn.metrics import accuracy_score, r2_score, mean_squared_error


# =========================
# 1. КЛАССИФИКАЦИЯ IRIS
# =========================

iris_url = "https://gist.githubusercontent.com/netj/8836201/raw/6f9306ad21398ea43cba4f7d537619d0e07d5ae3/iris.csv"

iris = pd.read_csv(iris_url)

print("Первые строки датасета Iris:")
print(iris.head())
print()

# признаки
X_iris = iris.drop("variety", axis=1)

# целевая переменная
y_iris = iris["variety"]

# разделение на обучение и тест
X_train, X_test, y_train, y_test = train_test_split(
    X_iris,
    y_iris,
    test_size=0.2,
    random_state=123
)

# создание модели классификации
mlp_classifier = MLPClassifier(
    hidden_layer_sizes=(10,),
    max_iter=1000,
    random_state=123
)

# обучение модели
mlp_classifier.fit(X_train, y_train)

# предсказание
y_pred = mlp_classifier.predict(X_test)

# точность
accuracy = accuracy_score(y_test, y_pred)

print("===== MLPClassifier =====")
print("Точность модели:", accuracy)
print("Loss:", mlp_classifier.loss_)
print("Количество слоев весов:", len(mlp_classifier.coefs_))
print("Формы весов:", [w.shape for w in mlp_classifier.coefs_])
print("Количество intercepts:", len(mlp_classifier.intercepts_))
print("Количество итераций:", mlp_classifier.n_iter_)
print("Функция активации выходного слоя:", mlp_classifier.out_activation_)
print()


# =========================
# 2. РЕГРЕССИЯ SALARY
# =========================

salary_url = "https://raw.githubusercontent.com/AnnaShestova/salary-years-simple-linear-regression/master/Salary_Data.csv"

salary = pd.read_csv(salary_url)

print("Первые строки датасета Salary:")
print(salary.head())
print()

# признаки
X_salary = salary[["YearsExperience"]]

# целевая переменная
y_salary = salary["Salary"]

# разделение на обучение и тест
X_train, X_test, y_train, y_test = train_test_split(
    X_salary,
    y_salary,
    test_size=0.2,
    random_state=123
)

# создание модели регрессии
mlp_regressor = MLPRegressor(
    hidden_layer_sizes=(10,),
    max_iter=3000,
    random_state=123
)

# обучение модели
mlp_regressor.fit(X_train, y_train)

# предсказание
y_pred = mlp_regressor.predict(X_test)

# метрики
r2 = r2_score(y_test, y_pred)
mse = mean_squared_error(y_test, y_pred)

print("===== MLPRegressor =====")
print("R2 модели:", r2)
print("MSE модели:", mse)
print("Loss:", mlp_regressor.loss_)
print("Количество слоев весов:", len(mlp_regressor.coefs_))
print("Формы весов:", [w.shape for w in mlp_regressor.coefs_])
print("Количество intercepts:", len(mlp_regressor.intercepts_))
print("Количество итераций:", mlp_regressor.n_iter_)
print("Функция активации выходного слоя:", mlp_regressor.out_activation_)