Использование технологии возобновляемых источников энергии сегодня быстро растет. Это важный фактор в борьбе с последствиями изменения климата для окружающей среды. По данным Глобального совета по ветроэнергетике, ветровая энергетика сегодня является одним из наиболее зрелых видов возобновляемой энергии, общая глобальная мощность ветра достигает 837 ГВт.

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

Импорт необходимых библиотек

Импорт нескольких библиотек Python для чтения файла данных и визуализации наших точек данных. Библиотека pandas будет использоваться для чтения и обработки данных, а библиотеки matplotlib и seaborn в основном будут использоваться для визуализации. Некоторые модели регрессии, которые будут использоваться, также будут импортированы.

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

Информация о наборе данных

Набор данных, используемый в этом анализе, получен из kaggle и содержит 118 224 строки и 22 столбца. Активная мощность — это зависимая переменная (результат, который мы пытаемся предсказать), в то время как все остальные функции независимы (которые будут использоваться в качестве ориентиров для прогнозов). Цель этого проекта — создать регрессионную модель, способную точно предсказать активную мощность, производимую ветряной турбиной, используя некоторые из этих функций. df.info() отображает информацию о каждой функции, такую ​​как ее тип данных и ненулевой счетчик.

Non-Null Count — это количество раз, когда данные каждой функции не равны нулю. Например, Non-Null Count для Active Power равен 94 750, но весь набор данных содержит 118 224. В результате Active Power имеет в общей сложности 23 474 пропущенных значения. is.na().sum() function в Python возвращает количество пропущенных значений в наборе данных.

Метод pandas df.fillna() используется для замены отсутствующих значений в наборе данных. Пропущенные значения в наборе данных могут быть заполнены различными способами, но для целей этого анализа пропущенные значения будут заменены средними значениями отдельных признаков. Вот ссылка на страницу, где вы можете узнать больше о том, как заменить пропущенные значения.

Числовая информация о каждом из атрибутов анализируется после заполнения медианным значением. Метод pandas describe() используется для отображения среднего значения и процентиля каждой характеристики.

Исследовательский анализ данных (EDA)

EDA является важным инструментом в анализе данных. Это не только помогает визуализировать и понимать ваши данные, но также помогает найти взаимосвязь между несколькими функциями. Ниже приведена диаграмма рассеяния, показывающая взаимосвязь между активной мощностью и скоростью ветра.

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

Давайте посмотрим на распределение скорости ветра. plt.hist() позволяет нам построить гистограмму, показывающую количество различных скоростей ветра, записанных в наборе данных.

Ветряная турбина подвергалась воздействию низких и умеренных скоростей ветра, обычно в диапазоне 5–10 м/с, как показано на гистограмме ниже. Было несколько моментов, когда скорость ветра превышала 10 м/с.

wind rose() можно использовать для определения преобладающего направления ветра в случае направления ветра. Поскольку некоторые турбины регулируются по рысканию, очень важно знать направление ветра. Вращение горизонтальной оси всего ветряного двигателя называется рысканием. Контроль рыскания постоянно удерживает турбину направленной против ветра, максимально увеличивая эффективную площадь ротора и, как следствие, выходную мощность.

wind rose() показывает, что большая часть скорости ветра пришла с юга. Ветер с северо-запада, напротив, был сильнее. В этой ситуации потребность в частом рыскании турбины минимальна, поскольку изменения направления ветра незначительны.

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

При низких оборотах ротора (0–7 об/мин) выходная мощность увеличивается медленно; однако, когда частота вращения ротора составляет 9 или выше, выходная мощность увеличивается экспоненциально. На него стоит обратить внимание, потому что он показывает положительную связь между об/мин ротора и активной мощностью.

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

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

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

Большая часть электроэнергии вырабатывается при температуре от 20ºC до 40ºC. Взаимосвязь между активной мощностью и температурой окружающей среды не дает много выводов.

Корреляция и выбор признаков

Выбор функций — это процесс определения критических или влиятельных переменных из целевой переменной в существующем наборе функций. Матрица корреляции — это статистический инструмент для отображения и анализа взаимосвязей между двумя переменными в наборе данных. Связь между активной мощностью и другими переменными изображается с помощью seaborn.heatmap(). Корреляция 1 указывает на сильную положительную корреляцию между признаками, тогда как корреляция -1 указывает на значительную отрицательную корреляцию. Корреляция 0,3 означает слабую положительную корреляцию.

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

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

В этом разделе сначала будет использоваться линейная регрессия, и будет оцениваться производительность модели. Подбирая линейное уравнение к наблюдаемым данным, алгоритм линейной регрессии пытается смоделировать взаимосвязь между двумя или более переменными. Перед построением модели важно разделить набор данных на обучающий и тестовый. 80% набора данных будет использоваться для обучения, а 20% — для тестирования. Функции train_test_split() помогают разделить данные на наборы для обучения и тестирования. Параметр test_size был установлен на 0,2, что указывает на то, что 20% набора данных отведено для тестирования.

Следующим шагом является использование пакета scikit-learn для импорта модели линейной регрессии. В конвейере машинного обучения важным элементом является преобразование признаков. Класс Pipeline() — это популярный класс, используемый в методе машинного обучения для автоматизации рабочего процесса и преобразования данных перед построением модели.

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

Использование GridSearchCV для поиска лучшей модели регрессии

Чтобы выбрать модель, которая обеспечит наиболее точные результаты, GridSearchCV() будет перебирать указанные комбинации гиперпараметров. Grid Search вычисляет производительность для каждой комбинации всех указанных гиперпараметров и их значений, а затем выбирает оптимальное значение для гиперпараметров. Три модели регрессии, которые необходимо использовать, — это линейная регрессия, регрессия Лассо и регрессия случайного леса.

Для набора данных будет выполнена перекрестная проверка. Перекрестная проверка — это метод, используемый для оценки модели машинного обучения и проверки ее производительности. Он включает в себя резервирование определенного образца набора данных, на котором модель не обучена. Затем модель тестируется на зарезервированном образце. Функция ShuffleSplit() помогает нам быстро разделить большой объем данных обучения и тестирования. n splits = 5 указывает, что данные будут обучены и оценены в пяти разных сгибах.

Random Forest Regressor обеспечивает точность 99,5%, что делает его наиболее подходящим выбором модели для использования. Чтобы узнать больше о том, как работает регрессор случайного леса, здесь — отличная страница. Ниже приведен график прогнозируемого значения по сравнению с истинным значением для тестового набора с использованием регрессора случайного леса. Диаграмма рассеивания поможет нам визуализировать отклонения в прогнозируемом значении и истинном значении.

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

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

Заключение

Я проанализировал некоторые факторы, влияющие на выходную мощность ветряной турбины. Стоит отметить, что в наборе данных были пропущенные значения, которые нужно было заполнить медианой. Детали могут различаться в реальных условиях, но подход к анализу и прогнозированию выходной мощности остается прежним. Кроме того, хотя скорость ветра важна, также важно помнить, что электрические и механические потери влияют на выходную мощность ветровой турбины.

Алгоритм регрессии — хороший способ предсказать, сколько энергии будет производить ветряная турбина. Столбец даты и времени, с другой стороны, может использоваться для прогнозирования ежедневной, еженедельной или ежемесячной выходной мощности ветряной турбины с использованием подхода прогнозирования временных рядов. Спасибо, что нашли время, чтобы прочитать это; вы можете найти код для этого анализа на моем github.