Add lab 4
This commit is contained in:
parent
a8c58683dd
commit
f5517eecad
BIN
almukhammetov_bulat_lab_4/1.png
Normal file
BIN
almukhammetov_bulat_lab_4/1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 251 KiB |
BIN
almukhammetov_bulat_lab_4/2.png
Normal file
BIN
almukhammetov_bulat_lab_4/2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 25 KiB |
BIN
almukhammetov_bulat_lab_4/3.png
Normal file
BIN
almukhammetov_bulat_lab_4/3.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 24 KiB |
66
almukhammetov_bulat_lab_4/README.md
Normal file
66
almukhammetov_bulat_lab_4/README.md
Normal 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: В этот кластер входят дома с низкими доходами и средним возрастом жилья. Возможно, это районы с более доступным жильем.
|
20641
almukhammetov_bulat_lab_4/housing.csv
Normal file
20641
almukhammetov_bulat_lab_4/housing.csv
Normal file
File diff suppressed because it is too large
Load Diff
51
almukhammetov_bulat_lab_4/lab4.py
Normal file
51
almukhammetov_bulat_lab_4/lab4.py
Normal 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()
|
Loading…
Reference in New Issue
Block a user