Spaces:
Runtime error
Runtime error
| """ | |
| ========================================================= | |
| Gradio Demo to 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. | |
| Created by Syed Affan <saffand03@gamil.com> | |
| """ | |
| 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 make_plot(alpha,max_iter,Standardize): | |
| # import some data to play with | |
| iris = datasets.load_iris() | |
| fig = plt.figure() | |
| # 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 | |
| if Standardize: | |
| mean = X.mean(axis=0) | |
| std = X.std(axis=0) | |
| X = (X - mean) / std | |
| clf = SGDClassifier(alpha=alpha, max_iter=max_iter).fit(X, y) | |
| accuracy = clf.score(X,y) | |
| acc = f'## The Accuracy on the entire dataset: {accuracy}' | |
| #fig,ax = subplots() | |
| ax = plt.gca() | |
| DecisionBoundaryDisplay.from_estimator( | |
| clf, | |
| X, | |
| cmap=matplotlib.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() | |
| return fig,acc | |
| demo = gr.Interface( | |
| title = 'Plot multi-class SGD on the iris dataset', | |
| fn = make_plot, | |
| inputs = [gr.Slider(0.0001,5,step = 0.001,value = 0.001), | |
| gr.Slider(1,1000,step=10,value=100), | |
| gr.Checkbox(value=True)], | |
| outputs = [gr.Plot(),gr.Markdown()] | |
| ).launch() |