text: # -*- coding: utf-8 -*-
  # Author: XuMing <xuming624@qq.com>
  # Brief:
  import numpy as np
  import matplotlib.pyplot as plt
  import matplotlib.gridspec as gridspec
  import itertools
  from sklearn.linear_model import LogisticRegression
  from sklearn.neighbors import KNeighborsClassifier
  from sklearn.naive_bayes import GaussianNB
  from sklearn.svm import SVC
  from sklearn.ensemble import RandomForestClassifier
  from sklearn.model_selection import cross_val_score
  from mlxtend.classifier import EnsembleVoteClassifier, StackingClassifier
  from mlxtend.data import iris_data
  from mlxtend.plotting import plot_decision_regions
  
  # Loading some example data
  X, y = iris_data()
  X = X[:, [0, 2]]
  
  clf1 = KNeighborsClassifier(n_neighbors=1)
  clf2 = RandomForestClassifier(random_state=1)
  clf3 = GaussianNB()
  lr = LogisticRegression()
  sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],
                            use_probas=True,
                            average_probas=False,
                            meta_classifier=lr)
  
  print('3-fold cross validation:\n')
  
  # Plotting Decision Regions
  gs = gridspec.GridSpec(2, 2)
  fig = plt.figure(figsize=(10, 8))
  
  for clf, lab, grd in zip([clf1, clf2, clf3, sclf],
                             ['KNN',
                              'Random Forest',
                              'Naive Bayes',
                              'StackingClassifier'],
                             itertools.product([0, 1], repeat=2)):
      clf.fit(X, y)
      ax = plt.subplot(gs[grd[0], grd[1]])
      fig = plot_decision_regions(X=X, y=y, clf=clf, legend=2)
      plt.title(lab)
  
      scores = cross_val_score(clf, X, y, cv=3, scoring='accuracy')
      print("Accuracy: %0.2f (+/- %0.2f) [%s]"
            % (scores.mean(), scores.std(), lab))
      plt.savefig('2.png')
  plt.show()
  
  