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

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

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

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

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

Кафедра ИС

отчет

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

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

Тема: Анализ датасета «Прочность бетона»

Студентка гр. 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 = pd.read_csv('Concrete Compressive Strength.csv')

print("ОСНОВНАЯ ИНФОРМАЦИЯ О ДАТАСЕТЕ")print(f"Размер датасета: {df.shape}")print(f"Количество строк: {df.shape[0]}")print(f"Количество столбцов: {df.shape[1]}")

df.head()

Результат работы программы:

Размер датасета: (1030, 9)

Количество строк: 1030

Количество столбцов: 9

Cement

Blast Furnace Slag

Fly Ash

Water

Superplasticizer

Coarse Aggregate

Fine Aggregate

Age (day)

Concrete compressive strength

0

540.0

0.0

0.0

162.0

2.5

1040.0

676.0

28

79.986111

1

540.0

0.0

0.0

162.0

2.5

1055.0

676.0

28

61.887366

2

332.5

142.5

0.0

228.0

0.0

932.0

594.0

270

40.269535

3

332.5

142.5

0.0

228.0

0.0

932.0

594.0

365

41.052780

4

198.6

132.4

0.0

192.0

0.0

978.4

825.5

360

44.296075

Анализ числовых атрибутов

Программа для анализа числовых атрибутов:

print("АНАЛИЗ ЧИСЛОВЫХ АТРИБУТОВ\n")

stats_simple = pd.DataFrame({

'Среднее значение': df.mean(),

'Медиана': df.median(),

'Ско': df.std()})

display(stats_simple)

Результат выполнения программы:

Среднее значение

Медиана

Ско

Cement

281.165631

272.900000

104.507142

Blast Furnace Slag

73.895485

22.000000

86.279104

Fly Ash

54.187136

0.000000

63.996469

Water

181.566359

185.000000

21.355567

Superplasticizer

6.203112

6.350000

5.973492

Coarse Aggregate

972.918592

968.000000

77.753818

Fine Aggregate

773.578883

779.510000

80.175427

Age (day)

45.662136

28.000000

63.169912

Concrete compressive strength

35.817836

34.442774

16.705679

Наблюдения:

Fly Ash (зола-унос): медиана = 0, а среднее = 54.18 - это означает, что у большинства образцов золы-уноса нет вообще, но у некоторых её много (сильно скошенное распределение).

Blast Furnace Slag (шлак): аналогично - медиана 22, среднее 73.9 - неравномерное распределение.

Age (day): медиана 28 дней, среднее 45.66 - есть образцы с большим возрастом, которые "тянут" среднее вверх.

Water (вода): среднее и медиана близки (181.57 или 185) - нормальное распределение.

Прочность: варьируется от низких до высоких значений (ско 16.7 при среднем 35.8).

Программа для создания гистограммы распределения числовых атрибутов:

fig, axes = plt.subplots(3, 3, figsize=(15, 12))fig.suptitle('ГИСТОГРАММЫ РАСПРЕДЕЛЕНИЯ ЧИСЛОВЫХ АТРИБУТОВ', fontsize=16, fontweight='bold')

for i, col in enumerate(df.columns):

row, col_idx = i // 3, i % 3

axes[row, col_idx].hist(df[col].dropna(), bins=15, alpha=0.7, color='lightgray', edgecolor='black')

axes[row, col_idx].set_title(f'Распределение {col}')

axes[row, col_idx].set_xlabel(col)

axes[row, col_idx].set_ylabel('Частота')

mean_val = df[col].mean()

median_val = df[col].median()

axes[row, col_idx].axvline(mean_val, color='red', linestyle='--', label=f'Среднее: {mean_val:.2f}')

axes[row, col_idx].axvline(median_val, color='green', linestyle='--', label=f'Медиана: {median_val:.2f}')

axes[row, col_idx].legend()

plt.tight_layout()plt.show()

Результат работы программы: