📚 The CoCalc Library - books, templates and other resources
License: OTHER
"""1Tutorial Diagrams2-----------------34This script plots the flow-charts used in the scikit-learn tutorials.5"""67import numpy as np8import pylab as pl9from matplotlib.patches import Circle, Rectangle, Polygon, Arrow, FancyArrow1011def create_base(box_bg = '#CCCCCC',12arrow1 = '#88CCFF',13arrow2 = '#88FF88',14supervised=True):15fig = pl.figure(figsize=(9, 6), facecolor='w')16ax = pl.axes((0, 0, 1, 1),17xticks=[], yticks=[], frameon=False)18ax.set_xlim(0, 9)19ax.set_ylim(0, 6)2021patches = [Rectangle((0.3, 3.6), 1.5, 1.8, zorder=1, fc=box_bg),22Rectangle((0.5, 3.8), 1.5, 1.8, zorder=2, fc=box_bg),23Rectangle((0.7, 4.0), 1.5, 1.8, zorder=3, fc=box_bg),2425Rectangle((2.9, 3.6), 0.2, 1.8, fc=box_bg),26Rectangle((3.1, 3.8), 0.2, 1.8, fc=box_bg),27Rectangle((3.3, 4.0), 0.2, 1.8, fc=box_bg),2829Rectangle((0.3, 0.2), 1.5, 1.8, fc=box_bg),3031Rectangle((2.9, 0.2), 0.2, 1.8, fc=box_bg),3233Circle((5.5, 3.5), 1.0, fc=box_bg),3435Polygon([[5.5, 1.7],36[6.1, 1.1],37[5.5, 0.5],38[4.9, 1.1]], fc=box_bg),3940FancyArrow(2.3, 4.6, 0.35, 0, fc=arrow1,41width=0.25, head_width=0.5, head_length=0.2),4243FancyArrow(3.75, 4.2, 0.5, -0.2, fc=arrow1,44width=0.25, head_width=0.5, head_length=0.2),4546FancyArrow(5.5, 2.4, 0, -0.4, fc=arrow1,47width=0.25, head_width=0.5, head_length=0.2),4849FancyArrow(2.0, 1.1, 0.5, 0, fc=arrow2,50width=0.25, head_width=0.5, head_length=0.2),5152FancyArrow(3.3, 1.1, 1.3, 0, fc=arrow2,53width=0.25, head_width=0.5, head_length=0.2),5455FancyArrow(6.2, 1.1, 0.8, 0, fc=arrow2,56width=0.25, head_width=0.5, head_length=0.2)]5758if supervised:59patches += [Rectangle((0.3, 2.4), 1.5, 0.5, zorder=1, fc=box_bg),60Rectangle((0.5, 2.6), 1.5, 0.5, zorder=2, fc=box_bg),61Rectangle((0.7, 2.8), 1.5, 0.5, zorder=3, fc=box_bg),62FancyArrow(2.3, 2.9, 2.0, 0, fc=arrow1,63width=0.25, head_width=0.5, head_length=0.2),64Rectangle((7.3, 0.85), 1.5, 0.5, fc=box_bg)]65else:66patches += [Rectangle((7.3, 0.2), 1.5, 1.8, fc=box_bg)]6768for p in patches:69ax.add_patch(p)7071pl.text(1.45, 4.9, "Training\nText,\nDocuments,\nImages,\netc.",72ha='center', va='center', fontsize=14)7374pl.text(3.6, 4.9, "Feature\nVectors",75ha='left', va='center', fontsize=14)7677pl.text(5.5, 3.5, "Machine\nLearning\nAlgorithm",78ha='center', va='center', fontsize=14)7980pl.text(1.05, 1.1, "New Text,\nDocument,\nImage,\netc.",81ha='center', va='center', fontsize=14)8283pl.text(3.3, 1.7, "Feature\nVector",84ha='left', va='center', fontsize=14)8586pl.text(5.5, 1.1, "Predictive\nModel",87ha='center', va='center', fontsize=12)8889if supervised:90pl.text(1.45, 3.05, "Labels",91ha='center', va='center', fontsize=14)9293pl.text(8.05, 1.1, "Expected\nLabel",94ha='center', va='center', fontsize=14)95pl.text(8.8, 5.8, "Supervised Learning Model",96ha='right', va='top', fontsize=18)9798else:99pl.text(8.05, 1.1,100"Likelihood\nor Cluster ID\nor Better\nRepresentation",101ha='center', va='center', fontsize=12)102pl.text(8.8, 5.8, "Unsupervised Learning Model",103ha='right', va='top', fontsize=18)104105106107def plot_supervised_chart(annotate=False):108create_base(supervised=True)109if annotate:110fontdict = dict(color='r', weight='bold', size=14)111pl.text(1.9, 4.55, 'X = vec.fit_transform(input)',112fontdict=fontdict,113rotation=20, ha='left', va='bottom')114pl.text(3.7, 3.2, 'clf.fit(X, y)',115fontdict=fontdict,116rotation=20, ha='left', va='bottom')117pl.text(1.7, 1.5, 'X_new = vec.transform(input)',118fontdict=fontdict,119rotation=20, ha='left', va='bottom')120pl.text(6.1, 1.5, 'y_new = clf.predict(X_new)',121fontdict=fontdict,122rotation=20, ha='left', va='bottom')123124def plot_unsupervised_chart():125create_base(supervised=False)126127128if __name__ == '__main__':129plot_supervised_chart(False)130plot_supervised_chart(True)131plot_unsupervised_chart()132pl.show()133134135136137