МИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра ИС
отчет
по лабораторной работе № 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()
Результат работы программы:
