Estimate hourly NOx from gas-turbine operating data
This predictive emissions model maps ambient conditions, turbine process variables and CO concentration to an hourly NOx estimate. It illustrates how a plant team could build a data-driven monitoring layer around existing measurements while retaining certified instrumentation and operating procedures.
NOx formation varies with ambient conditions, load and combustion-state variables. A predictive emissions monitoring system (PEMS) can provide an additional estimate for trending, sensor cross-checks and investigation of unusual operation. In a regulated plant it complements, rather than replaces, the certified continuous emissions monitoring system (CEMS).
- Industrial challenge
- Data set
- Neural network
- Training
- Model selection
- Testing
- Deployment
- Limitations
- References
1. Industrial challenge
This is an approximation problem: the model estimates the continuous target NOx, expressed in mg/m³, from ten measurements available at the same operating point.
Potential users include plant operators, gas-turbine performance engineers, environmental and compliance teams, control and instrumentation engineers, reliability teams and operations leadership.
2. Data set
The UCI Gas Turbine CO and NOx Emission dataset contains 36,733 sensor records aggregated over one hour from one gas turbine in north-western Turkey between 2011 and 2015. The source reports no missing values and operating data from approximately 75% to 100% load.
| CSV variable | Engineering meaning | Role | Unit | Observed range |
|---|---|---|---|---|
ambient_temperature | Ambient temperature | Input | °C | -6.2348 to 37.103 |
ambient_pressure | Ambient pressure | Input | mbar | 985.85 to 1036.6 |
ambient_humidity | Ambient humidity | Input | % | 24.085 to 100.2 |
air_filter_difference_pressure | Air-filter differential pressure | Input | mbar | 2.0874 to 7.6106 |
gas_turbine_exhaust_pressure | Gas-turbine exhaust pressure | Input | mbar | 17.698 to 40.716 |
turbine_inlet_temperature | Turbine inlet temperature | Input | °C | 1000.8 to 1100.9 |
turbine_after_temperature | Turbine after temperature | Input | °C | 511.04 to 550.61 |
turbine_energy_yield | Turbine energy yield | Input | MWh | 100.02 to 179.5 |
compressor_discharge_pressure | Compressor discharge pressure | Input | bar | 9.8518 to 15.159 |
CO | Carbon monoxide concentration | Input | mg/m³ | 0.00038751 to 44.103 |
NOx | Nitrogen oxides concentration | Target | mg/m³ | 25.905 to 119.91 |
The configured split is random: 22,041 rows for training (60%), 7,346 for selection (20%) and 7,346 for testing (20%). This supports the walkthrough, but it is not the strongest estimate of future-year performance.

Most observations fall around 59–68 mg/m³, with a smaller right tail extending above 100 mg/m³. Reporting errors in physical units is therefore essential: one aggregate score can hide weaker performance at high-emission points.


3. Neural network
The initial 10–3–1 model provides a compact baseline, shown below with the corrected process-variable names.

After neuron selection, the final exported model standardizes ten inputs, evaluates ten tanh hidden neurons, applies one linear output neuron and converts the scaled result back to mg/m³.
The final 10–10–1 network contains 121 trainable parameters. Its size remains small enough for millisecond-scale inference in a historian, edge service or plant analytics platform.
4. Training strategy
The initial 10–3–1 network minimizes mean squared error with L2 regularization weight 0.01 using Adam, batch size 1,000 and learning rate 0.001. Training stops after 1,089 epochs because the maximum number of validation-error increases is reached.

| Optimizer | Epochs | Training error | Selection error | Stopping criterion |
|---|---|---|---|---|
| Adam | 1,089 | 0.143 | 0.134 | Maximum validation-error increases |
The previously published quasi-Newton chart belongs to an earlier run and is not used for these final results.
5. Model selection
The growing-neurons task compares hidden-layer sizes from 1 to 10 using three trials per size. Selection error decreases from 0.2019 with one neuron to 0.1238 with ten.

| Selected hidden neurons | Training error | Selection error | Search boundary |
|---|---|---|---|
| 10 | 0.1322 | 0.1238 | Configured maximum reached |
Ten neurons is the best tested size, not proof of a global optimum. Because the lowest selection error occurs at the search boundary, a wider search could be evaluated only if a time-aware validation design is adopted first.
6. Testing analysis
The corrected Python export was independently recalculated on all 7,346 rows marked as testing. Neural Designer reports the squared correlation between measured and predicted NOx as R²; MAE, RMSE and bias express practical error in mg/m³.
| Testing rows | R² | MAE | RMSE | Bias | 95th-percentile absolute error | Within ±10 mg/m³ |
|---|---|---|---|---|---|---|
| 7,346 | 0.7425 | 4.28 mg/m³ | 6.11 mg/m³ | +0.12 mg/m³ | 12.36 mg/m³ | 91.25% |
A constant training-mean baseline has RMSE 11.95 mg/m³, so the neural network materially improves on a mean prediction. The goodness-of-fit chart also reveals compressed predictions at the upper end: some high measured values are underpredicted, which is important for emissions-risk use.

7. Model deployment
A credible deployment places data quality and human review around the neural model. Predictions should be timestamp-aligned with the CEMS, logged with model version and operating context, and compared continuously with measured NOx.
Representative hourly operating point
The following point uses the dataset means. With the corrected variable mapping, the final exported model predicts 68.77 mg/m³ NOx.
| Engineering variable | CSV field | Value |
|---|---|---|
| Ambient temperature | ambient_temperature | 17.7127 °C |
| Ambient pressure | ambient_pressure | 1013.07 mbar |
| Ambient humidity | ambient_humidity | 77.867 % |
| Air-filter differential pressure | air_filter_difference_pressure | 3.9255 mbar |
| Gas-turbine exhaust pressure | gas_turbine_exhaust_pressure | 25.5638 mbar |
| Turbine inlet temperature | turbine_inlet_temperature | 1081.43 °C |
| Turbine after temperature | turbine_after_temperature | 546.159 °C |
| Turbine energy yield | turbine_energy_yield | 133.506 MWh |
| Compressor discharge pressure | compressor_discharge_pressure | 12.0605 bar |
| Carbon monoxide concentration | CO | 2.3725 mg/m³ |
| Predicted nitrogen oxides | NOx | 68.77 mg/m³ |
Try the NOx prediction model
Enter one simultaneous operating snapshot. The calculation runs locally in the browser with the same scaling, weights and output transformation as the corrected Python export.
Educational PEMS example — not a certified CEMS, regulatory result or automatic control command.
Local sensitivity: turbine after temperature
At the saved reference point, the regenerated model predicts 95.91 mg/m³ at 538.05 °C. Varying only turbine after temperature gives the following model responses:
| Turbine after temperature | Predicted NOx | Difference from reference |
|---|---|---|
| 520.00 °C | 110.76 mg/m³ | +14.85 mg/m³ |
| 538.05 °C | 95.91 mg/m³ | Reference |
| 550.00 °C | 69.56 mg/m³ | −26.35 mg/m³ |

Download and integrate
8. Scope and limitations
- The data represents one gas turbine and one 2011–2015 operating history; transfer to another turbine, fuel, combustor, maintenance state or site is not demonstrated.
- The configured random split mixes operating years. It does not reproduce the source paper’s chronological protocol or demonstrate future-year performance.
- Year and timestamp are absent from the consolidated CSV, so seasonality, ageing, maintenance interventions and drift cannot be audited directly.
- CO is a simultaneous emissions measurement. Its inclusion can improve fit but changes the use case from an independent forward predictor to a hybrid monitoring or cross-validation model.
- Several turbine variables are strongly collinear. Directional outputs and one-variable correlations are predictive associations, not causal estimates.
- The model was trained inside approximately 75–100% load and the listed univariate ranges; neither condition defines a safe multidimensional operating envelope.
- NOx limits depend on jurisdiction, permit, fuel, reference oxygen, dry/wet basis and reference conditions. The model embeds no compliance threshold or unit correction.
- Deployment requires timestamp alignment, sensor-quality rules, out-of-domain detection, uncertainty or guard bands, residual monitoring, version control and periodic revalidation.
- This example supports engineering analysis. It does not replace a certified CEMS, OEM protection, operating procedures or qualified environmental and plant personnel.
References
- UCI Gas Turbine CO and NOx Emission Data Set, 36,733 hourly aggregated records, DOI: 10.24432/C5WC95.
- Kaya, H., Tüfekci, P. and Uzun, E. Predicting CO and NOx emissions from gas turbines: novel data and a benchmark PEMS, Turkish Journal of Electrical Engineering & Computer Sciences 27(6), 4783–4796 (2019).
- Neural Designer testing analysis: goodness-of-fit and regression analysis.
- Neural Designer model deployment: output calculation, directional outputs and model export.




