Add lab 4

This commit is contained in:
BulatReznik 2023-11-17 00:15:55 +04:00
parent a8c58683dd
commit f5517eecad
6 changed files with 20758 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 251 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

View File

@ -0,0 +1,66 @@
Вариант 2
Задание:
Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту(таблица 9), самостоятельно сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения сформулированной вами задачи.
Данные:
Данный набор данных использовался во второй главе недавней книги Аурелиена Жерона "Практическое машинное обучение с помощью Scikit-Learn и TensorFlow". Он служит отличным введением в реализацию алгоритмов машинного обучения, потому что требует минимальной предварительной обработки данных, содержит легко понимаемый список переменных и находится в оптимальном размере, который не слишком мал и не слишком большой.
Данные содержат информацию о домах в определенном районе Калифорнии и некоторую сводную статистику на основе данных переписи 1990 года. Следует отметить, что данные не прошли предварительную очистку, и для них требуются некоторые этапы предварительной обработки. Столбцы включают в себя следующие переменные, их названия весьма наглядно описывают их суть:
долгота longitude
широта latitude
средний возраст жилья median_house_value
общее количество комнат total_rooms
общее количество спален total_bedrooms
население population
домохозяйства households
медианный доход median_income
Запуск:
Запустите файл lab4.py
Описание программы:
1. Загружает набор данных из файла 'housing.csv', который содержит информацию о домах в Калифорнии, включая их координаты, возраст, количество комнат, население, доход и другие характеристики.
2. Предобработка данных: Производится заполнение пропущенных значений медианными значениями и стандартизация данных для более точных результатов кластеризации.
3. Выбор метода кластеризации: Программа использует метод linkage и евклидовой метрикой для объединения домов в кластеры.
4. Определение числа кластеров: В данном случае, выбрано 5 кластеров для группировки домов.
5. Применение кластеризации: Программа выполняет кластеризацию, присваивая каждому дому метку кластера на основе его характеристик.
6. Визуализация результатов: Результаты кластеризации визуализируются на графике, используя библиотеку seaborn. Каждый дом представлен точкой, где координаты - это возраст дома и общее количество комнат, а размер точки соответствует стоимости жилья.
7. Добавление информации о кластерах: Дополнительная информация о принадлежности кластерам добавляется к исходным данным.
8. Программа предоставляет статистический анализ для каждого кластера, включая средние значения, стандартное отклонение и квартили характеристик домов.
Результаты:
![Alt text](1.png)
![Alt text](2.png)
![Alt text](3.png)
Выводы:
Количество кластеров: В данной кластеризации использовано 5 кластеров для группировки домов в Калифорнии на основе их характеристик.
Характеристики кластеров:
Кластер 1: Включает дома с высоким средним возрастом жилья и относительно низкой стоимостью жилья. Это могут быть старые дома в более старых районах.
Кластер 2: Содержит дома с высокой стоимостью жилья и высокими доходами. Возможно, это элитные районы с дорогим жильем.
Кластер 3: Группирует дома с низким средним возрастом жилья и средней стоимостью жилья. Возможно, это новые постройки в развивающихся районах.
Кластер 4: Включает дома с разнообразными характеристиками и средней стоимостью жилья. Этот кластер может представлять смешанные районы.
Кластер 5: В этот кластер входят дома с низкими доходами и средним возрастом жилья. Возможно, это районы с более доступным жильем.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,51 @@
# Использовать метод кластеризации по варианту для данных из таблицы 1 по варианту(таблица 9), самостоятельно
# сформулировав задачу. Интерпретировать результаты и оценить, насколько хорошо он подходит для решения
# сформулированной вами задачи.
# Кластеризация: Группировка домов на основе их характеристик, таких как широта, долгота, возраст дома,
# общее количество комнат и т. д. Выделяем общие особенности или характеристики в различных районах.
# У меня второй вариант, остаток от деления номера варианта на 5 : 5/2=0 целых, остаток 2, берем второй вариант -
# алгоритм кластеризации - linkage
import matplotlib.pyplot as plt
import pandas as pd
import seaborn as sns
from scipy.cluster.hierarchy import linkage, fcluster
from sklearn.preprocessing import StandardScaler
data = pd.read_csv('housing.csv')
# Выделение интересующих столбцов
features = data[['housing_median_age', 'total_rooms', 'median_house_value']]
# Заполнение пропущенных значений медианой
features = features.fillna(features.median())
# Стандартизация данных
scaler = StandardScaler()
scaled_features = scaler.fit_transform(features)
# Применение алгоритма linkage для кластеризации
linkage_matrix = linkage(scaled_features, method='ward', metric='euclidean')
# Выбор оптимального числа кластеров и применение кластеризации
num_clusters = 5 # Выберите желаемое количество кластеров
clusters = fcluster(linkage_matrix, num_clusters, criterion='maxclust')
# Добавление информации о кластерах в исходные данные
features['cluster'] = clusters
# Вывод результатов кластеризации
print(features[['housing_median_age', 'total_rooms', 'median_house_value', 'cluster']])
clustered_data = features.groupby('cluster').describe()
print(clustered_data)
# Визуализация результатов кластеризации с использованием seaborn
plt.figure(figsize=(12, 6))
sns.scatterplot(x='housing_median_age', y='total_rooms', size='median_house_value', sizes=(10, 200), hue='cluster', palette='viridis', data=features)
plt.title('Clustering Results')
plt.xlabel('Housing Median Age')
plt.ylabel('Total Rooms')
plt.show()