{"id":3515,"date":"2026-01-05T11:12:58","date_gmt":"2026-01-05T10:12:58","guid":{"rendered":"https:\/\/neuraldesigner.com\/learning\/power-plant-gas-emissions-nox\/"},"modified":"2026-08-25T14:03:33","modified_gmt":"2026-08-25T12:03:33","slug":"power-plant-gas-emissions-nox","status":"publish","type":"learning","link":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/","title":{"rendered":"Predict NOx emissions from a gas turbine with machine learning"},"content":{"rendered":"\n<style>\n.ndb{width:100vw;margin-left:calc(50% - 50vw);padding:22px 24px 14px;background:#eee;color:#1b2635;font-family:\"Outfit\",\"Roboto\",Arial,sans-serif}.ndb *{box-sizing:border-box}.ndb-wrap{width:min(100%,1200px);margin:0 auto}.ndb a{text-decoration:none;color:#2d799f;font-weight:600}\n.ndb-executive{margin:0 0 34px;padding:32px;border-radius:20px;background:linear-gradient(135deg,#12354b,#245e80);color:#fff;box-shadow:0 16px 36px rgba(0,18,51,.18)}.ndb-executive h2{margin:0 0 12px;padding:0;border:0;color:#fff;font-size:30px;line-height:1.2}.ndb-executive p{margin:0;color:#eaf5fb;font-size:18px;line-height:1.55}.ndb-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:22px}.ndb-kpi{padding:18px;border:1px solid rgba(255,255,255,.18);border-radius:14px;background:rgba(255,255,255,.1)}.ndb-kpi strong{display:block;color:#fff;font-size:25px;line-height:1.1}.ndb-kpi span{display:block;margin-top:6px;color:#d9edf7;font-size:13px}\n.ndb-actions,.ndb-audience,.ndb-downloads{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin:22px 0}.ndb-actions a,.ndb-downloads a{display:inline-flex;align-items:center;justify-content:center;padding:12px 20px;border-radius:24px;background:#245e80;color:#fff!important;font-weight:700}.ndb-executive .ndb-actions a{background:#fff;color:#12354b!important}.ndb-executive .ndb-actions a:last-child{background:transparent;color:#fff!important;border:1px solid rgba(255,255,255,.55)}\n.ndb-lead{margin:0 0 28px;color:#3a4a5a;font-size:18px;line-height:1.6}.ndb-toc{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:0 0 42px;padding:0;list-style:none}.ndb-toc a,.ndb-audience span{display:block;padding:9px 14px;border-radius:20px;background:#e9f2f8;color:#12354b;font-size:14px;font-weight:600}\n.ndb-card{margin:0 0 54px;scroll-margin-top:90px}.ndb-card h2{position:relative;margin:0 0 20px;padding-bottom:12px;border-bottom:1px solid #dbe5ec;color:#001233;font-size:24px}.ndb-card h2:after{content:\"\";position:absolute;bottom:-1px;left:0;width:62px;height:3px;border-radius:2px;background:#56a1c8}.ndb-card h3{margin:28px 0 12px;color:#12354b;font-size:20px}.ndb-card p{margin:0 0 14px;color:#33424f;font-size:16.5px;line-height:1.62}.ndb-card li{margin:5px 0;color:#33424f;font-size:16px;line-height:1.5}.ndb-card code{padding:2px 5px;border-radius:4px;background:#e8eef2;color:#12354b}\n.ndb-value-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:22px 0}.ndb-value{padding:20px;border:1px solid #dce8ef;border-radius:14px;background:#f8fbfd}.ndb-value strong{display:block;margin-bottom:6px;color:#12354b;font-size:17px}.ndb-value span{color:#4a5d6b;line-height:1.45}\n.ndb-note{margin:20px 0;padding:18px 20px;border-left:4px solid #56a1c8;border-radius:0 12px 12px 0;background:#f6fafc;color:#33424f;line-height:1.55}.ndb-note--warning{border-left-color:#e39b36;background:#fff9ef}\n.ndb-card img{display:block;width:auto;max-width:min(680px,100%);height:auto;margin:24px auto;border-radius:12px;box-shadow:0 12px 28px rgba(0,18,51,.12)}.ndb-card img.ndb-architecture{width:min(820px,100%);max-width:100%}.ndb-figure-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;margin:24px 0}.ndb-figure-grid figure{margin:0;padding:16px;border:1px solid #dce8ef;border-radius:15px;background:#f8fbfd}.ndb-figure-grid img{width:100%;max-width:100%;margin:0 auto 12px;box-shadow:none}.ndb-figure-grid figcaption{color:#405361;font-size:14px;line-height:1.45}\n.ndb-card table{width:auto;max-width:100%;margin:24px auto;border-collapse:separate;border-spacing:0;overflow:hidden;border-radius:12px;background:#fff;box-shadow:0 10px 24px rgba(0,18,51,.08)}.ndb-card th,.ndb-card td{padding:11px 16px;border-bottom:1px solid #e2e9ee;text-align:left}.ndb-card thead th{background:#12354b!important;color:#fff!important}.ndb-card tbody th{background:#eaf2f6!important;color:#12354b!important;text-align:left}.ndb-card tbody tr:nth-child(even) th{background:#f4f8fa!important}.ndb-card tbody td{color:#33424f!important}.ndb-card td{color:#33424f}.ndb-card tbody tr:last-child td{border-bottom:0}\n.ndb-flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:24px 0}.ndb-flow div{position:relative;padding:18px 16px;border-radius:13px;background:#12354b;color:#fff;text-align:center;font-weight:600}.ndb-flow div:not(:last-child):after{content:\"\u2192\";position:absolute;right:-17px;top:50%;z-index:2;transform:translateY(-50%);color:#56a1c8;font-size:22px}\n.ndb-calculator{margin:26px 0;padding:26px;border:1px solid #cfe0ea;border-radius:18px;background:#f8fbfd;box-shadow:0 12px 28px rgba(0,18,51,.08)}.ndb-calculator h3{margin-top:0}.ndb-calculator-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.ndb-field label{display:block;margin-bottom:6px;color:#33424f;font-size:13px;font-weight:700}.ndb-field input{width:100%;padding:10px 11px;border:1px solid #bdcfda;border-radius:8px;background:#fff;color:#1b2635;font:inherit}.ndb-field small{display:block;margin-top:4px;color:#71818d;font-size:11px}.ndb-calc-actions{display:flex;justify-content:center;gap:10px;margin:18px 0}.ndb-calc-actions button{padding:11px 18px;border:0;border-radius:22px;background:#245e80;color:#fff;font:inherit;font-weight:700;cursor:pointer}.ndb-calc-actions button[type=button]{background:#e4edf2;color:#12354b}.ndb-output{max-width:360px;margin:0 auto;padding:20px;border:1px solid #d8e4eb;border-radius:12px;background:#fff;text-align:center}.ndb-output span{display:block;color:#5e707d;font-size:13px}.ndb-output strong{display:block;margin-top:5px;color:#12354b;font-size:28px}.ndb-calc-status{text-align:center;color:#60727f!important;font-size:13px!important}\n.ndb-card details{margin:22px 0;padding:16px 18px;border:1px solid #dce8ef;border-radius:12px;background:#f8fbfd}.ndb-card summary{cursor:pointer;color:#12354b;font-weight:700}.ndb-card pre{overflow-x:auto;margin:15px 0 0;padding:18px;border-radius:10px;background:#edf2f5;color:#1b2635;font:12px\/1.5 Consolas,monospace;white-space:pre}\n@media(max-width:900px){.ndb-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.ndb-value-grid{grid-template-columns:1fr}.ndb-flow{grid-template-columns:1fr 1fr}.ndb-flow div:after{display:none}}\n@media(max-width:680px){.ndb{padding:12px 14px}.ndb-executive{padding:24px 20px}.ndb-executive h2{font-size:24px}.ndb-kpis,.ndb-figure-grid,.ndb-calculator-grid,.ndb-flow{grid-template-columns:1fr}.ndb-calculator{padding:20px 16px}.ndb-card table{font-size:13px}.ndb-card th,.ndb-card td{padding:9px 8px}}\n<\/style>\n\n<style>\n.ndb-card img.ndb-architecture--emissions{width:min(1080px,100%)}\n.ndb-card .ndb-kpi{border:1px solid #dce8ef;background:#f8fbfd}.ndb-card .ndb-kpi strong{color:#12354b}.ndb-card .ndb-kpi span{color:#5e707d}\n.ndb-architecture-flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:24px auto;max-width:1000px}.ndb-architecture-flow>div{display:flex;min-height:146px;flex-direction:column;justify-content:center;padding:20px;border:1px solid #d7e4eb;border-radius:14px;background:#fff;text-align:center;box-shadow:0 8px 20px rgba(0,18,51,.07)}.ndb-architecture-flow strong{display:block;margin-bottom:7px;color:#12354b;font-size:18px}.ndb-architecture-flow span{color:#5e707d;font-size:14px;line-height:1.45}\n.ndb-case{margin:24px 0;padding:24px;border:1px solid #cfe0ea;border-radius:16px;background:#f8fbfd}.ndb-case h3{margin-top:0}\n.ndb-output-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:760px;margin:18px auto}.ndb-output-card{min-height:112px;padding:17px;border:1px solid #d8e4eb;border-radius:12px;background:#fff;text-align:center}.ndb-output-card span{display:block;color:#5e707d;font-size:13px}.ndb-output-card strong{display:block;margin:7px 0;color:#12354b;font-size:25px}.ndb-output-card em{color:#60727f;font-size:12px;font-style:normal;font-weight:700}\n.ndb-table-scroll{max-width:100%;overflow-x:auto}\n@media(max-width:760px){.ndb-architecture-flow{grid-template-columns:1fr 1fr}}\n@media(max-width:560px){.ndb-architecture-flow,.ndb-output-grid{grid-template-columns:1fr}}\n<\/style>\n\n<div class=\"ndb\"><div class=\"ndb-wrap\">\n<section class=\"ndb-executive\"><h2>Estimate hourly NOx from gas-turbine operating data<\/h2>\n<p>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.<\/p>\n<div class=\"ndb-kpis\"><div class=\"ndb-kpi\"><strong>36,733<\/strong><span>hourly aggregated records<\/span><\/div><div class=\"ndb-kpi\"><strong>10<\/strong><span>simultaneous input signals<\/span><\/div><div class=\"ndb-kpi\"><strong>7,346<\/strong><span>independent testing rows<\/span><\/div><div class=\"ndb-kpi\"><strong>4.28 mg\/m\u00b3<\/strong><span>testing MAE<\/span><\/div><\/div>\n<div class=\"ndb-actions\"><a href=\"#7-model-deployment\">Try the model<\/a><a href=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-gas-emissions.csv\">Download the dataset<\/a><\/div><\/section>\n<div class=\"ndb-lead\"><p>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).<\/p><\/div>\n<ul class=\"ndb-toc\"><li><a href=\"#1-industrial-challenge\">Industrial challenge<\/a><\/li><li><a href=\"#2-data-set\">Data set<\/a><\/li><li><a href=\"#3-model\">Neural network<\/a><\/li><li><a href=\"#4-training\">Training<\/a><\/li><li><a href=\"#5-selection\">Model selection<\/a><\/li><li><a href=\"#6-testing\">Testing<\/a><\/li><li><a href=\"#7-model-deployment\">Deployment<\/a><\/li><li><a href=\"#8-limitations\">Limitations<\/a><\/li><li><a href=\"#references\">References<\/a><\/li><\/ul>\n\n<section id=\"1-industrial-challenge\" class=\"ndb-card\"><h2>1. Industrial challenge<\/h2>\n<p>This is an <a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/neural-networks-applications\/#Approximation\">approximation<\/a> problem: the model estimates the continuous target <code>NOx<\/code>, expressed in mg\/m\u00b3, from ten measurements available at the same operating point.<\/p>\n<div class=\"ndb-value-grid\"><div class=\"ndb-value\"><strong>Monitor emissions context<\/strong><span>Estimate NOx alongside existing measurements and compare trends across ambient and operating regimes.<\/span><\/div><div class=\"ndb-value\"><strong>Investigate abnormal operation<\/strong><span>Flag large disagreement between measured and predicted NOx for engineering review, sensor checks or combustion diagnostics.<\/span><\/div><div class=\"ndb-value\"><strong>Screen operating scenarios<\/strong><span>Study model sensitivity inside the historical domain before validating any proposed change with turbine physics, OEM constraints and plant procedures.<\/span><\/div><\/div>\n<p>Potential users include plant operators, gas-turbine performance engineers, environmental and compliance teams, control and instrumentation engineers, reliability teams and operations leadership.<\/p>\n<div class=\"ndb-audience\"><span>Plant operations<\/span><span>Environmental compliance<\/span><span>Gas-turbine engineering<\/span><span>Control &amp; instrumentation<\/span><span>Reliability<\/span><span>Operations leadership<\/span><\/div>\n<div class=\"ndb-note\"><strong>Scope of this example.<\/strong> The model predicts a simultaneous hourly NOx value. It does not forecast a future emission event, establish a legal limit or recommend an automatic combustion-control action.<\/div><\/section>\n\n<section id=\"2-data-set\" class=\"ndb-card\"><h2>2. Data set<\/h2>\n<p>The <a href=\"https:\/\/archive.ics.uci.edu\/dataset\/551\/gas%2Bturbine%2Bco%2B\">UCI Gas Turbine CO and NOx Emission dataset<\/a> 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.<\/p>\n<div class=\"ndb-downloads\"><a href=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-gas-emissions.csv\">Download power-plant-gas-emissions.csv<\/a><\/div>\n<div class=\"ndb-table-scroll\"><table><thead><tr><th>CSV variable<\/th><th>Engineering meaning<\/th><th>Role<\/th><th>Unit<\/th><th>Observed range<\/th><\/tr><\/thead><tbody><tr><td><code>ambient_temperature<\/code><\/td><td>Ambient temperature<\/td><td>Input<\/td><td>\u00b0C<\/td><td>-6.2348 to 37.103<\/td><\/tr><tr><td><code>ambient_pressure<\/code><\/td><td>Ambient pressure<\/td><td>Input<\/td><td>mbar<\/td><td>985.85 to 1036.6<\/td><\/tr><tr><td><code>ambient_humidity<\/code><\/td><td>Ambient humidity<\/td><td>Input<\/td><td>%<\/td><td>24.085 to 100.2<\/td><\/tr><tr><td><code>air_filter_difference_pressure<\/code><\/td><td>Air-filter differential pressure<\/td><td>Input<\/td><td>mbar<\/td><td>2.0874 to 7.6106<\/td><\/tr><tr><td><code>gas_turbine_exhaust_pressure<\/code><\/td><td>Gas-turbine exhaust pressure<\/td><td>Input<\/td><td>mbar<\/td><td>17.698 to 40.716<\/td><\/tr><tr><td><code>turbine_inlet_temperature<\/code><\/td><td>Turbine inlet temperature<\/td><td>Input<\/td><td>\u00b0C<\/td><td>1000.8 to 1100.9<\/td><\/tr><tr><td><code>turbine_after_temperature<\/code><\/td><td>Turbine after temperature<\/td><td>Input<\/td><td>\u00b0C<\/td><td>511.04 to 550.61<\/td><\/tr><tr><td><code>turbine_energy_yield<\/code><\/td><td>Turbine energy yield<\/td><td>Input<\/td><td>MWh<\/td><td>100.02 to 179.5<\/td><\/tr><tr><td><code>compressor_discharge_pressure<\/code><\/td><td>Compressor discharge pressure<\/td><td>Input<\/td><td>bar<\/td><td>9.8518 to 15.159<\/td><\/tr><tr><td><code>CO<\/code><\/td><td>Carbon monoxide concentration<\/td><td>Input<\/td><td>mg\/m\u00b3<\/td><td>0.00038751 to 44.103<\/td><\/tr><tr><td><code>NOx<\/code><\/td><td>Nitrogen oxides concentration<\/td><td>Target<\/td><td>mg\/m\u00b3<\/td><td>25.905 to 119.91<\/td><\/tr><\/tbody><\/table><\/div>\n<div class=\"ndb-note\"><strong>Variable-name correction.<\/strong> The working export had the last two turbine-process names interchanged. The source definition shows that the 100.02\u2013179.50 column is turbine energy yield and the 9.8518\u201315.159 column is compressor discharge pressure. The downloadable CSV and Python model use the corrected names without changing values, weights or predictions.<\/div>\n<p>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.<\/p>\n<img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-distribution-2026.png\" alt=\"Histogram of hourly NOx concentration in the gas-turbine dataset\">\n<p>Most observations fall around 59\u201368 mg\/m\u00b3, with a smaller right tail extending above 100 mg\/m\u00b3. Reporting errors in physical units is therefore essential: one aggregate score can hide weaker performance at high-emission points.<\/p>\n<div class=\"ndb-figure-grid\"><figure><img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-correlations-native-2026.png\" alt=\"Corrected Pearson correlations between ten gas-turbine inputs and NOx\"><figcaption><strong>Marginal relationships.<\/strong> Ambient temperature has the strongest negative linear correlation with NOx; CO has the strongest positive one. Correlation does not imply that changing one variable alone will cause the plotted NOx change.<\/figcaption><\/figure><figure><img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-ambient-temperature-scatter-2026.png\" alt=\"Scatter chart of ambient temperature and NOx concentration\"><figcaption><strong>Operating regimes overlap.<\/strong> The broad scatter shows why the complete multivariable operating point matters more than ambient temperature alone.<\/figcaption><\/figure><\/div>\n<div class=\"ndb-note ndb-note--warning\"><strong>Validation design.<\/strong> UCI states that the rows are chronological and recommends using the first three years for training and cross-validation and the final two years for testing. Because the consolidated CSV omits year and the present project uses a random split, its testing metrics should be treated as exploratory rather than prospective.<\/div><\/section>\n\n<section id=\"3-model\" class=\"ndb-card\"><h2>3. Neural network<\/h2>\n<p>The initial 10\u20133\u20131 model provides a compact baseline, shown below with the corrected process-variable names.<\/p><img decoding=\"async\" class=\"ndb-architecture ndb-architecture--emissions\" src=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-initial-network-corrected-2026.png\" alt=\"Initial 10-3-1 NOx neural network with corrected turbine energy yield and compressor discharge pressure labels\"><p>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\u00b3.<\/p>\n<div class=\"ndb-architecture-flow\"><div><strong>10 inputs<\/strong><span>Ambient, turbine-process and CO measurements<\/span><\/div><div><strong>Scaling layer<\/strong><span>Mean and standard-deviation scaling from training data<\/span><\/div><div><strong>10 tanh neurons<\/strong><span>Nonlinear representation selected from 1\u201310 neurons<\/span><\/div><div><strong>1 NOx output<\/strong><span>Linear output and unscaling to mg\/m\u00b3<\/span><\/div><\/div>\n<p>The final 10\u201310\u20131 network contains <strong>121 trainable parameters<\/strong>. Its size remains small enough for millisecond-scale inference in a historian, edge service or plant analytics platform.<\/p><\/section>\n\n<section id=\"4-training\" class=\"ndb-card\"><h2>4. Training strategy<\/h2>\n<p>The initial 10\u20133\u20131 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.<\/p>\n<img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-adam-history-native-2026.png\" alt=\"Adam training and selection error history for the NOx model\">\n<table><thead><tr><th>Optimizer<\/th><th>Epochs<\/th><th>Training error<\/th><th>Selection error<\/th><th>Stopping criterion<\/th><\/tr><\/thead><tbody><tr><td>Adam<\/td><td>1,089<\/td><td>0.143<\/td><td>0.134<\/td><td>Maximum validation-error increases<\/td><\/tr><\/tbody><\/table>\n<p>The previously published quasi-Newton chart belongs to an earlier run and is not used for these final results.<\/p><\/section>\n\n<section id=\"5-selection\" class=\"ndb-card\"><h2>5. Model selection<\/h2>\n<p>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.<\/p>\n<img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-neuron-selection-native-2026.png\" alt=\"Training and selection errors for NOx networks with one to ten hidden neurons\">\n<table><thead><tr><th>Selected hidden neurons<\/th><th>Training error<\/th><th>Selection error<\/th><th>Search boundary<\/th><\/tr><\/thead><tbody><tr><td>10<\/td><td>0.1322<\/td><td>0.1238<\/td><td>Configured maximum reached<\/td><\/tr><\/tbody><\/table>\n<p>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.<\/p><\/section>\n\n<section id=\"6-testing\" class=\"ndb-card\"><h2>6. Testing analysis<\/h2>\n<p>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\u00b2; MAE, RMSE and bias express practical error in mg\/m\u00b3.<\/p>\n<div class=\"ndb-table-scroll\"><table><thead><tr><th>Testing rows<\/th><th>R\u00b2<\/th><th>MAE<\/th><th>RMSE<\/th><th>Bias<\/th><th>95th-percentile absolute error<\/th><th>Within \u00b110 mg\/m\u00b3<\/th><\/tr><\/thead><tbody><tr><td>7,346<\/td><td>0.7425<\/td><td>4.28 mg\/m\u00b3<\/td><td>6.11 mg\/m\u00b3<\/td><td>+0.12 mg\/m\u00b3<\/td><td>12.36 mg\/m\u00b3<\/td><td>91.25%<\/td><\/tr><\/tbody><\/table><\/div>\n<p>A constant training-mean baseline has RMSE 11.95 mg\/m\u00b3, 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.<\/p>\n<img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-goodness-of-fit-native-2026.png\" alt=\"Predicted versus measured NOx for 7346 random testing rows\">\n<div class=\"ndb-note ndb-note--warning\"><strong>Decision implication.<\/strong> The maximum testing error is 50.48 mg\/m\u00b3. A production PEMS therefore needs uncertainty or guard bands, regime-specific validation and an escalation rule to the measured CEMS value; R\u00b2 alone is not sufficient for operational acceptance.<\/div><\/section>\n\n<section id=\"7-model-deployment\" class=\"ndb-card\"><h2>7. Model deployment<\/h2>\n<p>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.<\/p>\n<div class=\"ndb-flow\"><div>Historian, turbine controls and CEMS<\/div><div>Time alignment, units and range checks<\/div><div>NOx predictive model<\/div><div>Trend, residual and engineering review<\/div><\/div>\n<div class=\"ndb-case\"><h3>Representative hourly operating point<\/h3><p>The following point uses the dataset means. With the corrected variable mapping, the final exported model predicts <strong>68.77 mg\/m\u00b3 NOx<\/strong>.<\/p>\n<div class=\"ndb-table-scroll\"><table><thead><tr><th>Engineering variable<\/th><th>CSV field<\/th><th>Value<\/th><\/tr><\/thead><tbody><tr><td>Ambient temperature<\/td><td><code>ambient_temperature<\/code><\/td><td>17.7127 \u00b0C<\/td><\/tr><tr><td>Ambient pressure<\/td><td><code>ambient_pressure<\/code><\/td><td>1013.07 mbar<\/td><\/tr><tr><td>Ambient humidity<\/td><td><code>ambient_humidity<\/code><\/td><td>77.867 %<\/td><\/tr><tr><td>Air-filter differential pressure<\/td><td><code>air_filter_difference_pressure<\/code><\/td><td>3.9255 mbar<\/td><\/tr><tr><td>Gas-turbine exhaust pressure<\/td><td><code>gas_turbine_exhaust_pressure<\/code><\/td><td>25.5638 mbar<\/td><\/tr><tr><td>Turbine inlet temperature<\/td><td><code>turbine_inlet_temperature<\/code><\/td><td>1081.43 \u00b0C<\/td><\/tr><tr><td>Turbine after temperature<\/td><td><code>turbine_after_temperature<\/code><\/td><td>546.159 \u00b0C<\/td><\/tr><tr><td>Turbine energy yield<\/td><td><code>turbine_energy_yield<\/code><\/td><td>133.506 MWh<\/td><\/tr><tr><td>Compressor discharge pressure<\/td><td><code>compressor_discharge_pressure<\/code><\/td><td>12.0605 bar<\/td><\/tr><tr><td>Carbon monoxide concentration<\/td><td><code>CO<\/code><\/td><td>2.3725 mg\/m\u00b3<\/td><\/tr><tr><td>Predicted nitrogen oxides<\/td><td><code>NOx<\/code><\/td><td><strong>68.77 mg\/m\u00b3<\/strong><\/td><\/tr><\/tbody><\/table><\/div><\/div>\n\n<div class=\"ndb-calculator\" id=\"nox-calculator\">\n<h3>Try the NOx prediction model<\/h3>\n<p>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.<\/p>\n<form id=\"nox-calculator-form\"><div class=\"ndb-calculator-grid\"><div class=\"ndb-field\"><label for=\"nox-0\">Ambient temperature (\u00b0C)<\/label><input id=\"nox-0\" name=\"ambient_temperature\" type=\"number\" min=\"-6.2348\" max=\"37.103\" step=\"any\" value=\"17.7127\"><small>-6.2348 to 37.103<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-1\">Ambient pressure (mbar)<\/label><input id=\"nox-1\" name=\"ambient_pressure\" type=\"number\" min=\"985.85\" max=\"1036.6\" step=\"any\" value=\"1013.0702\"><small>985.85 to 1036.6<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-2\">Ambient humidity (%)<\/label><input id=\"nox-2\" name=\"ambient_humidity\" type=\"number\" min=\"24.085\" max=\"100.2\" step=\"any\" value=\"77.867\"><small>24.085 to 100.2<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-3\">Air-filter differential pressure (mbar)<\/label><input id=\"nox-3\" name=\"air_filter_difference_pressure\" type=\"number\" min=\"2.0874\" max=\"7.6106\" step=\"any\" value=\"3.9255\"><small>2.0874 to 7.6106<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-4\">Gas-turbine exhaust pressure (mbar)<\/label><input id=\"nox-4\" name=\"gas_turbine_exhaust_pressure\" type=\"number\" min=\"17.698\" max=\"40.716\" step=\"any\" value=\"25.5638\"><small>17.698 to 40.716<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-5\">Turbine inlet temperature (\u00b0C)<\/label><input id=\"nox-5\" name=\"turbine_inlet_temperature\" type=\"number\" min=\"1000.8\" max=\"1100.9\" step=\"any\" value=\"1081.4281\"><small>1000.8 to 1100.9<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-6\">Turbine after temperature (\u00b0C)<\/label><input id=\"nox-6\" name=\"turbine_after_temperature\" type=\"number\" min=\"511.04\" max=\"550.61\" step=\"any\" value=\"546.1585\"><small>511.04 to 550.61<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-7\">Turbine energy yield (MWh)<\/label><input id=\"nox-7\" name=\"turbine_energy_yield\" type=\"number\" min=\"100.02\" max=\"179.5\" step=\"any\" value=\"133.5064\"><small>100.02 to 179.5<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-8\">Compressor discharge pressure (bar)<\/label><input id=\"nox-8\" name=\"compressor_discharge_pressure\" type=\"number\" min=\"9.8518\" max=\"15.159\" step=\"any\" value=\"12.0605\"><small>9.8518 to 15.159<\/small><\/div><div class=\"ndb-field\"><label for=\"nox-9\">Carbon monoxide concentration (mg\/m\u00b3)<\/label><input id=\"nox-9\" name=\"CO\" type=\"number\" min=\"0.00038751\" max=\"44.103\" step=\"any\" value=\"2.3725\"><small>0.00038751 to 44.103<\/small><\/div><\/div>\n<div class=\"ndb-calc-actions\"><button type=\"submit\">Predict NOx<\/button><button type=\"button\" id=\"nox-reset\">Reset representative point<\/button><\/div><\/form>\n<div class=\"ndb-output-grid\" aria-live=\"polite\"><div class=\"ndb-output-card\"><span>Predicted NOx concentration<\/span><strong id=\"nox-output\">\u2014<\/strong><em>Model estimate<\/em><\/div><div class=\"ndb-output-card\"><span>Observed target interval<\/span><strong>25.91\u2013119.91<\/strong><em>mg\/m\u00b3 in this dataset<\/em><\/div><\/div>\n<p class=\"ndb-calc-status\" id=\"nox-status\">Educational PEMS example \u2014 not a certified CEMS, regulatory result or automatic control command.<\/p>\n<\/div>\n<script>\n(function(){\nconst form=document.getElementById(\"nox-calculator-form\");if(!form)return;\nconst ids=[\"nox-0\", \"nox-1\", \"nox-2\", \"nox-3\", \"nox-4\", \"nox-5\", \"nox-6\", \"nox-7\", \"nox-8\", \"nox-9\"];\nconst defaults=[17.7127, 1013.0702, 77.867, 3.9255, 25.5638, 1081.4281, 546.1585, 133.5064, 12.0605, 2.3725];\nfunction calculate(){\nconst fields=ids.map(id=>document.getElementById(id)),x=fields.map(f=>Number(f.value));\nif(x.some(v=>!Number.isFinite(v))){document.getElementById(\"nox-status\").textContent=\"Enter a valid number in every field.\";return}\nlet outside=false;fields.forEach((f,i)=>{const bad=x[i]<Number(f.min)||x[i]>Number(f.max);f.setAttribute(\"aria-invalid\",bad?\"true\":\"false\");outside=outside||bad});\nconst ambient_temperature=x[0],ambient_pressure=x[1],ambient_humidity=x[2],air_filter_difference_pressure=x[3],gas_turbine_exhaust_pressure=x[4],turbine_inlet_temperature=x[5],turbine_after_temperature=x[6],turbine_energy_yield=x[7],compressor_discharge_pressure=x[8],CO=x[9];\nconst scaled_ambient_temperature = (ambient_temperature-17.71269989)\/7.447450161;\nconst scaled_ambient_pressure = (ambient_pressure-1013.070007)\/6.463349819;\nconst scaled_ambient_humidity = (ambient_humidity-77.86699677)\/14.46140003;\nconst scaled_air_filter_difference_pressure = (air_filter_difference_pressure-3.925519943)\/0.7739359736;\nconst scaled_gas_turbine_exhaust_pressure = (gas_turbine_exhaust_pressure-25.56380081)\/4.195960045;\nconst scaled_turbine_inlet_temperature = (turbine_inlet_temperature-1081.430054)\/17.53639984;\nconst scaled_turbine_after_temperature = (turbine_after_temperature-546.1589966)\/6.84236002;\nconst scaled_turbine_energy_yield = (turbine_energy_yield-133.5059967)\/15.61859989;\nconst scaled_compressor_discharge_pressure = (compressor_discharge_pressure-12.06050014)\/1.088799953;\nconst scaled_CO = (CO-2.372469902)\/2.26267004;\nconst dense_layer_1_output_0 = Math.tanh( -0.04679115117 + (0.02877811715*scaled_ambient_temperature) + (0.01383754518*scaled_ambient_pressure) + (0.04374700785*scaled_ambient_humidity) + (0.004628032446*scaled_air_filter_difference_pressure) + (0.06957215071*scaled_gas_turbine_exhaust_pressure) + (-0.1980254948*scaled_turbine_inlet_temperature) + (0.0630043596*scaled_turbine_after_temperature) + (0.2447680533*scaled_turbine_energy_yield) + (0.2068227082*scaled_compressor_discharge_pressure) + (0.06579484791*scaled_CO) );\nconst dense_layer_1_output_1 = Math.tanh( -0.04688382149 + (0.02782184444*scaled_ambient_temperature) + (0.01371366158*scaled_ambient_pressure) + (0.04200798273*scaled_ambient_humidity) + (0.004885845352*scaled_air_filter_difference_pressure) + (0.06902556121*scaled_gas_turbine_exhaust_pressure) + (-0.1926741749*scaled_turbine_inlet_temperature) + (0.06006873772*scaled_turbine_after_temperature) + (0.2402208447*scaled_turbine_energy_yield) + (0.2032943666*scaled_compressor_discharge_pressure) + (0.0650517866*scaled_CO) );\nconst dense_layer_1_output_2 = Math.tanh( -0.6617894173 + (0.2534082234*scaled_ambient_temperature) + (0.01456669997*scaled_ambient_pressure) + (0.1138524786*scaled_ambient_humidity) + (-0.1522677094*scaled_air_filter_difference_pressure) + (-0.1119276956*scaled_gas_turbine_exhaust_pressure) + (-0.4942182899*scaled_turbine_inlet_temperature) + (0.5955351591*scaled_turbine_after_temperature) + (0.02409550361*scaled_turbine_energy_yield) + (-0.08856897801*scaled_compressor_discharge_pressure) + (-0.221319288*scaled_CO) );\nconst dense_layer_1_output_3 = Math.tanh( -0.7266891003 + (-0.2696833909*scaled_ambient_temperature) + (-0.03974800557*scaled_ambient_pressure) + (0.1501348019*scaled_ambient_humidity) + (-0.1853795052*scaled_air_filter_difference_pressure) + (-0.01618474908*scaled_gas_turbine_exhaust_pressure) + (0.04439780861*scaled_turbine_inlet_temperature) + (-0.422734648*scaled_turbine_after_temperature) + (-0.2500010729*scaled_turbine_energy_yield) + (-0.1750112325*scaled_compressor_discharge_pressure) + (-0.03292333335*scaled_CO) );\nconst dense_layer_1_output_4 = Math.tanh( -0.1957368106 + (-0.1490719914*scaled_ambient_temperature) + (-0.1710796654*scaled_ambient_pressure) + (-0.1224772781*scaled_ambient_humidity) + (0.1884310991*scaled_air_filter_difference_pressure) + (-0.1761782616*scaled_gas_turbine_exhaust_pressure) + (0.7993546724*scaled_turbine_inlet_temperature) + (-0.01637626067*scaled_turbine_after_temperature) + (-0.3376150727*scaled_turbine_energy_yield) + (-0.2856889069*scaled_compressor_discharge_pressure) + (0.3984465897*scaled_CO) );\nconst dense_layer_1_output_5 = Math.tanh( -0.04351453111 + (0.03194884956*scaled_ambient_temperature) + (0.01436343044*scaled_ambient_pressure) + (0.04827864096*scaled_ambient_humidity) + (0.003434012644*scaled_air_filter_difference_pressure) + (0.07041139901*scaled_gas_turbine_exhaust_pressure) + (-0.2083570808*scaled_turbine_inlet_temperature) + (0.06862419099*scaled_turbine_after_temperature) + (0.2522595227*scaled_turbine_energy_yield) + (0.2125123441*scaled_compressor_discharge_pressure) + (0.06600396335*scaled_CO) );\nconst dense_layer_1_output_6 = Math.tanh( -0.3435412645 + (-0.1721751243*scaled_ambient_temperature) + (0.02339351177*scaled_ambient_pressure) + (-0.03563642502*scaled_ambient_humidity) + (-0.002439931966*scaled_air_filter_difference_pressure) + (0.1668460816*scaled_gas_turbine_exhaust_pressure) + (-0.2089495659*scaled_turbine_inlet_temperature) + (0.04631270096*scaled_turbine_after_temperature) + (0.4337110817*scaled_turbine_energy_yield) + (0.3748565614*scaled_compressor_discharge_pressure) + (0.1373942494*scaled_CO) );\nconst dense_layer_1_output_7 = Math.tanh( 0.243736133 + (0.5074033141*scaled_ambient_temperature) + (-0.08870434761*scaled_ambient_pressure) + (-0.1685288697*scaled_ambient_humidity) + (-0.003513633041*scaled_air_filter_difference_pressure) + (-0.05786677077*scaled_gas_turbine_exhaust_pressure) + (-0.05642380938*scaled_turbine_inlet_temperature) + (0.5314692259*scaled_turbine_after_temperature) + (0.07605672628*scaled_turbine_energy_yield) + (0.09108232707*scaled_compressor_discharge_pressure) + (0.0001288543281*scaled_CO) );\nconst dense_layer_1_output_8 = Math.tanh( 0.5262651443 + (-0.5261129737*scaled_ambient_temperature) + (0.1386193484*scaled_ambient_pressure) + (-0.2415165305*scaled_ambient_humidity) + (-0.08545514196*scaled_air_filter_difference_pressure) + (0.03673538193*scaled_gas_turbine_exhaust_pressure) + (0.3910402358*scaled_turbine_inlet_temperature) + (-0.2139867395*scaled_turbine_after_temperature) + (-0.03789095953*scaled_turbine_energy_yield) + (-0.04013337567*scaled_compressor_discharge_pressure) + (0.009774022736*scaled_CO) );\nconst dense_layer_1_output_9 = Math.tanh( 0.005728571676 + (-0.01959163882*scaled_ambient_temperature) + (-0.01502594072*scaled_ambient_pressure) + (-0.01176187769*scaled_ambient_humidity) + (-0.004576150328*scaled_air_filter_difference_pressure) + (-0.04448273405*scaled_gas_turbine_exhaust_pressure) + (0.07990408689*scaled_turbine_inlet_temperature) + (-0.009799691848*scaled_turbine_after_temperature) + (-0.1214383841*scaled_turbine_energy_yield) + (-0.1065333784*scaled_compressor_discharge_pressure) + (-0.02621139213*scaled_CO) );\nconst approximation_layer_output_0 = ( -0.09985773265 + (-0.4182705581*dense_layer_1_output_0) + (-0.4099501073*dense_layer_1_output_1) + (-0.9729915261*dense_layer_1_output_2) + (0.838450253*dense_layer_1_output_3) + (0.9899881482*dense_layer_1_output_4) + (-0.4325385392*dense_layer_1_output_5) + (-0.7628725171*dense_layer_1_output_6) + (-0.6808074713*dense_layer_1_output_7) + (0.8250209689*dense_layer_1_output_8) + (0.1962887198*dense_layer_1_output_9) );\nconst unscaling_layer_output_0=approximation_layer_output_0*11.67835712+65.29306793;\nconst NOx = unscaling_layer_output_0;\ndocument.getElementById(\"nox-output\").textContent=NOx.toFixed(2)+\" mg\/m\u00b3\";\ndocument.getElementById(\"nox-status\").textContent=outside?\"Warning: at least one input is outside the training range; this prediction should not be trusted.\":\"All individual inputs are within the observed ranges. Correlation between variables and plant-specific operating constraints still need review.\";\n}\nform.addEventListener(\"submit\",e=>{e.preventDefault();calculate()});\ndocument.getElementById(\"nox-reset\").addEventListener(\"click\",()=>{ids.forEach((id,i)=>document.getElementById(id).value=defaults[i]);calculate()});\ncalculate();\n})();\n<\/script>\n<div class=\"ndb-case\"><h3>Local sensitivity: turbine after temperature<\/h3><p>At the saved reference point, the regenerated model predicts 95.91 mg\/m\u00b3 at 538.05 \u00b0C. Varying only turbine after temperature gives the following model responses:<\/p>\n<table><thead><tr><th>Turbine after temperature<\/th><th>Predicted NOx<\/th><th>Difference from reference<\/th><\/tr><\/thead><tbody><tr><td>520.00 \u00b0C<\/td><td>110.76 mg\/m\u00b3<\/td><td>+14.85 mg\/m\u00b3<\/td><\/tr><tr><td>538.05 \u00b0C<\/td><td>95.91 mg\/m\u00b3<\/td><td>Reference<\/td><\/tr><tr><td>550.00 \u00b0C<\/td><td>69.56 mg\/m\u00b3<\/td><td>\u221226.35 mg\/m\u00b3<\/td><\/tr><\/tbody><\/table>\n<img decoding=\"async\" src=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-tat-directional-output-2026.png\" alt=\"Directional output of predicted NOx versus turbine after temperature at a fixed reference point\">\n<div class=\"ndb-note ndb-note--warning\"><strong>Do not treat this as a control law.<\/strong> Turbine temperatures, pressure, yield and emissions are strongly coupled. Holding every other process variable fixed can create an implausible operating point, and the curve represents learned association rather than a causal effect. Use it to formulate an engineering question, then validate the scenario with turbine physics, OEM limits and plant data.<\/div><\/div>\n<h3>Download and integrate<\/h3><div class=\"ndb-downloads\"><a href=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-nox-python-model-2026-v2.zip\">Download corrected Python model (ZIP)<\/a><a href=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2026\/08\/power-plant-gas-emissions.csv\">Download corrected dataset (CSV)<\/a><\/div>\n<div class=\"ndb-note\"><strong>CO input and deployment timing.<\/strong> Because CO is an input, this model assumes a simultaneous CO measurement. That is suitable for sensor cross-checking or a hybrid monitoring layer. For advance prediction or control planning, train and validate a second model using only signals available before the decision time.<\/div><\/section>\n\n<section id=\"8-limitations\" class=\"ndb-card\"><h2>8. Scope and limitations<\/h2><ul>\n<li>The data represents one gas turbine and one 2011\u20132015 operating history; transfer to another turbine, fuel, combustor, maintenance state or site is not demonstrated.<\/li>\n<li>The configured random split mixes operating years. It does not reproduce the source paper&#8217;s chronological protocol or demonstrate future-year performance.<\/li>\n<li>Year and timestamp are absent from the consolidated CSV, so seasonality, ageing, maintenance interventions and drift cannot be audited directly.<\/li>\n<li>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.<\/li>\n<li>Several turbine variables are strongly collinear. Directional outputs and one-variable correlations are predictive associations, not causal estimates.<\/li>\n<li>The model was trained inside approximately 75\u2013100% load and the listed univariate ranges; neither condition defines a safe multidimensional operating envelope.<\/li>\n<li>NOx limits depend on jurisdiction, permit, fuel, reference oxygen, dry\/wet basis and reference conditions. The model embeds no compliance threshold or unit correction.<\/li>\n<li>Deployment requires timestamp alignment, sensor-quality rules, out-of-domain detection, uncertainty or guard bands, residual monitoring, version control and periodic revalidation.<\/li>\n<li>This example supports engineering analysis. It does not replace a certified CEMS, OEM protection, operating procedures or qualified environmental and plant personnel.<\/li><\/ul><\/section>\n\n<section id=\"references\" class=\"ndb-card\"><h2>References<\/h2><ul><li><a href=\"https:\/\/archive.ics.uci.edu\/dataset\/551\/gas%2Bturbine%2Bco%2B\">UCI Gas Turbine CO and NOx Emission Data Set<\/a>, 36,733 hourly aggregated records, DOI: <a href=\"https:\/\/doi.org\/10.24432\/C5WC95\">10.24432\/C5WC95<\/a>.<\/li><li>Kaya, H., T\u00fcfekci, P. and Uzun, E. <a href=\"https:\/\/doi.org\/10.3906\/elk-1807-87\">Predicting CO and NOx emissions from gas turbines: novel data and a benchmark PEMS<\/a>, Turkish Journal of Electrical Engineering &amp; Computer Sciences 27(6), 4783\u20134796 (2019).<\/li><li><a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/testing-analysis\/\">Neural Designer testing analysis<\/a>: goodness-of-fit and regression analysis.<\/li><li><a href=\"https:\/\/www.neuraldesigner.com\/learning\/tutorials\/model-deployment\/\">Neural Designer model deployment<\/a>: output calculation, directional outputs and model export.<\/li><\/ul><\/section>\n<\/div><\/div>","protected":false},"author":13,"featured_media":1690,"template":"","categories":[29],"tags":[44,46,43],"class_list":["post-3515","learning","type-learning","status-publish","has-post-thumbnail","hentry","category-examples","tag-energy","tag-environment","tag-industry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Predict NOx emissions from a gas turbine with machine learning<\/title>\n<meta name=\"description\" content=\"Build a machine learning model to reduce the greenhouse gas emissions of a combined cycle power plant using environmental and process data.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Gas emission reduction machine learning example\" \/>\n<meta property=\"og:description\" content=\"Reducing the gas emissions of a combined cycle power plant using machine learning.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/\" \/>\n<meta property=\"og:site_name\" content=\"Neural Designer\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-25T12:03:33+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Gas emission reduction machine learning example\" \/>\n<meta name=\"twitter:description\" content=\"Reducing the gas emissions of a combined cycle power plant using machine learning.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp\" \/>\n<meta name=\"twitter:site\" content=\"@NeuralDesigner\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/\",\"url\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/\",\"name\":\"Predict NOx emissions from a gas turbine with machine learning\",\"isPartOf\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp\",\"datePublished\":\"2026-01-05T10:12:58+00:00\",\"dateModified\":\"2026-08-25T12:03:33+00:00\",\"description\":\"Build a machine learning model to reduce the greenhouse gas emissions of a combined cycle power plant using environmental and process data.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#primaryimage\",\"url\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp\",\"contentUrl\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp\",\"width\":1200,\"height\":628,\"caption\":\"Power plant gas emissions\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.neuraldesigner.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Learning\",\"item\":\"https:\/\/www.neuraldesigner.com\/learning\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Predict NOx emissions from a gas turbine with machine learning\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.neuraldesigner.com\/#website\",\"url\":\"https:\/\/www.neuraldesigner.com\/\",\"name\":\"Neural Designer\",\"description\":\"Explainable AI Platform\",\"publisher\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.neuraldesigner.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.neuraldesigner.com\/#organization\",\"name\":\"Neural Designer\",\"url\":\"https:\/\/www.neuraldesigner.com\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.neuraldesigner.com\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/05\/logo-neural-1.png\",\"contentUrl\":\"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/05\/logo-neural-1.png\",\"width\":1024,\"height\":223,\"caption\":\"Neural Designer\"},\"image\":{\"@id\":\"https:\/\/www.neuraldesigner.com\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/NeuralDesigner\",\"https:\/\/es.linkedin.com\/showcase\/neuraldesigner\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Predict NOx emissions from a gas turbine with machine learning","description":"Build a machine learning model to reduce the greenhouse gas emissions of a combined cycle power plant using environmental and process data.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/","og_locale":"en_US","og_type":"article","og_title":"Gas emission reduction machine learning example","og_description":"Reducing the gas emissions of a combined cycle power plant using machine learning.","og_url":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/","og_site_name":"Neural Designer","article_modified_time":"2026-08-25T12:03:33+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp","type":"image\/webp"}],"twitter_card":"summary_large_image","twitter_title":"Gas emission reduction machine learning example","twitter_description":"Reducing the gas emissions of a combined cycle power plant using machine learning.","twitter_image":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp","twitter_site":"@NeuralDesigner","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/","url":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/","name":"Predict NOx emissions from a gas turbine with machine learning","isPartOf":{"@id":"https:\/\/www.neuraldesigner.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#primaryimage"},"image":{"@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#primaryimage"},"thumbnailUrl":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp","datePublished":"2026-01-05T10:12:58+00:00","dateModified":"2026-08-25T12:03:33+00:00","description":"Build a machine learning model to reduce the greenhouse gas emissions of a combined cycle power plant using environmental and process data.","breadcrumb":{"@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#primaryimage","url":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp","contentUrl":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/06\/power-plant-gas-emissions-image.webp","width":1200,"height":628,"caption":"Power plant gas emissions"},{"@type":"BreadcrumbList","@id":"https:\/\/www.neuraldesigner.com\/learning\/examples\/power-plant-gas-emissions-nox\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.neuraldesigner.com\/"},{"@type":"ListItem","position":2,"name":"Learning","item":"https:\/\/www.neuraldesigner.com\/learning\/"},{"@type":"ListItem","position":3,"name":"Predict NOx emissions from a gas turbine with machine learning"}]},{"@type":"WebSite","@id":"https:\/\/www.neuraldesigner.com\/#website","url":"https:\/\/www.neuraldesigner.com\/","name":"Neural Designer","description":"Explainable AI Platform","publisher":{"@id":"https:\/\/www.neuraldesigner.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.neuraldesigner.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.neuraldesigner.com\/#organization","name":"Neural Designer","url":"https:\/\/www.neuraldesigner.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.neuraldesigner.com\/#\/schema\/logo\/image\/","url":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/05\/logo-neural-1.png","contentUrl":"https:\/\/www.neuraldesigner.com\/wp-content\/uploads\/2023\/05\/logo-neural-1.png","width":1024,"height":223,"caption":"Neural Designer"},"image":{"@id":"https:\/\/www.neuraldesigner.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/NeuralDesigner","https:\/\/es.linkedin.com\/showcase\/neuraldesigner\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/learning\/3515","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/learning"}],"about":[{"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/types\/learning"}],"author":[{"embeddable":true,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/users\/13"}],"version-history":[{"count":19,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/learning\/3515\/revisions"}],"predecessor-version":[{"id":23683,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/learning\/3515\/revisions\/23683"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/media\/1690"}],"wp:attachment":[{"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/media?parent=3515"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/categories?post=3515"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.neuraldesigner.com\/api\/wp\/v2\/tags?post=3515"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}