Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab3_3352_ГарееваКР.docx
Скачиваний:
0
Добавлен:
24.01.2026
Размер:
60.95 Mб
Скачать

МИНОБРНАУКИ РОССИИ

Санкт-Петербургский государственный

электротехнический университет

«ЛЭТИ» им. В.И. Ульянова (Ленина)

Кафедра ИС

отчет

по лабораторной работе № 3

по дисциплине «Машинное обучение»

Тема: Исследование алгоритмов классификации

Студентка гр. 3352

________________

Гареева К.Р.

Преподаватель

________________

Молдовян Д.Н.

Санкт-Петербург

2025

Общие сведения

Предметная область: Строительные материалы и инженерия

Источник данных: Данные собраны с помощью лабораторных экспериментов, где измерялась прочность бетона на сжатие через 28 дней для различных комбинаций ингредиентов. Ссылка на источник: Concrete Compressive Strength.

Характер данных: Реальные данные. Таблица содержит числовые признаки состава бетона и метку - прочность на сжатие. Каждая строка - это один экспериментальный образец бетона.

Атрибуты датасета:

Название

Тип

Описание

1

Cement

float

Количество цемента (кг/м³)

2

Blast Furnace Slag

float

Количество шлака (кг/м³)

3

Fly Ash

float

Количество золы-уноса (кг/м³)

4

Water

float

Количество воды (кг/м³)

5

Superplasticizer

float

Количество суперпластификатора (кг/м³)

6

Coarse Aggregate

float

Количество крупного заполнителя (кг/м³)

7

Fine Aggregate

float

Количество мелкого заполнителя (кг/м³)

8

Age

float

Возраст бетона (дни)

9

Concrete Compressive Strength

float

Прочность на сжатие (МПа) — целевая переменная

Распределение классов прочности

Программа:

df['Strength_Class'] = pd.cut(df['Concrete compressive strength '],

bins=[0, 25, 40, 100],

labels=['Низкая', 'Средняя', 'Высокая'])

class_distribution = df['Strength_Class'].value_counts().sort_index()print("РАСПРЕДЕЛЕНИЕ КЛАССОВ ПРОЧНОСТИ:")print(class_distribution)print(f"\nВсего образцов: {len(df)}")

Результат:

РАСПРЕДЕЛЕНИЕ КЛАССОВ ПРОЧНОСТИ:

Strength_Class

Низкая 295

Средняя 356

Высокая 379

Name: count, dtype: int64

Всего образцов: 1030

Примечания:

Обоснование выбора границ:

< 25 МПа: Низкая прочность — для неответственных конструкций, фундаментов малоэтажных зданий

25-40 МПа: Средняя прочность — стандартный диапазон для большинства строительных работ

> 40 МПа: Высокая прочность — для ответственных конструкций, мостов, высотных зданий

Визуализация распределения классов прочности бетона

Программа:

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 6))

colors = ['#ff6b6b', '#4ecdc4', '#45b7d1']bars = ax1.bar(class_distribution.index, class_distribution.values,

color=colors, alpha=0.7, edgecolor='black')ax1.set_title('Распределение классов прочности бетона', fontsize=14, fontweight='bold')ax1.set_xlabel('Класс прочности')ax1.set_ylabel('Количество образцов')ax1.grid(True, alpha=0.3)

for bar, count in zip(bars, class_distribution.values):

height = bar.get_height()

ax1.text(bar.get_x() + bar.get_width()/2, height + 5,

f'{count}', ha='center', va='bottom', fontweight='bold')

wedges, texts, autotexts = ax2.pie(class_distribution.values,

labels=class_distribution.index,

autopct='%1.1f%%',

colors=colors,

startangle=90,

textprops={'fontsize': 12})ax2.set_title('Процентное распределение классов', fontsize=14, fontweight='bold')

for autotext in autotexts:

autotext.set_color('white')

autotext.set_fontweight('bold')

plt.tight_layout()plt.show()

Результат:

Анализ сбалансированных классов

Программа:

total = len(df)min_count = class_distribution.min()max_count = class_distribution.max()balance_ratio = min_count / max_count

print("АНАЛИЗ СБАЛАНСИРОВАННОСТИ КЛАССОВ:")

print(f"Общее количество образцов: {total}")print(f"Самый маленький класс: {min_count} образцов")print(f"Самый большой класс: {max_count} образцов")print(f"Соотношение min/max: {balance_ratio:.3f}")

if balance_ratio > 0.8:

status = "ХОРОШО СБАЛАНСИРОВАНЫ"elif balance_ratio > 0.5:

status = "УМЕРЕННО СБАЛАНСИРОВАНЫ"else:

status = "СИЛЬНО НЕСБАЛАНСИРОВАНЫ"

print(f"СТАТУС: {status}")

Результат:

АНАЛИЗ СБАЛАНСИРОВАННОСТИ КЛАССОВ:

Общее количество образцов: 1030

Самый маленький класс: 295 образцов

Самый большой класс: 379 образцов

Соотношение min/max: 0.778

СТАТУС: УМЕРЕННО СБАЛАНСИРОВАНЫ