Compare commits

..

2 Commits

Author SHA1 Message Date
1e252c4c5f final version 2026-05-04 17:48:14 +03:00
d7dd6c17eb complete solo task 2026-05-04 17:21:37 +03:00
5 changed files with 961 additions and 0 deletions

View File

@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}

View File

@ -0,0 +1,6 @@
{
"cells": [],
"metadata": {},
"nbformat": 4,
"nbformat_minor": 5
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

164
week4_scikit_learn.ipynb Normal file
View File

@ -0,0 +1,164 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": 3,
"id": "7f8f4a9c-fddd-483a-b048-9afd30fb3bc2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"==================================================\n",
"MLPClassifier\n",
"==================================================\n",
"\n",
"1. max_iter = 100 (недообучение)\n",
" Точность на тесте: 0.4000\n",
" precision recall f1-score support\n",
"\n",
" 0 1.00 1.00 1.00 10\n",
" 1 0.00 0.00 0.00 9\n",
" 2 0.18 0.18 0.18 11\n",
"\n",
" accuracy 0.40 30\n",
" macro avg 0.39 0.39 0.39 30\n",
"weighted avg 0.40 0.40 0.40 30\n",
"\n",
"\n",
"2. max_iter = 500 (оптимальное)\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Пользователь\\PycharmProjects\\PythonProject7\\week4-feature-selection\\venv\\Lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:785: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (100) reached and the optimization hasn't converged yet.\n",
" warnings.warn(\n",
"C:\\Users\\Пользователь\\PycharmProjects\\PythonProject7\\week4-feature-selection\\venv\\Lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:785: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (500) reached and the optimization hasn't converged yet.\n",
" warnings.warn(\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" Точность на тесте: 0.9333\n",
" precision recall f1-score support\n",
"\n",
" 0 1.00 1.00 1.00 10\n",
" 1 1.00 0.78 0.88 9\n",
" 2 0.85 1.00 0.92 11\n",
"\n",
" accuracy 0.93 30\n",
" macro avg 0.95 0.93 0.93 30\n",
"weighted avg 0.94 0.93 0.93 30\n",
"\n",
"\n",
"3. max_iter = 2500 (долгое обучение)\n",
" Точность на тесте: 0.9667\n",
" precision recall f1-score support\n",
"\n",
" 0 1.00 1.00 1.00 10\n",
" 1 1.00 0.89 0.94 9\n",
" 2 0.92 1.00 0.96 11\n",
"\n",
" accuracy 0.97 30\n",
" macro avg 0.97 0.96 0.97 30\n",
"weighted avg 0.97 0.97 0.97 30\n",
"\n",
"\n",
"==================================================\n",
"ВЫВОДЫ\n",
"==================================================\n",
"max_iter=100 → точность: 0.4000 (недообучение)\n",
"max_iter=500 → точность: 0.9333 (оптимально)\n",
"max_iter=2500 → точность: 0.9667 (могло переобучиться)\n"
]
}
],
"source": [
"from sklearn.datasets import load_iris\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.neural_network import MLPClassifier\n",
"from sklearn.metrics import classification_report\n",
"import numpy as np\n",
"\n",
"# Загрузка и разбиение данных\n",
"X, y = load_iris(return_X_y=True)\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
"\n",
"print(\"=\"*50)\n",
"print(\"MLPClassifier\")\n",
"print(\"=\"*50)\n",
"\n",
"# max_iter = 100 (недообучение)\n",
"print(\"\\n1. max_iter = 100 (недообучение)\")\n",
"clf_100 = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', max_iter=100, random_state=42)\n",
"clf_100.fit(X_train, y_train)\n",
"print(f\" Точность на тесте: {clf_100.score(X_test, y_test):.4f}\")\n",
"print(classification_report(y_test, clf_100.predict(X_test), zero_division=0))\n",
"\n",
"# max_iter = 500 (оптимальное)\n",
"print(\"\\n2. max_iter = 500 (оптимальное)\")\n",
"clf_500 = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', max_iter=500, random_state=42)\n",
"clf_500.fit(X_train, y_train)\n",
"print(f\" Точность на тесте: {clf_500.score(X_test, y_test):.4f}\")\n",
"print(classification_report(y_test, clf_500.predict(X_test)))\n",
"\n",
"# max_iter = 2500 (переобучение)\n",
"print(\"\\n3. max_iter = 2500 (долгое обучение)\")\n",
"clf_2500 = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', max_iter=2500, random_state=42)\n",
"clf_2500.fit(X_train, y_train)\n",
"print(f\" Точность на тесте: {clf_2500.score(X_test, y_test):.4f}\")\n",
"print(classification_report(y_test, clf_2500.predict(X_test)))\n",
"\n",
"# Вывод\n",
"print(\"\\n\" + \"=\"*50)\n",
"print(\"ВЫВОДЫ\")\n",
"print(\"=\"*50)\n",
"print(f\"max_iter=100 → точность: {clf_100.score(X_test, y_test):.4f} (недообучение)\")\n",
"print(f\"max_iter=500 → точность: {clf_500.score(X_test, y_test):.4f} (оптимально)\")\n",
"print(f\"max_iter=2500 → точность: {clf_2500.score(X_test, y_test):.4f} (могло переобучиться)\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "555f6188-4462-4b9c-b17d-fa0788a7e3eb",
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"id": "5ccb37ef-fb03-406c-8017-d0b74a00ea38",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.13.11"
}
},
"nbformat": 4,
"nbformat_minor": 5
}