Skip to content

Commit 9902b7c

Browse files
committed
Pushing the docs to dev/ for branch: main, commit 0248dabaa75dd82741ca2ee0c0521df576e0d6c6
1 parent 9982b48 commit 9902b7c

File tree

1,253 files changed

+4410
-4582
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,253 files changed

+4410
-4582
lines changed
Binary file not shown.

dev/_downloads/22c1b876aa7bf8b912208cbfed5299c7/plot_gmm_covariances.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ def make_ellipses(gmm, ax):
5959
angle = 180 * angle / np.pi # convert to degrees
6060
v = 2.0 * np.sqrt(2.0) * np.sqrt(v)
6161
ell = mpl.patches.Ellipse(
62-
gmm.means_[n, :2], v[0], v[1], 180 + angle, color=color
62+
gmm.means_[n, :2], v[0], v[1], angle=180 + angle, color=color
6363
)
6464
ell.set_clip_box(ax.bbox)
6565
ell.set_alpha(0.5)

dev/_downloads/28df2114703b91f224d70205e9b75a7d/plot_concentration_prior.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
},
2727
"outputs": [],
2828
"source": [
29-
"# Author: Thierry Guillemot <[email protected]>\n# License: BSD 3 clause\n\nimport numpy as np\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\nimport matplotlib.gridspec as gridspec\n\nfrom sklearn.mixture import BayesianGaussianMixture\n\n\ndef plot_ellipses(ax, weights, means, covars):\n for n in range(means.shape[0]):\n eig_vals, eig_vecs = np.linalg.eigh(covars[n])\n unit_eig_vec = eig_vecs[0] / np.linalg.norm(eig_vecs[0])\n angle = np.arctan2(unit_eig_vec[1], unit_eig_vec[0])\n # Ellipse needs degrees\n angle = 180 * angle / np.pi\n # eigenvector normalization\n eig_vals = 2 * np.sqrt(2) * np.sqrt(eig_vals)\n ell = mpl.patches.Ellipse(\n means[n], eig_vals[0], eig_vals[1], 180 + angle, edgecolor=\"black\"\n )\n ell.set_clip_box(ax.bbox)\n ell.set_alpha(weights[n])\n ell.set_facecolor(\"#56B4E9\")\n ax.add_artist(ell)\n\n\ndef plot_results(ax1, ax2, estimator, X, y, title, plot_title=False):\n ax1.set_title(title)\n ax1.scatter(X[:, 0], X[:, 1], s=5, marker=\"o\", color=colors[y], alpha=0.8)\n ax1.set_xlim(-2.0, 2.0)\n ax1.set_ylim(-3.0, 3.0)\n ax1.set_xticks(())\n ax1.set_yticks(())\n plot_ellipses(ax1, estimator.weights_, estimator.means_, estimator.covariances_)\n\n ax2.get_xaxis().set_tick_params(direction=\"out\")\n ax2.yaxis.grid(True, alpha=0.7)\n for k, w in enumerate(estimator.weights_):\n ax2.bar(\n k,\n w,\n width=0.9,\n color=\"#56B4E9\",\n zorder=3,\n align=\"center\",\n edgecolor=\"black\",\n )\n ax2.text(k, w + 0.007, \"%.1f%%\" % (w * 100.0), horizontalalignment=\"center\")\n ax2.set_xlim(-0.6, 2 * n_components - 0.4)\n ax2.set_ylim(0.0, 1.1)\n ax2.tick_params(axis=\"y\", which=\"both\", left=False, right=False, labelleft=False)\n ax2.tick_params(axis=\"x\", which=\"both\", top=False)\n\n if plot_title:\n ax1.set_ylabel(\"Estimated Mixtures\")\n ax2.set_ylabel(\"Weight of each component\")\n\n\n# Parameters of the dataset\nrandom_state, n_components, n_features = 2, 3, 2\ncolors = np.array([\"#0072B2\", \"#F0E442\", \"#D55E00\"])\n\ncovars = np.array(\n [[[0.7, 0.0], [0.0, 0.1]], [[0.5, 0.0], [0.0, 0.1]], [[0.5, 0.0], [0.0, 0.1]]]\n)\nsamples = np.array([200, 500, 200])\nmeans = np.array([[0.0, -0.70], [0.0, 0.0], [0.0, 0.70]])\n\n# mean_precision_prior= 0.8 to minimize the influence of the prior\nestimators = [\n (\n \"Finite mixture with a Dirichlet distribution\\nprior and \" r\"$\\gamma_0=$\",\n BayesianGaussianMixture(\n weight_concentration_prior_type=\"dirichlet_distribution\",\n n_components=2 * n_components,\n reg_covar=0,\n init_params=\"random\",\n max_iter=1500,\n mean_precision_prior=0.8,\n random_state=random_state,\n ),\n [0.001, 1, 1000],\n ),\n (\n \"Infinite mixture with a Dirichlet process\\n prior and\" r\"$\\gamma_0=$\",\n BayesianGaussianMixture(\n weight_concentration_prior_type=\"dirichlet_process\",\n n_components=2 * n_components,\n reg_covar=0,\n init_params=\"random\",\n max_iter=1500,\n mean_precision_prior=0.8,\n random_state=random_state,\n ),\n [1, 1000, 100000],\n ),\n]\n\n# Generate data\nrng = np.random.RandomState(random_state)\nX = np.vstack(\n [\n rng.multivariate_normal(means[j], covars[j], samples[j])\n for j in range(n_components)\n ]\n)\ny = np.concatenate([np.full(samples[j], j, dtype=int) for j in range(n_components)])\n\n# Plot results in two different figures\nfor title, estimator, concentrations_prior in estimators:\n plt.figure(figsize=(4.7 * 3, 8))\n plt.subplots_adjust(\n bottom=0.04, top=0.90, hspace=0.05, wspace=0.05, left=0.03, right=0.99\n )\n\n gs = gridspec.GridSpec(3, len(concentrations_prior))\n for k, concentration in enumerate(concentrations_prior):\n estimator.weight_concentration_prior = concentration\n estimator.fit(X)\n plot_results(\n plt.subplot(gs[0:2, k]),\n plt.subplot(gs[2, k]),\n estimator,\n X,\n y,\n r\"%s$%.1e$\" % (title, concentration),\n plot_title=k == 0,\n )\n\nplt.show()"
29+
"# Author: Thierry Guillemot <[email protected]>\n# License: BSD 3 clause\n\nimport numpy as np\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\nimport matplotlib.gridspec as gridspec\n\nfrom sklearn.mixture import BayesianGaussianMixture\n\n\ndef plot_ellipses(ax, weights, means, covars):\n for n in range(means.shape[0]):\n eig_vals, eig_vecs = np.linalg.eigh(covars[n])\n unit_eig_vec = eig_vecs[0] / np.linalg.norm(eig_vecs[0])\n angle = np.arctan2(unit_eig_vec[1], unit_eig_vec[0])\n # Ellipse needs degrees\n angle = 180 * angle / np.pi\n # eigenvector normalization\n eig_vals = 2 * np.sqrt(2) * np.sqrt(eig_vals)\n ell = mpl.patches.Ellipse(\n means[n], eig_vals[0], eig_vals[1], angle=180 + angle, edgecolor=\"black\"\n )\n ell.set_clip_box(ax.bbox)\n ell.set_alpha(weights[n])\n ell.set_facecolor(\"#56B4E9\")\n ax.add_artist(ell)\n\n\ndef plot_results(ax1, ax2, estimator, X, y, title, plot_title=False):\n ax1.set_title(title)\n ax1.scatter(X[:, 0], X[:, 1], s=5, marker=\"o\", color=colors[y], alpha=0.8)\n ax1.set_xlim(-2.0, 2.0)\n ax1.set_ylim(-3.0, 3.0)\n ax1.set_xticks(())\n ax1.set_yticks(())\n plot_ellipses(ax1, estimator.weights_, estimator.means_, estimator.covariances_)\n\n ax2.get_xaxis().set_tick_params(direction=\"out\")\n ax2.yaxis.grid(True, alpha=0.7)\n for k, w in enumerate(estimator.weights_):\n ax2.bar(\n k,\n w,\n width=0.9,\n color=\"#56B4E9\",\n zorder=3,\n align=\"center\",\n edgecolor=\"black\",\n )\n ax2.text(k, w + 0.007, \"%.1f%%\" % (w * 100.0), horizontalalignment=\"center\")\n ax2.set_xlim(-0.6, 2 * n_components - 0.4)\n ax2.set_ylim(0.0, 1.1)\n ax2.tick_params(axis=\"y\", which=\"both\", left=False, right=False, labelleft=False)\n ax2.tick_params(axis=\"x\", which=\"both\", top=False)\n\n if plot_title:\n ax1.set_ylabel(\"Estimated Mixtures\")\n ax2.set_ylabel(\"Weight of each component\")\n\n\n# Parameters of the dataset\nrandom_state, n_components, n_features = 2, 3, 2\ncolors = np.array([\"#0072B2\", \"#F0E442\", \"#D55E00\"])\n\ncovars = np.array(\n [[[0.7, 0.0], [0.0, 0.1]], [[0.5, 0.0], [0.0, 0.1]], [[0.5, 0.0], [0.0, 0.1]]]\n)\nsamples = np.array([200, 500, 200])\nmeans = np.array([[0.0, -0.70], [0.0, 0.0], [0.0, 0.70]])\n\n# mean_precision_prior= 0.8 to minimize the influence of the prior\nestimators = [\n (\n \"Finite mixture with a Dirichlet distribution\\nprior and \" r\"$\\gamma_0=$\",\n BayesianGaussianMixture(\n weight_concentration_prior_type=\"dirichlet_distribution\",\n n_components=2 * n_components,\n reg_covar=0,\n init_params=\"random\",\n max_iter=1500,\n mean_precision_prior=0.8,\n random_state=random_state,\n ),\n [0.001, 1, 1000],\n ),\n (\n \"Infinite mixture with a Dirichlet process\\n prior and\" r\"$\\gamma_0=$\",\n BayesianGaussianMixture(\n weight_concentration_prior_type=\"dirichlet_process\",\n n_components=2 * n_components,\n reg_covar=0,\n init_params=\"random\",\n max_iter=1500,\n mean_precision_prior=0.8,\n random_state=random_state,\n ),\n [1, 1000, 100000],\n ),\n]\n\n# Generate data\nrng = np.random.RandomState(random_state)\nX = np.vstack(\n [\n rng.multivariate_normal(means[j], covars[j], samples[j])\n for j in range(n_components)\n ]\n)\ny = np.concatenate([np.full(samples[j], j, dtype=int) for j in range(n_components)])\n\n# Plot results in two different figures\nfor title, estimator, concentrations_prior in estimators:\n plt.figure(figsize=(4.7 * 3, 8))\n plt.subplots_adjust(\n bottom=0.04, top=0.90, hspace=0.05, wspace=0.05, left=0.03, right=0.99\n )\n\n gs = gridspec.GridSpec(3, len(concentrations_prior))\n for k, concentration in enumerate(concentrations_prior):\n estimator.weight_concentration_prior = concentration\n estimator.fit(X)\n plot_results(\n plt.subplot(gs[0:2, k]),\n plt.subplot(gs[2, k]),\n estimator,\n X,\n y,\n r\"%s$%.1e$\" % (title, concentration),\n plot_title=k == 0,\n )\n\nplt.show()"
3030
]
3131
}
3232
],

dev/_downloads/2d0762e90c243d288bfdebfc1ddb009e/plot_gmm_sin.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def plot_results(X, Y, means, covariances, index, title):
6767
# Plot an ellipse to show the Gaussian component
6868
angle = np.arctan(u[1] / u[0])
6969
angle = 180.0 * angle / np.pi # convert to degrees
70-
ell = mpl.patches.Ellipse(mean, v[0], v[1], 180.0 + angle, color=color)
70+
ell = mpl.patches.Ellipse(mean, v[0], v[1], angle=180.0 + angle, color=color)
7171
ell.set_clip_box(splot.bbox)
7272
ell.set_alpha(0.5)
7373
splot.add_artist(ell)

dev/_downloads/471829dadf19abf3dd2b87b08c9ffc92/plot_gmm_covariances.ipynb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
},
2727
"outputs": [],
2828
"source": [
29-
"# Author: Ron Weiss <[email protected]>, Gael Varoquaux\n# Modified by Thierry Guillemot <[email protected]>\n# License: BSD 3 clause\n\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\n\nimport numpy as np\n\nfrom sklearn import datasets\nfrom sklearn.mixture import GaussianMixture\nfrom sklearn.model_selection import StratifiedKFold\n\ncolors = [\"navy\", \"turquoise\", \"darkorange\"]\n\n\ndef make_ellipses(gmm, ax):\n for n, color in enumerate(colors):\n if gmm.covariance_type == \"full\":\n covariances = gmm.covariances_[n][:2, :2]\n elif gmm.covariance_type == \"tied\":\n covariances = gmm.covariances_[:2, :2]\n elif gmm.covariance_type == \"diag\":\n covariances = np.diag(gmm.covariances_[n][:2])\n elif gmm.covariance_type == \"spherical\":\n covariances = np.eye(gmm.means_.shape[1]) * gmm.covariances_[n]\n v, w = np.linalg.eigh(covariances)\n u = w[0] / np.linalg.norm(w[0])\n angle = np.arctan2(u[1], u[0])\n angle = 180 * angle / np.pi # convert to degrees\n v = 2.0 * np.sqrt(2.0) * np.sqrt(v)\n ell = mpl.patches.Ellipse(\n gmm.means_[n, :2], v[0], v[1], 180 + angle, color=color\n )\n ell.set_clip_box(ax.bbox)\n ell.set_alpha(0.5)\n ax.add_artist(ell)\n ax.set_aspect(\"equal\", \"datalim\")\n\n\niris = datasets.load_iris()\n\n# Break up the dataset into non-overlapping training (75%) and testing\n# (25%) sets.\nskf = StratifiedKFold(n_splits=4)\n# Only take the first fold.\ntrain_index, test_index = next(iter(skf.split(iris.data, iris.target)))\n\n\nX_train = iris.data[train_index]\ny_train = iris.target[train_index]\nX_test = iris.data[test_index]\ny_test = iris.target[test_index]\n\nn_classes = len(np.unique(y_train))\n\n# Try GMMs using different types of covariances.\nestimators = {\n cov_type: GaussianMixture(\n n_components=n_classes, covariance_type=cov_type, max_iter=20, random_state=0\n )\n for cov_type in [\"spherical\", \"diag\", \"tied\", \"full\"]\n}\n\nn_estimators = len(estimators)\n\nplt.figure(figsize=(3 * n_estimators // 2, 6))\nplt.subplots_adjust(\n bottom=0.01, top=0.95, hspace=0.15, wspace=0.05, left=0.01, right=0.99\n)\n\n\nfor index, (name, estimator) in enumerate(estimators.items()):\n # Since we have class labels for the training data, we can\n # initialize the GMM parameters in a supervised manner.\n estimator.means_init = np.array(\n [X_train[y_train == i].mean(axis=0) for i in range(n_classes)]\n )\n\n # Train the other parameters using the EM algorithm.\n estimator.fit(X_train)\n\n h = plt.subplot(2, n_estimators // 2, index + 1)\n make_ellipses(estimator, h)\n\n for n, color in enumerate(colors):\n data = iris.data[iris.target == n]\n plt.scatter(\n data[:, 0], data[:, 1], s=0.8, color=color, label=iris.target_names[n]\n )\n # Plot the test data with crosses\n for n, color in enumerate(colors):\n data = X_test[y_test == n]\n plt.scatter(data[:, 0], data[:, 1], marker=\"x\", color=color)\n\n y_train_pred = estimator.predict(X_train)\n train_accuracy = np.mean(y_train_pred.ravel() == y_train.ravel()) * 100\n plt.text(0.05, 0.9, \"Train accuracy: %.1f\" % train_accuracy, transform=h.transAxes)\n\n y_test_pred = estimator.predict(X_test)\n test_accuracy = np.mean(y_test_pred.ravel() == y_test.ravel()) * 100\n plt.text(0.05, 0.8, \"Test accuracy: %.1f\" % test_accuracy, transform=h.transAxes)\n\n plt.xticks(())\n plt.yticks(())\n plt.title(name)\n\nplt.legend(scatterpoints=1, loc=\"lower right\", prop=dict(size=12))\n\n\nplt.show()"
29+
"# Author: Ron Weiss <[email protected]>, Gael Varoquaux\n# Modified by Thierry Guillemot <[email protected]>\n# License: BSD 3 clause\n\nimport matplotlib as mpl\nimport matplotlib.pyplot as plt\n\nimport numpy as np\n\nfrom sklearn import datasets\nfrom sklearn.mixture import GaussianMixture\nfrom sklearn.model_selection import StratifiedKFold\n\ncolors = [\"navy\", \"turquoise\", \"darkorange\"]\n\n\ndef make_ellipses(gmm, ax):\n for n, color in enumerate(colors):\n if gmm.covariance_type == \"full\":\n covariances = gmm.covariances_[n][:2, :2]\n elif gmm.covariance_type == \"tied\":\n covariances = gmm.covariances_[:2, :2]\n elif gmm.covariance_type == \"diag\":\n covariances = np.diag(gmm.covariances_[n][:2])\n elif gmm.covariance_type == \"spherical\":\n covariances = np.eye(gmm.means_.shape[1]) * gmm.covariances_[n]\n v, w = np.linalg.eigh(covariances)\n u = w[0] / np.linalg.norm(w[0])\n angle = np.arctan2(u[1], u[0])\n angle = 180 * angle / np.pi # convert to degrees\n v = 2.0 * np.sqrt(2.0) * np.sqrt(v)\n ell = mpl.patches.Ellipse(\n gmm.means_[n, :2], v[0], v[1], angle=180 + angle, color=color\n )\n ell.set_clip_box(ax.bbox)\n ell.set_alpha(0.5)\n ax.add_artist(ell)\n ax.set_aspect(\"equal\", \"datalim\")\n\n\niris = datasets.load_iris()\n\n# Break up the dataset into non-overlapping training (75%) and testing\n# (25%) sets.\nskf = StratifiedKFold(n_splits=4)\n# Only take the first fold.\ntrain_index, test_index = next(iter(skf.split(iris.data, iris.target)))\n\n\nX_train = iris.data[train_index]\ny_train = iris.target[train_index]\nX_test = iris.data[test_index]\ny_test = iris.target[test_index]\n\nn_classes = len(np.unique(y_train))\n\n# Try GMMs using different types of covariances.\nestimators = {\n cov_type: GaussianMixture(\n n_components=n_classes, covariance_type=cov_type, max_iter=20, random_state=0\n )\n for cov_type in [\"spherical\", \"diag\", \"tied\", \"full\"]\n}\n\nn_estimators = len(estimators)\n\nplt.figure(figsize=(3 * n_estimators // 2, 6))\nplt.subplots_adjust(\n bottom=0.01, top=0.95, hspace=0.15, wspace=0.05, left=0.01, right=0.99\n)\n\n\nfor index, (name, estimator) in enumerate(estimators.items()):\n # Since we have class labels for the training data, we can\n # initialize the GMM parameters in a supervised manner.\n estimator.means_init = np.array(\n [X_train[y_train == i].mean(axis=0) for i in range(n_classes)]\n )\n\n # Train the other parameters using the EM algorithm.\n estimator.fit(X_train)\n\n h = plt.subplot(2, n_estimators // 2, index + 1)\n make_ellipses(estimator, h)\n\n for n, color in enumerate(colors):\n data = iris.data[iris.target == n]\n plt.scatter(\n data[:, 0], data[:, 1], s=0.8, color=color, label=iris.target_names[n]\n )\n # Plot the test data with crosses\n for n, color in enumerate(colors):\n data = X_test[y_test == n]\n plt.scatter(data[:, 0], data[:, 1], marker=\"x\", color=color)\n\n y_train_pred = estimator.predict(X_train)\n train_accuracy = np.mean(y_train_pred.ravel() == y_train.ravel()) * 100\n plt.text(0.05, 0.9, \"Train accuracy: %.1f\" % train_accuracy, transform=h.transAxes)\n\n y_test_pred = estimator.predict(X_test)\n test_accuracy = np.mean(y_test_pred.ravel() == y_test.ravel()) * 100\n plt.text(0.05, 0.8, \"Test accuracy: %.1f\" % test_accuracy, transform=h.transAxes)\n\n plt.xticks(())\n plt.yticks(())\n plt.title(name)\n\nplt.legend(scatterpoints=1, loc=\"lower right\", prop=dict(size=12))\n\n\nplt.show()"
3030
]
3131
}
3232
],
Binary file not shown.

0 commit comments

Comments
 (0)