Минорные корректировки некоторых Markdown'ов. Для корректного просмотра Markdown'a с пошаговым алгоритмом блоков кода необходимо сделать 'дабл-клик' по выбранной Markdown-ячейке
This commit is contained in:
parent
ddffe931ea
commit
241c01c017
@ -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",
|
||||
|
@ -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",
|
||||
|
Loading…
Reference in New Issue
Block a user