From 241c01c01779aedec5c555afac96b4ac0d0355d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=B2=D0=B0=D0=BD=20=D0=9A=D1=83=D0=B7=D0=BD=D0=B5?= =?UTF-8?q?=D1=86=D0=BE=D0=B2?= Date: Tue, 13 May 2025 22:17:19 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B8=D0=BD=D0=BE=D1=80=D0=BD=D1=8B?= =?UTF-8?q?=D0=B5=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=BA=D0=B8=20=D0=BD=D0=B5=D0=BA=D0=BE=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D1=8B=D1=85=20Markdown'=D0=BE=D0=B2.=20=D0=94=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BE=D1=80=D1=80=D0=B5=D0=BA=D1=82=D0=BD=D0=BE?= =?UTF-8?q?=D0=B3=D0=BE=20=D0=BF=D1=80=D0=BE=D1=81=D0=BC=D0=BE=D1=82=D1=80?= =?UTF-8?q?=D0=B0=20Markdown'a=20=D1=81=20=D0=BF=D0=BE=D1=88=D0=B0=D0=B3?= =?UTF-8?q?=D0=BE=D0=B2=D1=8B=D0=BC=20=D0=B0=D0=BB=D0=B3=D0=BE=D1=80=D0=B8?= =?UTF-8?q?=D1=82=D0=BC=D0=BE=D0=BC=20=D0=B1=D0=BB=D0=BE=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=20=D0=BA=D0=BE=D0=B4=D0=B0=20=D0=BD=D0=B5=D0=BE=D0=B1=D1=85?= =?UTF-8?q?=D0=BE=D0=B4=D0=B8=D0=BC=D0=BE=20=D1=81=D0=B4=D0=B5=D0=BB=D0=B0?= =?UTF-8?q?=D1=82=D1=8C=20'=D0=B4=D0=B0=D0=B1=D0=BB-=D0=BA=D0=BB=D0=B8?= =?UTF-8?q?=D0=BA'=20=D0=BF=D0=BE=20=D0=B2=D1=8B=D0=B1=D1=80=D0=B0=D0=BD?= =?UTF-8?q?=D0=BD=D0=BE=D0=B9=20Markdown-=D1=8F=D1=87=D0=B5=D0=B9=D0=BA?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../week4__scikit_learn-checkpoint.ipynb | 62 +++++++------------ week4__scikit_learn.ipynb | 62 +++++++------------ 2 files changed, 46 insertions(+), 78 deletions(-) diff --git a/.ipynb_checkpoints/week4__scikit_learn-checkpoint.ipynb b/.ipynb_checkpoints/week4__scikit_learn-checkpoint.ipynb index 0e73a28..e877384 100644 --- a/.ipynb_checkpoints/week4__scikit_learn-checkpoint.ipynb +++ b/.ipynb_checkpoints/week4__scikit_learn-checkpoint.ipynb @@ -45,15 +45,15 @@ "from sklearn.neural_network import MLPClassifier\n", "from sklearn.metrics import classification_report\n", "\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)\n", "\n", - "# Модель MLP — многослойный перцептрон\n", + "#Модель MLP — многослойный перцептрон\n", "clf = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', max_iter=500)\n", "clf.fit(X_train, y_train)\n", "\n", - "# Отчёт о точности\n", + "#Отчёт о точности\n", "print(classification_report(y_test, clf.predict(X_test)))" ] }, @@ -65,28 +65,12 @@ "--------------------------------------------------" ] }, - { - "cell_type": "markdown", - "id": "d0e92ee0-5dc3-4770-bef6-9128528698a7", - "metadata": {}, - "source": [ - "# Был выбран пример \"Inductive Clustering\" из раздела \"Clustering\". Ниже реализация алгоритма со scikit-learn" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fe13ea46-9ab7-4d59-a5c8-319d75de55c8", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "id": "e0cdc91f-bac2-47a5-8e77-2c6aa79483bb", "metadata": {}, "source": [ - "# Для самостоятельного задания выбран \"Inductive Clustering\" из Clustering. Ниже непосредственный пример его реализации со scikit-learn" + "# Для самостоятельного задания выбран \"Inductive Clustering\" из Clustering. Ниже непосредственный пример его реализации со scikit-learn\n" ] }, { @@ -260,11 +244,11 @@ "from sklearn.utils.metaestimators import available_if\n", "from sklearn.utils.validation import check_is_fitted\n", "\n", - "# === Константы ===\n", + "# Константы \n", "RANDOM_STATE = 42\n", "N_SAMPLES = 1000\n", "\n", - "# === Вспомогательная функция для делегирования методов классификатора ===\n", + "# Вспомогательная функция для делегирования методов классификатора\n", "def _classifier_has(attr):\n", " return lambda estimator: (\n", " hasattr(estimator.classifier_, attr)\n", @@ -272,7 +256,7 @@ " else hasattr(estimator.classifier, attr)\n", " )\n", "\n", - "# === Класс индуктивного кластеризатора ===\n", + "# Класс индуктивного кластеризатора \n", "class InductiveClusterer(BaseEstimator):\n", " def __init__(self, clusterer, classifier):\n", " self.clusterer = clusterer\n", @@ -295,11 +279,11 @@ " check_is_fitted(self)\n", " return self.classifier_.decision_function(X)\n", "\n", - "# === Функция для отрисовки точек ===\n", + "# Функция для отрисовки точек \n", "def plot_scatter(X, color, alpha=0.5):\n", " return plt.scatter(X[:, 0], X[:, 1], c=color, alpha=alpha, edgecolor=\"k\")\n", "\n", - "# === Генерация обучающих данных ===\n", + "#Генерация обучающих данных \n", "X, y = make_classification(\n", " n_samples=N_SAMPLES,\n", " n_features=2,\n", @@ -310,17 +294,17 @@ " random_state=RANDOM_STATE,\n", ")\n", "\n", - "# === Кластеризация ===\n", + "# Кластеризация\n", "clusterer = AgglomerativeClustering(n_clusters=3)\n", "cluster_labels = clusterer.fit_predict(X)\n", "\n", - "# === Визуализация кластеров ===\n", + "# Визуализация кластеров \n", "plt.figure(figsize=(12, 4))\n", "plt.subplot(131)\n", "plot_scatter(X, cluster_labels)\n", "plt.title(\"Ward Linkage (Classification Data)\")\n", "\n", - "# === Генерация новых (неизвестных) точек ===\n", + "# Генерация новых (неизвестных) точек\n", "X_new, _ = make_classification(\n", " n_samples=10,\n", " n_features=2,\n", @@ -331,20 +315,20 @@ " random_state=RANDOM_STATE + 1,\n", ")\n", "\n", - "# === Визуализация известных и новых точек ===\n", + "# Визуализация известных и новых точек \n", "plt.subplot(132)\n", "plot_scatter(X, cluster_labels)\n", "plot_scatter(X_new, \"black\", 1)\n", "plt.title(\"Unknown instances\")\n", "\n", - "# === Индуктивное обучение ===\n", + "# Индуктивное обучение \n", "classifier = RandomForestClassifier(random_state=RANDOM_STATE)\n", "inductive_learner = InductiveClusterer(clusterer, classifier).fit(X)\n", "\n", - "# === Предсказание кластера для новых точек ===\n", + "# Предсказание кластера для новых точек \n", "predicted_clusters = inductive_learner.predict(X_new)\n", "\n", - "# === Визуализация предсказаний и границ ===\n", + "#Визуализация предсказаний и границ \n", "ax = plt.subplot(133)\n", "plot_scatter(X, cluster_labels)\n", "plot_scatter(X_new, predicted_clusters)\n", @@ -562,23 +546,23 @@ "from sklearn.decomposition import PCA\n", "from sklearn.datasets import fetch_openml\n", "\n", - "# 1. Загрузка данных через fetch_openml\n", + "# Загрузка данных через fetch_openml\n", "data = fetch_openml(data_id=43618, as_frame=True)\n", "df = data.frame\n", "\n", - "# 2. Предобработка данных\n", + "# Предобработка данных\n", "\n", "df.fillna(df.median(), inplace=True)\n", "\n", - "# 3. Масштабирование признаков\n", + "# Масштабирование признаков\n", "scaler = StandardScaler()\n", "X_scaled = scaler.fit_transform(df)\n", "\n", - "# 4. Кластеризация\n", + "# Кластеризация\n", "clusterer = AgglomerativeClustering(n_clusters=4)\n", "cluster_labels = clusterer.fit_predict(X_scaled)\n", "\n", - "# 5. Обучение классификатора\n", + "# Обучение классификатора\n", "class InductiveClusterer(BaseEstimator):\n", " def __init__(self, clusterer, classifier):\n", " self.clusterer = clusterer\n", @@ -599,10 +583,10 @@ "classifier = RandomForestClassifier(random_state=42)\n", "inductive_learner = InductiveClusterer(clusterer, classifier).fit(X_scaled)\n", "\n", - "# 6. Предсказание сегментов для новых клиентов\n", + "# Предсказание сегментов для новых клиентов\n", "predicted_labels = inductive_learner.predict(X_scaled)\n", "\n", - "# 7. Визуализация результатов с помощью PCA\n", + "# Визуализация результатов с помощью PCA\n", "pca = PCA(n_components=2)\n", "X_pca = pca.fit_transform(X_scaled)\n", "\n", diff --git a/week4__scikit_learn.ipynb b/week4__scikit_learn.ipynb index 0e73a28..e877384 100644 --- a/week4__scikit_learn.ipynb +++ b/week4__scikit_learn.ipynb @@ -45,15 +45,15 @@ "from sklearn.neural_network import MLPClassifier\n", "from sklearn.metrics import classification_report\n", "\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)\n", "\n", - "# Модель MLP — многослойный перцептрон\n", + "#Модель MLP — многослойный перцептрон\n", "clf = MLPClassifier(hidden_layer_sizes=(10,), activation='relu', max_iter=500)\n", "clf.fit(X_train, y_train)\n", "\n", - "# Отчёт о точности\n", + "#Отчёт о точности\n", "print(classification_report(y_test, clf.predict(X_test)))" ] }, @@ -65,28 +65,12 @@ "--------------------------------------------------" ] }, - { - "cell_type": "markdown", - "id": "d0e92ee0-5dc3-4770-bef6-9128528698a7", - "metadata": {}, - "source": [ - "# Был выбран пример \"Inductive Clustering\" из раздела \"Clustering\". Ниже реализация алгоритма со scikit-learn" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "fe13ea46-9ab7-4d59-a5c8-319d75de55c8", - "metadata": {}, - "outputs": [], - "source": [] - }, { "cell_type": "markdown", "id": "e0cdc91f-bac2-47a5-8e77-2c6aa79483bb", "metadata": {}, "source": [ - "# Для самостоятельного задания выбран \"Inductive Clustering\" из Clustering. Ниже непосредственный пример его реализации со scikit-learn" + "# Для самостоятельного задания выбран \"Inductive Clustering\" из Clustering. Ниже непосредственный пример его реализации со scikit-learn\n" ] }, { @@ -260,11 +244,11 @@ "from sklearn.utils.metaestimators import available_if\n", "from sklearn.utils.validation import check_is_fitted\n", "\n", - "# === Константы ===\n", + "# Константы \n", "RANDOM_STATE = 42\n", "N_SAMPLES = 1000\n", "\n", - "# === Вспомогательная функция для делегирования методов классификатора ===\n", + "# Вспомогательная функция для делегирования методов классификатора\n", "def _classifier_has(attr):\n", " return lambda estimator: (\n", " hasattr(estimator.classifier_, attr)\n", @@ -272,7 +256,7 @@ " else hasattr(estimator.classifier, attr)\n", " )\n", "\n", - "# === Класс индуктивного кластеризатора ===\n", + "# Класс индуктивного кластеризатора \n", "class InductiveClusterer(BaseEstimator):\n", " def __init__(self, clusterer, classifier):\n", " self.clusterer = clusterer\n", @@ -295,11 +279,11 @@ " check_is_fitted(self)\n", " return self.classifier_.decision_function(X)\n", "\n", - "# === Функция для отрисовки точек ===\n", + "# Функция для отрисовки точек \n", "def plot_scatter(X, color, alpha=0.5):\n", " return plt.scatter(X[:, 0], X[:, 1], c=color, alpha=alpha, edgecolor=\"k\")\n", "\n", - "# === Генерация обучающих данных ===\n", + "#Генерация обучающих данных \n", "X, y = make_classification(\n", " n_samples=N_SAMPLES,\n", " n_features=2,\n", @@ -310,17 +294,17 @@ " random_state=RANDOM_STATE,\n", ")\n", "\n", - "# === Кластеризация ===\n", + "# Кластеризация\n", "clusterer = AgglomerativeClustering(n_clusters=3)\n", "cluster_labels = clusterer.fit_predict(X)\n", "\n", - "# === Визуализация кластеров ===\n", + "# Визуализация кластеров \n", "plt.figure(figsize=(12, 4))\n", "plt.subplot(131)\n", "plot_scatter(X, cluster_labels)\n", "plt.title(\"Ward Linkage (Classification Data)\")\n", "\n", - "# === Генерация новых (неизвестных) точек ===\n", + "# Генерация новых (неизвестных) точек\n", "X_new, _ = make_classification(\n", " n_samples=10,\n", " n_features=2,\n", @@ -331,20 +315,20 @@ " random_state=RANDOM_STATE + 1,\n", ")\n", "\n", - "# === Визуализация известных и новых точек ===\n", + "# Визуализация известных и новых точек \n", "plt.subplot(132)\n", "plot_scatter(X, cluster_labels)\n", "plot_scatter(X_new, \"black\", 1)\n", "plt.title(\"Unknown instances\")\n", "\n", - "# === Индуктивное обучение ===\n", + "# Индуктивное обучение \n", "classifier = RandomForestClassifier(random_state=RANDOM_STATE)\n", "inductive_learner = InductiveClusterer(clusterer, classifier).fit(X)\n", "\n", - "# === Предсказание кластера для новых точек ===\n", + "# Предсказание кластера для новых точек \n", "predicted_clusters = inductive_learner.predict(X_new)\n", "\n", - "# === Визуализация предсказаний и границ ===\n", + "#Визуализация предсказаний и границ \n", "ax = plt.subplot(133)\n", "plot_scatter(X, cluster_labels)\n", "plot_scatter(X_new, predicted_clusters)\n", @@ -562,23 +546,23 @@ "from sklearn.decomposition import PCA\n", "from sklearn.datasets import fetch_openml\n", "\n", - "# 1. Загрузка данных через fetch_openml\n", + "# Загрузка данных через fetch_openml\n", "data = fetch_openml(data_id=43618, as_frame=True)\n", "df = data.frame\n", "\n", - "# 2. Предобработка данных\n", + "# Предобработка данных\n", "\n", "df.fillna(df.median(), inplace=True)\n", "\n", - "# 3. Масштабирование признаков\n", + "# Масштабирование признаков\n", "scaler = StandardScaler()\n", "X_scaled = scaler.fit_transform(df)\n", "\n", - "# 4. Кластеризация\n", + "# Кластеризация\n", "clusterer = AgglomerativeClustering(n_clusters=4)\n", "cluster_labels = clusterer.fit_predict(X_scaled)\n", "\n", - "# 5. Обучение классификатора\n", + "# Обучение классификатора\n", "class InductiveClusterer(BaseEstimator):\n", " def __init__(self, clusterer, classifier):\n", " self.clusterer = clusterer\n", @@ -599,10 +583,10 @@ "classifier = RandomForestClassifier(random_state=42)\n", "inductive_learner = InductiveClusterer(clusterer, classifier).fit(X_scaled)\n", "\n", - "# 6. Предсказание сегментов для новых клиентов\n", + "# Предсказание сегментов для новых клиентов\n", "predicted_labels = inductive_learner.predict(X_scaled)\n", "\n", - "# 7. Визуализация результатов с помощью PCA\n", + "# Визуализация результатов с помощью PCA\n", "pca = PCA(n_components=2)\n", "X_pca = pca.fit_transform(X_scaled)\n", "\n",