перепутал лабы
This commit is contained in:
parent
c6a08076a5
commit
da80c5bcc8
4
.gitignore
vendored
4
.gitignore
vendored
@ -1,4 +1,6 @@
|
||||
data/jio_mart_items.csv
|
||||
/data
|
||||
/Lab_2/lab_2.ipynb
|
||||
/Lab_3/lab_3.ipynb
|
||||
/Lab_3/lab_3.ipynb
|
||||
/Lab_4/lab_4.ipynb
|
||||
/Lab_4/lab_products_clustering.ipynb
|
316
Lab_4/lab4.ipynb
316
Lab_4/lab4.ipynb
File diff suppressed because one or more lines are too long
@ -1,200 +0,0 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e7893b9e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"# Лабораторная работа: Методы искусственного интеллекта\n",
|
||||
"## Задача кластеризации продуктов с использованием cuML\n",
|
||||
"### Вариант: Продукты\n",
|
||||
"В данной работе используется библиотека cuML для GPU-ускоренного анализа данных. Цель: провести кластеризацию продуктов на основе их характеристик."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "e3834005",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Загрузка и исследование данных"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "5530d138",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import cudf\n",
|
||||
"import cuml\n",
|
||||
"from cuml.preprocessing import LabelEncoder\n",
|
||||
"from cuml.decomposition import PCA\n",
|
||||
"from cuml.cluster import KMeans\n",
|
||||
"import cupy as cp\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
"# Загрузка данных\n",
|
||||
"df = cudf.read_csv('your_dataset_path.csv')\n",
|
||||
"print(df.info())\n",
|
||||
"print(df.head())"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "49112908",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Предварительная обработка данных"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "1e3ef9fa",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Обработка пропущенных значений\n",
|
||||
"df = df.dropna()\n",
|
||||
"\n",
|
||||
"# Кодирование категориального признака 'items'\n",
|
||||
"label_encoder = LabelEncoder()\n",
|
||||
"df['items_encoded'] = label_encoder.fit_transform(df['items'])\n",
|
||||
"\n",
|
||||
"# Нормализация числовых признаков\n",
|
||||
"numeric_features = ['items_encoded', 'price']\n",
|
||||
"df_scaled = df[numeric_features].astype('float32')\n",
|
||||
"\n",
|
||||
"# Преобразование данных в формат cupy\n",
|
||||
"X = cp.asarray(df_scaled.values)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "ff5f1f8f",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Понижение размерности и визуализация данных"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "e15c80bb",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Применение PCA для понижения размерности\n",
|
||||
"pca = PCA(n_components=2)\n",
|
||||
"reduced_data = pca.fit_transform(X)\n",
|
||||
"\n",
|
||||
"# Преобразуем данные из cupy в numpy\n",
|
||||
"reduced_data_np = reduced_data.get()\n",
|
||||
"\n",
|
||||
"# Визуализация данных\n",
|
||||
"plt.scatter(reduced_data_np[:, 0], reduced_data_np[:, 1])\n",
|
||||
"plt.title('Визуализация данных после PCA')\n",
|
||||
"plt.xlabel('PC1')\n",
|
||||
"plt.ylabel('PC2')\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "f2eef505",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Выбор оптимального количества кластеров"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "f72195d2",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Оценка инерции и коэффициента силуэта\n",
|
||||
"inertia = []\n",
|
||||
"silhouette_scores = []\n",
|
||||
"k_range = range(2, 11)\n",
|
||||
"for k in k_range:\n",
|
||||
" kmeans = KMeans(n_clusters=k, random_state=42)\n",
|
||||
" kmeans.fit(reduced_data)\n",
|
||||
" inertia.append(kmeans.inertia_)\n",
|
||||
" silhouette_scores.append(cuml.metrics.silhouette_score(reduced_data, kmeans.labels_))\n",
|
||||
"\n",
|
||||
"# Построение графиков\n",
|
||||
"plt.figure(figsize=(14, 5))\n",
|
||||
"plt.subplot(1, 2, 1)\n",
|
||||
"plt.plot(k_range, inertia, marker='o')\n",
|
||||
"plt.title('Критерий инерции')\n",
|
||||
"plt.xlabel('Число кластеров')\n",
|
||||
"plt.ylabel('Инерция')\n",
|
||||
"\n",
|
||||
"plt.subplot(1, 2, 2)\n",
|
||||
"plt.plot(k_range, silhouette_scores, marker='o')\n",
|
||||
"plt.title('Коэффициент силуэта')\n",
|
||||
"plt.xlabel('Число кластеров')\n",
|
||||
"plt.ylabel('Силуэт')\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "180e85ac",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Кластерный анализ"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "dd573024",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Кластеризация с использованием KMeans\n",
|
||||
"optimal_k = 4 # Выбираем на основе графиков\n",
|
||||
"kmeans = KMeans(n_clusters=optimal_k, random_state=42)\n",
|
||||
"labels = kmeans.fit_predict(reduced_data)\n",
|
||||
"\n",
|
||||
"# Визуализация кластеров\n",
|
||||
"plt.scatter(reduced_data[:, 0], reduced_data[:, 1], c=labels, cmap='viridis')\n",
|
||||
"plt.title('Кластеры (KMeans)')\n",
|
||||
"plt.xlabel('PC1')\n",
|
||||
"plt.ylabel('PC2')\n",
|
||||
"plt.show()"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"id": "407d268e",
|
||||
"metadata": {},
|
||||
"source": [
|
||||
"### Оценка качества кластеризации"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"id": "d00795e2",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# Оценка коэффициента силуэта\n",
|
||||
"silhouette = cuml.metrics.silhouette_score(reduced_data, labels)\n",
|
||||
"print(f'Силуэт для кластеризации: {silhouette:.2f}')"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 5
|
||||
}
|
Loading…
Reference in New Issue
Block a user