diff --git a/kamyshov_danila_lab_1/app.py b/kamyshov_danila_lab_1/app.py new file mode 100644 index 0000000..3c8618a --- /dev/null +++ b/kamyshov_danila_lab_1/app.py @@ -0,0 +1,61 @@ +from flask import Flask, request, render_template +from sklearn.datasets import make_moons +from sklearn.linear_model import LinearRegression +from sklearn.preprocessing import PolynomialFeatures +from sklearn.neural_network import MLPRegressor +from sklearn.model_selection import train_test_split +import matplotlib.pyplot as plt + +app = Flask(__name__) + +@app.route('/') +def home(): + return render_template('index.html') + +@app.route('/compare_models', methods=['POST']) +def compare_models(): + # Генерация данных + rs = 0 + X, y = make_moons(noise=0.3, random_state=rs) + X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=rs) + + # Линейная регрессия + lr = LinearRegression() + lr.fit(X_train, y_train) + lr_score = lr.score(X_test, y_test) + + # Полиномиальная регрессия (степень 3) + poly = PolynomialFeatures(degree=3) + X_poly = poly.fit_transform(X_train) + poly_reg = LinearRegression() + poly_reg.fit(X_poly, y_train) + poly_score = poly_reg.score(poly.transform(X_test), y_test) + + # Многослойный персептрон (100 нейронов в скрытом слое, alpha=0.01) + mlp = MLPRegressor(hidden_layer_sizes=(100,), alpha=0.01, random_state=rs) + mlp.fit(X_train, y_train) + mlp_score = mlp.score(X_test, y_test) + + # Создание графиков + plt.figure(figsize=(15, 4)) + + plt.subplot(131) + plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.RdBu) + plt.title('Линейная регрессия\n(Score: {:.2f})'.format(lr_score)) + + plt.subplot(132) + plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.RdBu) + plt.title('Полиномиальная регрессия\n(Score: {:.2f})'.format(poly_score)) + + plt.subplot(133) + plt.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=plt.cm.RdBu) + plt.title('Многослойный персептрон\n(Score: {:.2f})'.format(mlp_score)) + + plt.tight_layout() + + plt.savefig('static/models_comparison.png') + + return render_template('index.html', result=True) + +if __name__ == '__main__': + app.run(debug=True) diff --git a/kamyshov_danila_lab_1/readme.md b/kamyshov_danila_lab_1/readme.md new file mode 100644 index 0000000..747817c --- /dev/null +++ b/kamyshov_danila_lab_1/readme.md @@ -0,0 +1,29 @@ +Общее задание: +Используя код из пункта «Регуляризация и сеть прямого распространения» из [1] (стр. 228), сгенерируйте определенный тип данных и +сравните на нем 3 модели (по варианту). Постройте графики, отобразите качество моделей, объясните полученные результаты. + +13 вариант:Данные: make_moons (noise=0.3, random_state=rs) +Модели: +· Линейную регрессию +· Полиномиальную регрессию (со степенью 3) +43 +· Многослойный персептрон со 100-а нейронами в скрытом слое (alpha += 0.01) + +Чтобы Запустить приложение нужно запустить файл app.py + +Технологии: + +Язык программирования: Python +Фреймворк: Flask (для веб-приложения) +Библиотеки: NumPy, scikit-learn, Matplotlib +Описание программы: +Программа представляет собой веб-приложение, реализованное с использованием Flask. Она генерирует данные, используя make_moons из scikit-learn, и сравнивает три модели машинного обучения: линейную регрессию, полиномиальную регрессию степени 3 и многослойный персептрон с 100 нейронами в скрытом слое и параметром регуляризации alpha=0.01. + +Входные данные: + +Данные, сгенерированные с использованием make_moons (noise=0.3, random_state=0). +Выходные данные: + +Веб-страница с кнопкой "Сравнить модели". +После нажатия кнопки выводятся графики, представляющие результаты трех моделей (линейной регрессии, полиномиальной регрессии и многослойного персептрона) с соответствующими оценками (score). Графики сохраняются и отображаются на веб-странице. \ No newline at end of file diff --git a/kamyshov_danila_lab_1/static/models_comparison.png b/kamyshov_danila_lab_1/static/models_comparison.png new file mode 100644 index 0000000..fa3817e Binary files /dev/null and b/kamyshov_danila_lab_1/static/models_comparison.png differ diff --git a/kamyshov_danila_lab_1/templates/index.html b/kamyshov_danila_lab_1/templates/index.html new file mode 100644 index 0000000..2e5c84f --- /dev/null +++ b/kamyshov_danila_lab_1/templates/index.html @@ -0,0 +1,24 @@ + + +
+ + + +