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

Визуализация взаимосвязей между признаками

Программа:

plt.figure(figsize=(15, 10))

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

import warnings

warnings.filterwarnings('ignore', category=FutureWarning)

plt.subplot(2, 3, 1)

sns.boxplot(data=df, x='Strength_Class', y='Cement', order=class_order)

plt.title('Цемент по классам прочности')

plt.xticks(rotation=45)

plt.xlabel('Класс прочности')

plt.ylabel('Цемент (кг/м³)')

plt.subplot(2, 3, 2)

sns.boxplot(data=df, x='Strength_Class', y='Water', order=class_order)

plt.title('Вода по классам прочности')

plt.xticks(rotation=45)

plt.xlabel('Класс прочности')

plt.ylabel('Вода (кг/м³)')

plt.subplot(2, 3, 3)

sns.boxplot(data=df, x='Strength_Class', y='Age (day)', order=class_order)

plt.title('Возраст по классам прочности')

plt.xticks(rotation=45)

plt.xlabel('Класс прочности')

plt.ylabel('Возраст (дни)')

plt.yscale('log')

plt.subplot(2, 3, 4)

sns.boxplot(data=df, x='Strength_Class', y='Superplasticizer', order=class_order)

plt.title('Суперпластификатор по классам прочности')

plt.xticks(rotation=45)

plt.xlabel('Класс прочности')

plt.ylabel('Суперпластификатор (кг/м³)')

plt.subplot(2, 3, 5)

sns.boxplot(data=df, x='Strength_Class', y='Blast Furnace Slag', order=class_order)

plt.title('Доменный шлак по классам прочности')

plt.xticks(rotation=45)

plt.xlabel('Класс прочности')

plt.ylabel('Доменный шлак (кг/м³)')

plt.subplot(2, 3, 6)

sns.boxplot(data=df, x='Strength_Class', y='Fly Ash', order=class_order)

plt.title('Зола-унос по классам прочности')

plt.xticks(rotation=45)

plt.xlabel('Класс прочности')

plt.ylabel('Зола-унос (кг/м³)')

plt.suptitle('РАСПРЕДЕЛЕНИЕ КОМПОНЕНТОВ БЕТОНА ПО КЛАССАМ ПРОЧНОСТИ',

fontsize=14, fontweight='bold', y=1.02)

plt.tight_layout()

plt.show()

warnings.filterwarnings('default')

Результат:

Предобработка данных

Программа:

from sklearn.preprocessing import LabelEncode

print("ПРЕДОБРАБОТКА ДАННЫХ")

concrete_clean = df.dropna()

print(f"Размер датасета после удаления пропусков: {concrete_clean.shape}")

le_strength = LabelEncoder()

concrete_clean['Strength_Class_encoded'] = le_strength.fit_transform(concrete_clean['Strength_Class'])

print(f"\nЗакодированные значения Strength_Class:")

strength_mapping = dict(zip(le_strength.classes_, range(len(le_strength.classes_))))

for cls, code in strength_mapping.items():

print(f" '{cls}' → {code}")

features = ['Cement', 'Blast Furnace Slag', 'Fly Ash', 'Water',

'Superplasticizer', 'Coarse Aggregate', 'Fine Aggregate', 'Age (day)']

X = concrete_clean[features]

y = concrete_clean['Strength_Class_encoded']

print(f"\nПризнаки для моделирования:")

for i, feature in enumerate(features, 1):

print(f" {i}. {feature}")

print(f"\nЦелевая переменная: Strength_Class_encoded")

print(f"Размерность данных: X{X.shape}, y{y.shape}")

Результат:

Закодированные значения Strength_Class:

'Высокая' → 0

'Низкая' → 1

'Средняя' → 2

Признаки для моделирования:

1. Cement

2. Blast Furnace Slag

3. Fly Ash

4. Water

5. Superplasticizer

6. Coarse Aggregate

7. Fine Aggregate

8. Age (day)

Целевая переменная: Strength_Class_encoded

Размерность данных: X(1030, 8), y(1030,)