Predicting power output from wind turbines based on wind speed values
Machine-learning project: Predicting power output from wind speed.
This is an overview of the project I completed for the Machine Learning and Statistics module of the Higher Diploma in Computing and Data Analytics at GMIT.
Description:
The aim of the project was to create a web service that used machine learning to make predictions for power output from wind turbines based on their wind speed values. The dataset consisted of 500 observations of wind speed and power output values with the following distributions in Figure 1 below.
Figure 2 shows the s-shaped power curve as illustrated in a study by A Clifton, L Kilcher, J K Lundquist and P Fleming on using machine learning to predict wind turbine power output.
The project was developed in a Jupyter notebook in which I trained some models using the data set, explain the models and give an analysis of their accuracy.
The full project is available at GitHub.com.
The notebook is also available to read here.
I used both Polynomial Regression models and Artificial Neural Networks (Multiple Perceptron Layer) to make predictions of the expected power output given a particular wind speed value.
Here is a plot showing how the polynomial regression models compared to the artificial neural network models.
The Web application
- The project also involved writing a Flask web application program that allows a user to enter a wind speed value and in return outputs a prediction for the wind turbine power output based on that wind speed. See
application.py
for the Python code for creating the web application.
Downloading and running the code
This section contains the following sections:
- How to download and run the project
- Python packages used in the project
- Importing the required Python modules
- Downloading the dataset.
- Running the web application
- Additional files
Exploratory Data Analysis on the dataset
This section contains the following sections:
- The distribution of the data
- Some summary statistics
- Regression plots
Some background on Wind Turbines power output
This section contains the following sections:
Some research on wind turbines including:
- How wind speed and power output are measured
- The three main characteristic speeds of a typical wind turbine
A closer look at the data
This section contains the following sections:
- Looking at the data in more detail
- Zero and non-zero values; dealing with missing values
- Some data cleaning
Machine Learning Model 1 - Polynomial Regression
This section contains the following sections:
- Some background on regression and why it might be a suitable model to use
- Splitting the data into training and test sets
- Transforming features
- Fitting the model to the training data
- Predicting using the polynomial regression model
- Visualising the Polynomial regression results
- Evaluating the model
- Saving the polynomial regression models for use in the web application
Machine Learning model 2 - Artificial Neural Networks
This section contains the following sections:
- Some background on an artificial neural networks model and why it might be a suitable model to use
- Splitting the data into training and test sets
- Defining the model
- Compiling the model
- Fitting the model to the training data
- Evaluating the model
- Plotting the learning curves
- Evaluating the performance of the model on new data
- Predicting using the artifical neural network model
- Comparing the actual data to predictions on the test set
- Saving the model for use in the web application
Comparing the models
This section contains the following sections:
- Comparing the Polynomial Regression and Neural Network models used
- Looking at evaluation metrics for the two types of models
Summary and conclusions
This section contains some summary notes on the project and conclusions.
References
This section contains a list of all the references used in researching and developing the project.
Machine-learning project: Predicting power output from wind speed.
This is an overview of the project I completed for the Machine Learning and Statistics module of the Higher Diploma in Computing and Data Analytics at GMIT.
Description:
The aim of the project was to create a web service that used machine learning to make predictions for power output from wind turbines based on their wind speed values. The dataset consisted of 500 observations of wind speed and power output values with the following distributions in Figure 1 below.
Figure 2 shows the s-shaped power curve as illustrated in a study by A Clifton, L Kilcher, J K Lundquist and P Fleming on using machine learning to predict wind turbine power output.
The project was developed in a Jupyter notebook in which I trained some models using the data set, explain the models and give an analysis of their accuracy. The full project is available at GitHub.com.
The notebook is also available to read here.
I used both Polynomial Regression models and Artificial Neural Networks (Multiple Perceptron Layer) to make predictions of the expected power output given a particular wind speed value.
Here is a plot showing how the polynomial regression models compared to the artificial neural network models.
The Web application
- The project also involved writing a Flask web application program that allows a user to enter a wind speed value and in return outputs a prediction for the wind turbine power output based on that wind speed. See
application.py
for the Python code for creating the web application.
Downloading and running the code
This section contains the following sections:
- How to download and run the project
- Python packages used in the project
- Importing the required Python modules
- Downloading the dataset.
- Running the web application
- Additional files
Exploratory Data Analysis on the dataset
This section contains the following sections:
- The distribution of the data
- Some summary statistics
- Regression plots
Some background on Wind Turbines power output
This section contains the following sections: Some research on wind turbines including:
- How wind speed and power output are measured
- The three main characteristic speeds of a typical wind turbine
A closer look at the data
This section contains the following sections:
- Looking at the data in more detail
- Zero and non-zero values; dealing with missing values
- Some data cleaning
Machine Learning Model 1 - Polynomial Regression
This section contains the following sections:
- Some background on regression and why it might be a suitable model to use
- Splitting the data into training and test sets
- Transforming features
- Fitting the model to the training data
- Predicting using the polynomial regression model
- Visualising the Polynomial regression results
- Evaluating the model
- Saving the polynomial regression models for use in the web application
Machine Learning model 2 - Artificial Neural Networks
This section contains the following sections:
- Some background on an artificial neural networks model and why it might be a suitable model to use
- Splitting the data into training and test sets
- Defining the model
- Compiling the model
- Fitting the model to the training data
- Evaluating the model
- Plotting the learning curves
- Evaluating the performance of the model on new data
- Predicting using the artifical neural network model
- Comparing the actual data to predictions on the test set
- Saving the model for use in the web application
Comparing the models
This section contains the following sections:
- Comparing the Polynomial Regression and Neural Network models used
- Looking at evaluation metrics for the two types of models
Summary and conclusions
This section contains some summary notes on the project and conclusions.
References
This section contains a list of all the references used in researching and developing the project.