Регрессия и ЭДА по различным ингредиентам бетонной смеси для определения прочности на сжатие.

Введение

Бетон используется для обеспечения прочности, долговечности и универсальности при строительстве конструкции. Эти превосходные свойства сделали бетон надежным и долговечным выбором строительных компаний как для коммерческих, так и для бытовых конструкций. Из-за резкого увеличения использования бетона в качестве строительного материала большое значение имеет его прочность на сжатие. Если мы сможем создать модель машинного обучения и прогнозировать прочность бетона перед его использованием на стройплощадке, это будет большим достижением. Это не только поможет нам эффективно использовать ингредиенты, но и поможет достичь определенной крепости с минимальными шансами на провал. В этой работе такая модель построена с использованием статистических методов с использованием Python, а прогноз сделан на основе ингредиентов, используемых в составе.

Описание набора данных

Для прогнозирования прочности бетона на сжатие мы использовали следующий набор данных, размещенный на Kaggle: Набор данных прочности бетона на сжатие.

Тип данных: многомерный

Эти ингредиенты включают цемент, доменный шлак, летучую золу, воду, суперпластификатор, крупный и мелкий заполнитель.

Характеристики данных:

Фактическая прочность бетона на сжатие (МПа) для данной смеси в течение определенного возраста (дней) определялась в лаборатории. Данные в необработанном виде (не масштабированные).

Сводные статистические данные:

8 количественных входных переменных и 1 количественная выходная переменная Отсутствующие значения атрибутов: нет

Сбор данных

После загрузки набора данных из Kaggle в формате файла csv мы читаем файл csv с помощью команды pd.read_csv

Предварительная обработка данных

Чтобы лучше понять данные, мы проверяем статистику с помощью df.describe(), что дает нам значимую информацию.

df.info() также дает нам содержательную сводку, объясняющую общее количество ненулевых столбцов в конкретном столбце вместе с их типом данных.

Во всем наборе данных не было найдено ни одного пропущенного значения. Однако было замечено 25 повторяющихся строк, которые были удалены, чтобы избежать систематической ошибки.

ЭДА

Исследовательский анализ данных (EDA) – это подход к анализу данных с использованием визуальных методов. Он используется для выявления тенденций, закономерностей или проверки предположений с помощью статистических сводок и графических представлений.

Обнаружение выбросов: выбросы были обнаружены при построении данных столбцов на блочной диаграмме. Однако из-за боязни потери информации выбросы остались без обработки.

Наблюдения. В некоторых столбцах показаны выбросы. Столбец «Возраст», по-видимому, имеет максимальное количество выбросов. Пока держим без лечения.

Использование тепловой карты для корреляционного анализа:

Наблюдения:
1. Цемент является лучшим предиктором, показывает сильную корреляцию.
2. Доменный_шлак, зола-уноса являются очень слабыми предикторами.
3. Суперпластификатор и зольная пыль показывают сильную взаимосвязь. корреляция.
4. Суперпластификатор и зольная пыль показывают среднюю корреляцию с прочностью на сжатие.
5. Вода показывает отрицательную корреляцию с прочностью
6. Вода и суперпластификатор показывает сильную отрицательную корреляцию

Некоторые алгоритмы регрессии работают лучше, когда данные распределены нормально. Следовательно, одномерный анализ выполняется, чтобы найти индивидуальное распределение данных.

Наблюдение:
1. Цемент, доменный_шлак, летучая зола, летучая_зола и возраст сильно перекошены
2. Вода, крупный_заполнитель и мелкий заполнитель почти нормально распределены и показывают меньшую перекос, т.е. нуль.

Разделение данных перед нормализацией

Признаки набора данных не имеют нормального распределения, поэтому необходимо сделать их нормально распределенными. Чтобы избежать утечки данных в модель ML, нормализация выполняется после разделения данных.

Разделение данных выполняется с помощью test_size=0.2, т.е. сохранение 80% данных для обучения и 20% для тестирования. random_state=9 предоставляется для обучения одних и тех же данных без перетасовки, чтобы модель давала согласованные результаты.

Нормализация данных

Нормализация данных выполняется с использованием класса PowerTransformer() после его импорта из библиотекиsklearn.Метод Йео-Джонсона полезен для сильно искаженных данных, таких как выше.

from sklearn.preprocessing import PowerTransformer
pt=PowerTransformer()
X_train_transformed_arr=pt.fit_transform(X_train)
X_test_transformed_arr=pt.fit_transform(X_test)

Визуализация с использованием графиков QQ

Подобные графики были сделаны и для других столбцов, а асимметрия до и после нормализации проверяется с помощью X_train.skew() X_train_transformed.skew(), и было обнаружено, что асимметрия исчезает после нормализации. йео-джонсон хорошо работал с нашими данными.

Построение модели

Поскольку целевая переменная содержит непрерывные значения, для прогнозирования прочности бетона на сжатие использовались следующие алгоритмы регрессии.

С параметрами по умолчанию прогнозирование выполняется с использованием каждой модели, показанной на изображении. Производительность модели оценивается на основе показателя r2. При передаче данных как к данным, т. е. к данным до преобразования, так и к данным после преобразования, была получена оценка r2.

Наблюдение. Регрессор со случайным лесом и регрессор с усилением градиента являются наиболее эффективными моделями в обоих случаях. Также очевидно, что нормализация оказывает наибольшее влияние на модель линейной регрессии, что и ожидалось, поскольку линейная регрессия хорошо работает с нормально распределенными данными.

Настройка гиперпараметров.

Так как RandomForestRegressor() и GradientBoostingRegressor() показали лучшие результаты. Мы выбрали эти два алгоритма для настройки гиперпараметров, которая выполняется с помощью GridSearchCV(). Поиск по сетке выбран для настройки модели, потому что набор данных не такой большой и, следовательно, не займет много времени. Однако предполагается, что для больших наборов данных случайный поиск CV будет эквивалентен ему.

Оценка после настройки HP:

Оценка после настройки HP:

Лучшая модель

Следовательно, исходя из приведенной выше производительности, становится ясно, что GradientBoostingRegressor() работает лучше. При дальнейшей настройке счет увеличивается.

Другие оценки.

Помимо r2_score, также рассчитываются средняя абсолютная ошибка, среднеквадратическая ошибка и среднеквадратическая ошибка.

Заключение

Следовательно, лучшей моделью оказалась GradientBoostingRegressor(), которая дала кричащую точность 93,27%. Это означает, что наша лучшая модель способна понять такой большой процент данных, что превосходно. эта модель может быть успешно использована в производстве.

Ссылки

  1. Мой код, Регрессия по прогнозированию прочности бетона (2022), GitHub
  2. Мири Чой, Набор данных по прочности бетона на сжатие (2007 г.), Kaggle
  3. Википедия, Исследовательский анализ данных (2013)