.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "examples/mlearning/dimension_reduction/plot_moe_burgers.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_examples_mlearning_dimension_reduction_plot_moe_burgers.py: Mixture of experts with PCA on Burgers dataset ============================================== In this demo, we apply a mixture of experts regression model to the Burgers dataset. In order to reduce the output dimension, we apply a PCA to the outputs. .. GENERATED FROM PYTHON SOURCE LINES 33-36 Imports ------- Import from standard libraries and |g|. .. GENERATED FROM PYTHON SOURCE LINES 36-52 .. code-block:: default from __future__ import division, unicode_literals import matplotlib.pyplot as plt from matplotlib.lines import Line2D from numpy import nonzero from gemseo.api import configure_logger, load_dataset from gemseo.mlearning.api import create_regression_model from gemseo.mlearning.transform.dimension_reduction.klsvd import KLSVD from gemseo.mlearning.transform.dimension_reduction.kpca import KPCA from gemseo.mlearning.transform.dimension_reduction.pca import PCA from gemseo.mlearning.transform.sensor.jameson import JamesonSensor configure_logger() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none .. GENERATED FROM PYTHON SOURCE LINES 53-55 Load dataset (Burgers) ---------------------- .. GENERATED FROM PYTHON SOURCE LINES 55-60 .. code-block:: default n_samples = 50 dataset = load_dataset("BurgersDataset", n_samples=n_samples) inputs = dataset.get_data_by_group(dataset.INPUT_GROUP) outputs = dataset.get_data_by_group(dataset.OUTPUT_GROUP) .. GENERATED FROM PYTHON SOURCE LINES 61-65 Mixture of experts (MoE) ------------------------ In this section we load a mixture of experts regression model through the machine learning API, using clustering, classification and regression models. .. GENERATED FROM PYTHON SOURCE LINES 67-71 Mixture of experts model ~~~~~~~~~~~~~~~~~~~~~~~~ We construct the MoE model using the predefined parameters, and fit the model to the dataset through the learn() method. .. GENERATED FROM PYTHON SOURCE LINES 71-83 .. code-block:: default klsvd = {dataset.OUTPUT_GROUP: KLSVD(mesh=dataset.metadata["x"], n_components=10)} pca = {dataset.OUTPUT_GROUP: PCA(n_components=10)} kpca = {dataset.OUTPUT_GROUP: KPCA(n_components=10, kernel="poly")} jameson = {dataset.OUTPUT_GROUP: JamesonSensor()} model = create_regression_model("MixtureOfExperts", dataset) model.set_clusterer("KMeans", n_clusters=2, transformer=jameson) model.set_classifier("KNNClassifier", n_neighbors=3) model.set_regressor("GaussianProcessRegression") # , transformer=pca) model.learn() .. rst-class:: sphx-glr-script-out Out: .. code-block:: none /home/docs/checkouts/readthedocs.org/user_builds/gemseo/conda/3.2.1/lib/python3.8/site-packages/sklearn/gaussian_process/_gpr.py:610: ConvergenceWarning: lbfgs failed to converge (status=2): ABNORMAL_TERMINATION_IN_LNSRCH. Increase the number of iterations (max_iter) or scale the data as shown in: https://scikit-learn.org/stable/modules/preprocessing.html _check_optimize_result("lbfgs", opt_res) /home/docs/checkouts/readthedocs.org/user_builds/gemseo/conda/3.2.1/lib/python3.8/site-packages/sklearn/gaussian_process/_gpr.py:610: ConvergenceWarning: lbfgs failed to converge (status=2): ABNORMAL_TERMINATION_IN_LNSRCH. Increase the number of iterations (max_iter) or scale the data as shown in: https://scikit-learn.org/stable/modules/preprocessing.html _check_optimize_result("lbfgs", opt_res) .. GENERATED FROM PYTHON SOURCE LINES 84-86 Make predictions ~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 86-90 .. code-block:: default predictions = model.predict(inputs) local_pred_0 = model.predict_local_model(inputs, 0) local_pred_1 = model.predict_local_model(inputs, 1) .. GENERATED FROM PYTHON SOURCE LINES 91-93 Plot clusters ~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 93-103 .. code-block:: default for i in nonzero(model.clusterer.labels == 0)[0]: plt.plot(outputs[i], color="r") for i in nonzero(model.clusterer.labels == 1)[0]: plt.plot(outputs[i], color="b") plt.legend( [Line2D([0], [0], color="r"), Line2D([0], [0], color="b")], ["Cluster 0", "Cluster 1"], ) plt.show() .. image:: /examples/mlearning/dimension_reduction/images/sphx_glr_plot_moe_burgers_001.png :alt: plot moe burgers :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 104-106 Plot predictions ~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 106-119 .. code-block:: default def lines(i): return (0, (i + 3, 1, 1, 1)) for i, pred in enumerate(predictions): color = "b" if model.labels[i] == 0: color = "r" plt.plot(pred, color=color, linestyle=lines(i)) plt.show() .. image:: /examples/mlearning/dimension_reduction/images/sphx_glr_plot_moe_burgers_002.png :alt: plot moe burgers :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 120-122 Plot local models ~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 122-130 .. code-block:: default plt.subplot(121) for i, pred in enumerate(local_pred_0): plt.plot(pred, color="r", linestyle=lines(i)) plt.subplot(122) for i, pred in enumerate(local_pred_1): plt.plot(pred, color="b", linestyle=lines(i)) plt.show() .. image:: /examples/mlearning/dimension_reduction/images/sphx_glr_plot_moe_burgers_003.png :alt: plot moe burgers :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 131-133 Plot selected predictions and exact curves ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. GENERATED FROM PYTHON SOURCE LINES 133-144 .. code-block:: default for i in [ 0, int(dataset.n_samples / 4), int(dataset.n_samples * 2 / 4), int(dataset.n_samples * 3 / 4), -1, ]: plt.plot(outputs[i], color="r") plt.plot(predictions[i], color="b", linestyle=":") plt.show() .. image:: /examples/mlearning/dimension_reduction/images/sphx_glr_plot_moe_burgers_004.png :alt: plot moe burgers :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 145-155 Plot components ~~~~~~~~~~~~~~~ if not isinstance(model.regress_models[0].transformer["outputs"], KPCA): plt.subplot(121) plt.plot(model.regress_models[0].transformer["outputs"].components) plt.title("1st local model") plt.subplot(122) plt.plot(model.regress_models[1].transformer["outputs"].components) plt.title("2nd local model") plt.show() .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 3.673 seconds) .. _sphx_glr_download_examples_mlearning_dimension_reduction_plot_moe_burgers.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_moe_burgers.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_moe_burgers.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_