Spaces:
Runtime error
Runtime error
| """ | |
| ======================================== | |
| Plot multi-class SGD on the iris dataset | |
| ======================================== | |
| Plot decision surface of multi-class SGD on iris dataset. | |
| The hyperplanes corresponding to the three one-versus-all (OVA) classifiers | |
| are represented by the dashed lines. | |
| """ | |
| import gradio as gr | |
| import numpy as np | |
| import matplotlib.pyplot as plt | |
| from sklearn import datasets | |
| from sklearn.linear_model import SGDClassifier | |
| from sklearn.inspection import DecisionBoundaryDisplay | |
| import matplotlib.cm | |
| def plot(alpha): | |
| # import some data to play with | |
| iris = datasets.load_iris() | |
| # we only take the first two features. We could | |
| # avoid this ugly slicing by using a two-dim dataset | |
| X = iris.data[:, :2] | |
| y = iris.target | |
| colors = "bry" | |
| # shuffle | |
| idx = np.arange(X.shape[0]) | |
| np.random.seed(13) | |
| np.random.shuffle(idx) | |
| X = X[idx] | |
| y = y[idx] | |
| # standardize | |
| mean = X.mean(axis=0) | |
| std = X.std(axis=0) | |
| X = (X - mean) / std | |
| clf = SGDClassifier(alpha=alpha, max_iter=100).fit(X, y) | |
| #ax = plt.gca() | |
| DecisionBoundaryDisplay.from_estimator( | |
| clf, | |
| X, | |
| cmap=plt.cm.Paired, | |
| ax=ax, | |
| response_method="predict", | |
| xlabel=iris.feature_names[0], | |
| ylabel=iris.feature_names[1], | |
| ) | |
| plt.axis("tight") | |
| # Plot also the training points | |
| for i, color in zip(clf.classes_, colors): | |
| idx = np.where(y == i) | |
| plt.scatter( | |
| X[idx, 0], | |
| X[idx, 1], | |
| c=color, | |
| label=iris.target_names[i], | |
| cmap=matplotlib.cm.Paired, | |
| edgecolor="black", | |
| s=20, | |
| ) | |
| plt.title("Decision surface of multi-class SGD") | |
| plt.axis("tight") | |
| # Plot the three one-against-all classifiers | |
| xmin, xmax = plt.xlim() | |
| ymin, ymax = plt.ylim() | |
| coef = clf.coef_ | |
| intercept = clf.intercept_ | |
| def plot_hyperplane(c, color): | |
| def line(x0): | |
| return (-(x0 * coef[c, 0]) - intercept[c]) / coef[c, 1] | |
| plt.plot([xmin, xmax], [line(xmin), line(xmax)], ls="--", color=color) | |
| for i, color in zip(clf.classes_, colors): | |
| plot_hyperplane(i, color) | |
| plt.legend() | |
| #plt.show() | |
| return plt | |
| #pl = plot(0) | |
| #pl.show() | |
| with gr.Blocks() as demo: | |
| alpha = gr.Slider(minimum=0.0001, maximum=10, step=0.01, value=0.0001, label="Alpha Value") | |
| with gr.Row(): | |
| plt = gr.Plot() | |
| alpha.change(fn=plot, inputs=[alpha],outputs=[plt]) | |
| demo.launch() |