{"id":13719741,"url":"https://github.com/nmstreethran/WindTurbineClassification","last_synced_at":"2025-05-07T11:32:42.165Z","repository":{"id":37579799,"uuid":"142803266","full_name":"nmstreethran/WindTurbineClassification","owner":"nmstreethran","description":"My master's dissertation on wind turbine fault prediction using machine learning","archived":false,"fork":false,"pushed_at":"2024-03-17T15:04:11.000Z","size":57228,"stargazers_count":56,"open_issues_count":0,"forks_count":11,"subscribers_count":3,"default_branch":"current","last_synced_at":"2025-04-25T12:45:36.557Z","etag":null,"topics":["energy","jupyter-notebook","python","renewable-energy","wind-turbines"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/nmstreethran.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2018-07-29T23:36:18.000Z","updated_at":"2025-04-18T06:14:21.000Z","dependencies_parsed_at":"2024-03-21T08:11:21.392Z","dependency_job_id":null,"html_url":"https://github.com/nmstreethran/WindTurbineClassification","commit_stats":{"total_commits":96,"total_committers":1,"mean_commits":96.0,"dds":0.0,"last_synced_commit":"d42e81e1d2e381316223585101fa0077326d153e"},"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmstreethran%2FWindTurbineClassification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmstreethran%2FWindTurbineClassification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmstreethran%2FWindTurbineClassification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nmstreethran%2FWindTurbineClassification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nmstreethran","download_url":"https://codeload.github.com/nmstreethran/WindTurbineClassification/tar.gz/refs/heads/current","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250990531,"owners_count":21519118,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["energy","jupyter-notebook","python","renewable-energy","wind-turbines"],"created_at":"2024-08-03T01:00:54.865Z","updated_at":"2025-05-07T11:32:37.145Z","avatar_url":"https://github.com/nmstreethran.png","language":"Python","readme":"# WindTurbineClassification\n\n[![DOI](images/badges/DOI.svg)](https://doi.org/10.5281/zenodo.2875795)\n[![View report (PDF)](images/badges/REPORT.svg)](https://raw.githubusercontent.com/nmstreethran/WindTurbineClassification/current/docs/nms_dissertation.pdf)\n\n\u003c!-- https://img.shields.io/static/v1?label=\u0026message=script\u0026style=for-the-badge\u0026logo=python\u0026labelColor=snow\u0026color=grey --\u003e\n\n***Specification of 'normal' wind turbine operating behaviour for rapid anomaly detection: through the use of machine learning algorithms***\n\nby Nithiya Streethran (nmstreethran@gmail.com)\n\nThis work is derived from my dissertation for the degree of Master of Science (MSc) in Renewable Energy Engineering at Heriot-Watt University, which was completed during a technical placement at Natural Power between May and August 2017.\n\n**Unfortunately, the datasets are proprietary industry data and I do not own the rights to distribute them to the public. Please do not contact me to request the datasets.**\n\n## Abstract\n\nMaximising the economic effectiveness of a wind farm is essential in making wind a more economic source of energy. This effectiveness can be increased through the reduction of operation and maintenance costs, which can be achieved through continuously monitoring the condition of wind turbines. An alternative to expensive condition monitoring systems, which can be uneconomical especially for older wind turbines, is to implement classification algorithms on supervisory control and data acquisition (SCADA) signals, which are collected in most wind turbines. Several publications were reviewed, which were all found to use separate algorithms to predict specific faults in advance. In reality, wind turbines tend to have multiple faults which may happen simultaneously and have correlations with one another. This project focusses on developing a methodology to predict multiple wind turbine faults in advance simultaneously by implementing classification algorithms on SCADA signals for a wind farm with 25 turbines rated at 2,500 kW, spanning a period of 30 months. The data, which included measurements of wind speed, active power and pitch angle, was labelled using corresponding downtime data to detect normal behaviour, faults and varying timescales before a fault occurs. Three different classification algorithms, namely decision trees, random forests and k nearest neighbours were tested using imbalanced and balanced training data, initially to optimise a number of hyperparameters. The random forest classifier produced the best results. Upon conducting a more detailed analysis on the performance of specific faults, it was found that the classifier was unable to detect the varying timescales before a fault with accuracy comparable to that of normal or faulty behaviour. This could have been due to the SCADA data, which are used as features, being unsuitable for detecting the faults, and there is potential to improve this by balancing only these classes.\n\n***Keywords:*** wind turbine, classification algorithm, SCADA, fault detection, condition monitoring\n\n## Scripts\n\n\u0026nbsp; | Source | Output\n------ | -- | --\nProcess SCADA and downtime data | [![View Python script](images/badges/SCRIPT.svg)](scripts/process_data.py) | [![View Jupyter Notebook](images/badges/NOTEBOOK.svg)](https://nbviewer.org/github/nmstreethran/WindTurbineClassification/blob/current/docs/jupyter-notebooks/process_data.ipynb)\nDowntime categories | [![View Python script](images/badges/SCRIPT.svg)](scripts/downtime_categories.py) | [![View Jupyter Notebook](images/badges/NOTEBOOK.svg)](https://nbviewer.org/github/nmstreethran/WindTurbineClassification/blob/current/docs/jupyter-notebooks/downtime_categories.ipynb)\nMerge SCADA and downtime data | [![View Python script](images/badges/SCRIPT.svg)](scripts/SCADA_downtime_merge.py)\nPower curves for all turbines | | [![View Jupyter Notebook](images/badges/NOTEBOOK.svg)](https://nbviewer.org/github/nmstreethran/WindTurbineClassification/blob/current/docs/jupyter-notebooks/powercurves_all.ipynb)\n\n## License\n\nUnless otherwise stated:\n\n- Code and scripts are licensed under the [MIT License](https://opensource.org/licenses/MIT).\n- Content, images, and documentation are licensed under a [Creative Commons Attribution 4.0 International (CC-BY-4.0) License](https://creativecommons.org/licenses/by/4.0/).\n\nProject badges are generated using [Shields.io](https://shields.io/) and [Simple Icons](https://simpleicons.org/).\n","funding_links":[],"categories":["Renewable Energy"],"sub_categories":["Wind Energy"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnmstreethran%2FWindTurbineClassification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnmstreethran%2FWindTurbineClassification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnmstreethran%2FWindTurbineClassification/lists"}