From e3a93115e2046a2e2c7cf631d86821fe90798b9b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=9C=E4=BD=B3=E7=92=90?= <13190718+du-jialulu@user.noreply.gitee.com> Date: Sun, 16 Jul 2023 08:27:13 +0000 Subject: [PATCH] =?UTF-8?q?=E8=AE=B8=E8=AF=97=E5=8D=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 杜佳璐 <13190718+du-jialulu@user.noreply.gitee.com> --- .../第5组-杜佳璐/第5组实战/cluster(1).ipynb | 959 ++++++++++++++++++ 1 file changed, 959 insertions(+) create mode 100644 2、幸福感数据分析/第5组-杜佳璐/第5组实战/cluster(1).ipynb diff --git a/2、幸福感数据分析/第5组-杜佳璐/第5组实战/cluster(1).ipynb b/2、幸福感数据分析/第5组-杜佳璐/第5组实战/cluster(1).ipynb new file mode 100644 index 0000000..d8fe320 --- /dev/null +++ b/2、幸福感数据分析/第5组-杜佳璐/第5组实战/cluster(1).ipynb @@ -0,0 +1,959 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## 聚类\n" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "d:\\Anaconda\\lib\\site-packages\\sklearn\\ensemble\\weight_boosting.py:29: DeprecationWarning: numpy.core.umath_tests is an internal NumPy module and should not be imported. It will be removed in a future NumPy release.\n", + " from numpy.core.umath_tests import inner1d\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "from matplotlib.colors import ListedColormap\n", + "import seaborn as sns\n", + "from sklearn.datasets import make_blobs\n", + "from sklearn.cluster import KMeans,DBSCAN,AgglomerativeClustering\n", + "from sklearn.metrics import silhouette_samples,accuracy_score\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn.preprocessing import StandardScaler,LabelEncoder\n", + "from sklearn.ensemble import RandomForestClassifier,BaggingClassifier,AdaBoostClassifier\n" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "X,y = make_blobs(n_samples=150,n_features=2,centers=3,cluster_std=0.5,shuffle=True,random_state=0)\n", + "plt.scatter(X[:,0],X[:,1],c='white',marker='o',edgecolor='black',s=50)\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([1, 0, 0, 0, 1, 0, 0, 1, 2, 0, 1, 2, 2, 0, 0, 2, 2, 1, 2, 1, 0, 1,\n", + " 0, 0, 2, 1, 1, 0, 2, 1, 2, 2, 2, 2, 0, 1, 1, 1, 0, 0, 2, 2, 0, 1,\n", + " 1, 1, 2, 0, 2, 0, 1, 0, 0, 1, 1, 2, 0, 1, 2, 0, 2, 2, 2, 2, 0, 2,\n", + " 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 2, 2, 0, 1, 1, 0, 0, 1, 1, 1, 2,\n", + " 2, 1, 1, 0, 1, 0, 1, 0, 2, 2, 1, 1, 1, 1, 2, 1, 1, 0, 2, 0, 0, 0,\n", + " 2, 0, 1, 2, 0, 2, 0, 0, 2, 2, 0, 1, 0, 0, 1, 1, 2, 1, 2, 2, 2, 2,\n", + " 1, 2, 2, 2, 0, 2, 1, 2, 0, 0, 1, 1, 2, 2, 2, 2, 1, 1])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "km = KMeans(n_clusters=3,init='random',n_init=10,max_iter=300,tol=1e-04,random_state=0)\n", + "y_km = km.fit_predict(X)\n", + "y_km" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[y_km==0,0],X[y_km==0,1],s=50,c='lightgreen',marker='s',edgecolor='black',label='cluster 1')\n", + "plt.scatter(X[y_km==1,0],X[y_km==1,1],s=50,c='orange',marker='o',edgecolor='black',label='cluster 2')\n", + "plt.scatter(X[y_km==2,0],X[y_km==2,1],s=50,c='lightblue',marker='v',edgecolor='black',label='cluster 3')\n", + "plt.scatter(km.cluster_centers_[:,0],km.cluster_centers_[:,1],s=250,marker='*',c='red',edgecolor='black',label='centroids')\n", + "plt.legend()\n", + "plt.grid()\n", + "plt.show()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## 寻找最佳聚类中心\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "distoritions = []\n", + "for i in range(1,11):\n", + " km = KMeans(n_clusters=i,init='k-means++',n_init=10,max_iter=300,random_state=0)\n", + " km.fit(X)\n", + " distoritions.append(km.inertia_)\n", + "plt.plot(range(1,11),distoritions,marker='o')\n", + "plt.xlabel('Number of clusters')\n", + "plt.ylabel('Distortion')\n", + "plt.show()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## DBSCAN\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.datasets import make_moons\n", + "X,y = make_moons(n_samples=200,noise=0.05,random_state=0)\n", + "plt.scatter(X[:,0],X[:,1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "No handles with labels found to put in legend.\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "### 使用kmeans,k=2和DBSCAN聚类后可视化\n", + "f,(ax1,ax2,ax3) = plt.subplots(1,3,figsize=(15,5))\n", + "km = KMeans(n_clusters=2,random_state=0)\n", + "y_km = km.fit_predict(X)\n", + "ax1.scatter(X[y_km==0,0],X[y_km==0,1],c='lightblue',marker='o',s=40,label='cluster 1')\n", + "ax1.scatter(X[y_km==1,0],X[y_km==1,1],c='red',marker='s',s=40,label='cluster 2')\n", + "ax1.set_title('K-means clustering')\n", + "db = DBSCAN(eps=0.2,min_samples=5,metric='euclidean')\n", + "y_db = db.fit_predict(X)\n", + "ax2.scatter(X[y_db==0,0],X[y_db==0,1],c='lightblue',marker='o',s=40,label='cluster 1')\n", + "ax2.scatter(X[y_db==1,0],X[y_db==1,1],c='red',marker='s',s=40,label='cluster 2')\n", + "ax2.set_title('DBSCAN clustering')\n", + "plt.legend()\n", + "# 层次聚类\n", + "ac = AgglomerativeClustering(n_clusters=2,affinity='euclidean',linkage='complete')\n", + "y_ac = ac.fit_predict(X)\n", + "ax3.scatter(X[y_ac==0,0],X[y_ac==0,1],c='lightblue',marker='o',s=40,label='cluster 1')\n", + "ax3.scatter(X[y_ac==1,0],X[y_ac==1,1],c='red',marker='s',s=40,label='cluster 2')\n", + "ax3.set_title('Agglomerative clustering')\n", + "plt.legend()\n" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [ + "## 集成学习\n" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from scipy.special import comb\n", + "import math\n", + "def ensemble_error(n_classifier,error):\n", + " k_start = int(math.ceil(n_classifier/2.))\n", + " probs = [comb(n_classifier,k)*error**k*(1-error)**(n_classifier-k) for k in range(k_start,n_classifier+1)]\n", + " return sum(probs)\n", + "ensemble_error(n_classifier=11,error=0.25)\n", + "# 可视化计算0-1内不同集成错误率\n", + "error_range = np.arange(0.0,1.01,0.01)\n", + "ens_errors = [ensemble_error(n_classifier=11,error=error) for error in error_range]\n", + "plt.plot(error_range,ens_errors,label='Ensemble error',linewidth=2)\n", + "plt.plot(error_range,error_range,linestyle='--',label='Base error',linewidth=2)\n", + "plt.xlabel('Base error')\n", + "plt.ylabel('Base/Ensemble error')\n", + "plt.legend(loc='upper left')\n", + "plt.grid()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Class labelAlcoholMalic acidAshAlcalinity of ashMagnesiumTotal phenolsFlavanoidsNonflavanoid phenolsProanthocyaninsColor intensityHueOD280/OD315 of diluted winesProline
0114.231.712.4315.61272.803.060.282.295.641.043.921065
1113.201.782.1411.21002.652.760.261.284.381.053.401050
2113.162.362.6718.61012.803.240.302.815.681.033.171185
3114.371.952.5016.81133.853.490.242.187.800.863.451480
4113.242.592.8721.01182.802.690.391.824.321.042.93735
\n", + "
" + ], + "text/plain": [ + " Class label Alcohol Malic acid Ash Alcalinity of ash Magnesium \\\n", + "0 1 14.23 1.71 2.43 15.6 127 \n", + "1 1 13.20 1.78 2.14 11.2 100 \n", + "2 1 13.16 2.36 2.67 18.6 101 \n", + "3 1 14.37 1.95 2.50 16.8 113 \n", + "4 1 13.24 2.59 2.87 21.0 118 \n", + "\n", + " Total phenols Flavanoids Nonflavanoid phenols Proanthocyanins \\\n", + "0 2.80 3.06 0.28 2.29 \n", + "1 2.65 2.76 0.26 1.28 \n", + "2 2.80 3.24 0.30 2.81 \n", + "3 3.85 3.49 0.24 2.18 \n", + "4 2.80 2.69 0.39 1.82 \n", + "\n", + " Color intensity Hue OD280/OD315 of diluted wines Proline \n", + "0 5.64 1.04 3.92 1065 \n", + "1 4.38 1.05 3.40 1050 \n", + "2 5.68 1.03 3.17 1185 \n", + "3 7.80 0.86 3.45 1480 \n", + "4 4.32 1.04 2.93 735 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import pandas as pd\n", + "\n", + "df_wine = pd.read_csv('wine.data',header=None)\n", + "df_wine.columns = ['Class label', 'Alcohol', 'Malic acid', 'Ash',\n", + " 'Alcalinity of ash', 'Magnesium', 'Total phenols',\n", + " 'Flavanoids', 'Nonflavanoid phenols', 'Proanthocyanins',\n", + " 'Color intensity', 'Hue', 'OD280/OD315 of diluted wines',\n", + " 'Proline']\n", + "df_wine.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Class labelAlcoholMalic acidAshAlcalinity of ashMagnesiumTotal phenolsFlavanoidsNonflavanoid phenolsProanthocyaninsColor intensityHueOD280/OD315 of diluted winesProline
59212.370.941.3610.6881.980.570.280.421.951.051.82520
60212.331.102.2816.01012.051.090.630.413.271.251.67680
61212.641.362.0216.81002.021.410.530.625.750.981.59450
62213.671.251.9218.0942.101.790.320.733.801.232.46630
63212.371.132.1619.0873.503.100.191.874.451.222.87420
\n", + "
" + ], + "text/plain": [ + " Class label Alcohol Malic acid Ash Alcalinity of ash Magnesium \\\n", + "59 2 12.37 0.94 1.36 10.6 88 \n", + "60 2 12.33 1.10 2.28 16.0 101 \n", + "61 2 12.64 1.36 2.02 16.8 100 \n", + "62 2 13.67 1.25 1.92 18.0 94 \n", + "63 2 12.37 1.13 2.16 19.0 87 \n", + "\n", + " Total phenols Flavanoids Nonflavanoid phenols Proanthocyanins \\\n", + "59 1.98 0.57 0.28 0.42 \n", + "60 2.05 1.09 0.63 0.41 \n", + "61 2.02 1.41 0.53 0.62 \n", + "62 2.10 1.79 0.32 0.73 \n", + "63 3.50 3.10 0.19 1.87 \n", + "\n", + " Color intensity Hue OD280/OD315 of diluted wines Proline \n", + "59 1.95 1.05 1.82 520 \n", + "60 3.27 1.25 1.67 680 \n", + "61 5.75 0.98 1.59 450 \n", + "62 3.80 1.23 2.46 630 \n", + "63 4.45 1.22 2.87 420 " + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_wine = df_wine[df_wine['Class label']!=1]\n", + "X = df_wine[['Alcohol','OD280/OD315 of diluted wines']].values\n", + "y = df_wine['Class label'].values\n", + "df_wine.head()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Decision tree train/test accuracies 1.000/0.833\n" + ] + } + ], + "source": [ + "X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.2,random_state=1,stratify=y)\n", + "tree = DecisionTreeClassifier(criterion='entropy',random_state=1,max_depth=None)\n", + "bag = BaggingClassifier(base_estimator=tree,n_estimators=500,max_samples=1.0,max_features=1.0,bootstrap=True,bootstrap_features=False,n_jobs=1,random_state=1)\n", + "tree = tree.fit(X_train,y_train)\n", + "y_train_pred = tree.predict(X_train)\n", + "y_test_pred = tree.predict(X_test)\n", + "tree_train = accuracy_score(y_train,y_train_pred)\n", + "tree_test = accuracy_score(y_test,y_test_pred)\n", + "print('Decision tree train/test accuracies %.3f/%.3f'%(tree_train,tree_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Bagging train/test accuracies 1.000/0.917\n" + ] + } + ], + "source": [ + "bag = bag.fit(X_train,y_train)\n", + "y_train_pred = bag.predict(X_train)\n", + "y_test_pred = bag.predict(X_test)\n", + "bag_train = accuracy_score(y_train,y_train_pred)\n", + "bag_test = accuracy_score(y_test,y_test_pred)\n", + "print('Bagging train/test accuracies %.3f/%.3f'%(bag_train,bag_test))" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):\n", + "\n", + " # setup marker generator and color map\n", + " markers = ('s', 'x', 'o', '^', 'v')\n", + " colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')\n", + " cmap = ListedColormap(colors[:len(np.unique(y))])\n", + "\n", + " # plot the decision surface\n", + " x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", + " x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", + " xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),\n", + " np.arange(x2_min, x2_max, resolution))\n", + " Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)\n", + " Z = Z.reshape(xx1.shape)\n", + " plt.contourf(xx1, xx2, Z, alpha=0.3, cmap=cmap)\n", + " plt.xlim(xx1.min(), xx1.max())\n", + " plt.ylim(xx2.min(), xx2.max())\n", + "\n", + " for idx, cl in enumerate(np.unique(y)):\n", + " plt.scatter(x=X[y == cl, 0],\n", + " y=X[y == cl, 1],\n", + " alpha=0.8,\n", + " c=colors[idx],\n", + " marker=markers[idx],\n", + " label=cl,\n", + " edgecolor='black')\n", + "\n", + " # highlight test samples\n", + " if test_idx:\n", + " # plot all samples\n", + " X_test, y_test = X[test_idx, :], y[test_idx]\n", + " plt.scatter(X_test[:, 0],\n", + " X_test[:, 1],\n", + " c='',\n", + " edgecolor='black',\n", + " alpha=1.0,\n", + " linewidth=1,\n", + " marker='o',\n", + " s=100,\n", + " label='test set')\n", + "plot_decision_regions(X_train,y_train,classifier=tree)\n", + "plt.figure()\n", + "plot_decision_regions(X_train,y_train,classifier=bag)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Decision tree train/test accuracies 0.916/0.875\n" + ] + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## 自适应增强Adaboost\n", + "tree = DecisionTreeClassifier(criterion='entropy',random_state=1,max_depth=1)\n", + "ada = AdaBoostClassifier(base_estimator=tree,n_estimators=500,learning_rate=0.1,random_state=1)\n", + "tree = tree.fit(X_train,y_train)\n", + "y_train_pred = tree.predict(X_train)\n", + "y_test_pred = tree.predict(X_test)\n", + "tree_train = accuracy_score(y_train,y_train_pred)\n", + "tree_test = accuracy_score(y_test,y_test_pred)\n", + "print('Decision tree train/test accuracies %.3f/%.3f'%(tree_train,tree_test))\n", + "plot_decision_regions(X_train,y_train,classifier=tree)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%%\n" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Adaboost train/test accuracies 1.000/0.917\n" + ] + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD8CAYAAACMwORRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3XtwXOWZ5/HvowtGgC0LLGMjyziATcWTISTRkKSCCeUkZQ9xbJNADSmYhIwS786GykyZFAxhBjJMZWshhZPsEpI1MQuMWZIJCcawhNu4iOyZ4SIYrnJsHOLgi/BFliULy7Iuz/5xuq3uVrfU3erL0dHvU6Vyn9Onu58j20+/5z3P+77m7oiISLRUlDsAEREpPCV3EZEIUnIXEYkgJXcRkQhSchcRiSAldxGRCFJyFxGJICV3EZEIUnIXEYmgqnJ98Ixp03zemWeW6+NFRCakl3fsOOju9WMdV7bkPu/MM2lds6ZcHy8iMiHZ8uV/zOY4dcuIiESQkruISAQpuYuIRFDWyd3MKs3sP83s8TTPXWtmB8zs1djP1wsbpoiI5CKXG6p/A2wFpmV4/hfuft34QxIRkfHKquVuZnOAzwM/K244IiJSCNl2y/wQuAEYGuWYL5nZ62b2sJk1jj80ERHJ15jJ3cyWAfvd/eVRDnsMmOfuFwDPAvdneK9VZtZqZq0HurryClhERMaWTcv9U8ByM9sJ/BxYbGbrEw9w9w5374tt3gN8LN0buftad29y96b62tpxhC0iIqMZM7m7+03uPsfd5wFXAZvc/ZrEY8xsdsLmcoIbryIiUiZ5Tz9gZrcBre6+EfiWmS0HBoBDwLWFCU9ERPKRU3J39+eA52KPb0nYfxNwUyEDExGR/GmEqohIBCm5i4hEkJK7iEgEKbmLiESQkruISAQpuYuIRJCSu4hIBCm5i4hEkJK7iEgEKbmLiESQkruISAQpuYuIRJCSu4hIBCm5i4hEkJK7iEgEKbmLiERQ1sndzCrN7D/N7PE0z00xs1+Y2Q4ze8HM5hUySBERyU0uLfe/IfPaqM1Ap7ufB/wAuH28gYmISP6ySu5mNgf4PPCzDIesAO6PPX4Y+IyZ2fjDExGRfGTbcv8hcAMwlOH5BmAXgLsPAF3AGakHmdkqM2s1s9YDXV15hCsiItkYM7mb2TJgv7u/PNphafb5iB3ua929yd2b6mtrcwhTRERykU3L/VPAcjPbCfwcWGxm61OO2Q00AphZFVALHCpgnCIikoMxk7u73+Tuc9x9HnAVsMndr0k5bCPw1djjK2LHjGi5i4hIaVTl+0Izuw1odfeNwDrgn81sB0GL/aoCxSciInnIKbm7+3PAc7HHtyTsPwZcWcjAREQkfxqhKiISQUruIiIRpOQuIhJBSu4iIhGk5C4iEkFK7iIiEaTkLiISQXkPYpKJafHq1XSnmbRtWm0tm9asKUNEIlIMSu6TTHdXF61pJm1r0iydIpGi5C5501WASHgpuUvedBUgEl66oSoiEkFK7iIiEaRumUlmWm1t2m6TaVoZSyRSlNwnGd3oFJkclNwlb7oKEAmvMZO7mZ0MtABTYsc/7O63phxzLfB9YE9s113u/rPChipho6uAzFQmKuWWTcu9D1js7j1mVg1sMbPfuPvzKcf9wt2vK3yIIumFOYGqTFTKbczkHlvouie2WR370eLXUnZKoCKZZVUKaWaVZvYqsB94xt1fSHPYl8zsdTN72MwaM7zPKjNrNbPWA/oPKCJSNFkld3cfdPcLgTnARWb2oZRDHgPmufsFwLPA/RneZ627N7l7U71uuomIFE1Og5jc/TDwHLA0ZX+Hu/fFNu8BPlaQ6EREJC/ZVMvUA/3uftjMaoDPArenHDPb3dtjm8uBrQWPVLIW5huNhRA/v/aODto6O0/sr6ys5PzGtD2CJacyUSm3bKplZgP3m1klQUv/X9z9cTO7DWh1943At8xsOTAAHAKuLVbAMrao32iMn9/i7m6+Mjh4Yn97fz+zu7pCkUCj8CUqE1s21TKvAx9Js/+WhMc3ATcVNjSR0W1KaaU3dXXRum5dmaIRCReNUJWcRL3LRyQqlNwlJ+Xq8kn8Umnv6KAp1tc+rbKSTY2NLN61i/b+fpqam5Nepy8dmayU3KWk8m35J36ptHV2srCyEoCmWJ979+Agz1RUsDDliycq9xlEcqXkHkFhrtQoRMu/srKStlhSbx8aoqmri/ahISqrqwsWp8hEp+QeQVHvhkgsd5wdu4na1NzM+SH48hIJC63EJCISQWq5C5B9X3ghunwafv978OS55waBhiuvZM8vf5l90CKSkZK7ANn3hReky8edPWZJu3rdOa+/P2lf4hfO7s5OGjo6AKioqODMujpg+EslzPcZRMpByV1KalptLbsPHKA3peVuKckeUr5wEpJ0usFK4/3SUf2+RI2SuxTcWImyYeVKatJVtqS03EvpxJQGu3bR1tdHZWz/7gMHaFi5koqKCubPm6dELxOGkrsUXGKLe/GuXXTHyha3dXTQ1NzM4NAQi48fZ9NJJxXsMwvV8u4eHGQO0Bq7kuh1p6a6mrbBQb6imnmZQJTcpai6BwdpjQ04agMW1tby2oEDNHthF/OK+mRpIrlSchegxDckzdjtTkNqN0ysq2YiTOkrEnZK7gKUduDTh889lzmjzOA4Eab0FQk7JXcJrVJO6Ru/cmkfGmIGnKjmSVfFIzIRZLMS08lACzAldvzD7n5ryjFTgAcIltfrAP7C3XcWPFqZEBK7eNqHhmiL7a+srMz8ohSJN2Lj2oeGWLx6dVGuMuLvuXj1atp27uS8oaHhJ/v7g2oZXTHIBJJNy70PWOzuPWZWDWwxs9+4+/MJxzQDne5+npldRbAM318UIV6ZABKT7+LVq5OrTGKPx+paSbwRG9cGGStWCnXPQKWOEhXZrMTkQE9sszr2k1rqsAL4buzxw8BdZmax18okVqpkqaQskiyrPvfY+qkvA+cBP3b3F1IOaQB2Abj7gJl1AWcABwsYqxRBOUZmjvWZ02pr2dbRcaI7J260bh2NMBVJllVyd/dB4EIzmw48YmYfcvc3Ew5Jd9dpRKvdzFYBqwDm1tfnEa4UWjnqw8f6zE1r1tDU3Dxi4Q3gRLdOru8pMtnkNOWvux8GngOWpjy1G2gEMLMqoBY4lOb1a929yd2b6nVzSkSkaLKplqkH+t39sJnVAJ8luGGaaCPwVeA/gCuATepvl/HQLI8i45NNt8xs4P5Yv3sF8C/u/riZ3Qa0uvtGYB3wz2a2g6DFflXRIp6g1Cecm2x+J6mLZsdHs2okq0h21TKvAx9Js/+WhMfHgCsLG1q0qE+48BJ/p00Ji2a3pdTHi0xGGqE6yZWj+yOfz0x35dPe0cHi7m42NTYyrbKSWbGpegeBynfeAYKFPYo18EkkzJTcIyrbbqByJL18PjPdlU9bZ+eJuWc2NTbStHMnrZWVtA0OsnDevBPH6epIJiMl94hSN5DI5KbkLhNW/8AA7UDTzp0AtA8M0DYwQOJEwtt27aK9v5+m5uak17Z3dzN72rQR7xmVG9y6gS9K7iUS5tK+iZoIDJhBMGMdwJeBDwBvJxwzODjI7IqKEVcxDR0dkb6y0ZWbKLmXSJiT5ERIBLs7O2lKWLgDoB/YByf616t37qSmspIqVcuIKLlL6eVzpVDNcAs9rh9Ylvj6ykqaBgdpHxpidsKUw+enW4xbJOKU3CMqzN1A+VwpnFlXN2KumbadOzkzYTu+uEfioh5Nzc1sCsE5i5SakntEhbkbSESKT8ldimqswUfjUVlZGVTCpLx/4tVJpisYqqtDe2VTCGG+cpPSUHKXoiaCsQYfjcf5jY3MTrOu6uLVq0eUPkL4q38KabKcp2Sm5C4TIhHk8gU0Eap/RIpNyV1KLpvulFQT4QtIJEyU3KUktu3axWCarpjJ1FUiUkpK7lISg4ODJ6bkhWCRgNZMNztFZNyU3KWo4n3l7UNDzE7cP8pi1yIyftkss9dIMDhwFjAErHX3H6UccynwKPCH2K5fu/tthQ1VwiTXKYWbmpvT3uQsBpUBimTXch8Arnf3V8xsKvCymT3j7m0px21292VpXi8TWKYkvruzk/cS5kyPC0M3y2Tpw3cHs8zbMrlls8xeO9Aee3zEzLYCDUBqcpcIylRW2NDRUYZoJqZizLq59sm5HOmtYvXKdzALEvuaDecwtWaAVUvfHW/IEgE59bmb2TyC9VRfSPP0J83sNWAv8G13f2vc0UlkTOaukkLX3bvDkd4qHtrcAMDqle+wZsM5PLS5gS8v2pNzC36iTvkso8s6uZvZacCvgL919+6Up18Bznb3HjO7DNgAzE/zHquAVQBz6+vzDlpKL17K2D8wAATrlL62YwcGVFVVUVlZyfmjTCeQU5JYv55F/3pr2qcundnGP90+JYfIC+exO9q4Y+sXcnrNWTWdafcffq+X945Wsehr5+YVizt0HDvGdx84h+8+cA4AM6Z08cijxoaNub3nHzrf581TTmL6rJogrt7pAHy241De8Un5ZZXczayaILE/6O6/Tn0+Mdm7+xNmdreZzXD3gynHrQXWAjTNn+/jilxKKl7K2DYwwEIzKt35sBm97tTE1i0tlMf2fhQ+uJAbbkje/+KLsP2+TuBQwT4rnUwt2SNHpnLh8hu55prs3+uO//YH6Osbsf/9gSlUnjzADf9nYd5xusP11w9v33lnDWazcn6f666q5v2BKqbH4qqedjJnnAG1XdXcsC7/+KQ4tizP7rhsqmUMWAdsdfe0zS8L/kXtc3c3s4uACkCdshFWATS50w9UJ8yhHoVulkzdKOd1Hi5DNOm5w4YNyfs2bICVK3VTVQLZtNw/Bfwl8IaZvRrb9x1gLoC7/xS4AvhrMxsAeoGr3F0t8whIrVNvB2a7M9+MTSedRNvgIAvnzUuaQ12KK57YN2+GRYuChB7fBiV4CWRTLbOFYLnK0Y65C7irUEFJeKTWqTft3EmrBiDlZNqpp464eXp4wGHqvLzezwxqaoYTu1nwJwT7ldgFNEJVpGDS1Z0DbGpuhosuSjr2H27sY/ufXpH3Zy1dmvx58QSfV2KfMpNPH9nJ9C7j8IDT3zfAaV0wpXZm3vFJ+Sm5R0Sxy9ni3TO7gYb+/hP7KyoqOLOEfe3P7/s6Tc0jb+eUu2zvySeht3c4wca7Tt7rmVq0z0xN5Pm22D/xuZdY8MbD/NPtU0586eRy01jCSck9Ioo9h3lo6p2HOos+V3ummvzKqmlpj3cPEntin3e8D3zALWhhFyw6kewouUvJpbvK2NfZST8wp66O3u5+uribv2sOugb+cc1LJY0v0xfZP9zYx/Y0+xP7vDdvHk7yixbB9qe71QcuZVFR7gBk8olfZST+PAXMIZgG+N+qT+XZ6nr+rbaevq795Q43K4kJPk5VK1JOSu4iBZCp7lwFwVIu6pYRGafR6s4Heqapz13KQsk9IibNxFwVdTR1pa+WKZfR6s43P+LqmpGyUHKPiNBUsxTZJ878Gb+4u7hzy2QjtaZ9yZLgz9S687efOVL64ERQcpcySHeVsQ/oJyhp7O3vp4sD1IZ0IE2mmvaammBwUZxa7FJOSu5ScmNdZTx2Rxt3cOOIWSHLIbFs83Cnc3zn9Ryv+AbdA18EFib1ry9apNWQJDyU3EVGkTg4bM+RIY6dXMfpp2/gg+/B5s0Lk2raVfooYaJSSJEcmcHpNfck7QtzYk8tx1R55uSglrtITLqRs+0dHWzr7k5aZcodDvV+g6nTh48L61zqo90fWLIk/URnEg1K7iIx6ebnaersZDBhlSl3+PHhq+nq+wyXhXwu9dHmvJk5E44ehcsvHz52zYZzeKXzGKeVL2QpICV3CbVM0+iWixmcVnGU2ikbWbnyglDPpT7anDfusGXLcGv+hUPz6dzcQN3QH8v+O5bCyGaZvUbgAWAWMASsdfcfpRxjwI+Ay4CjwLXu/krhw5XJJF2Xwvaes1j75GmsWvpuSWKYVlnJ5/r7md3VNTzXedVaZs+aidnfA9nNpZ7a5XO40+n/4/W8/UpxJ0aLxxZP7DCc8M2C/R0dcHJvI9d/fg+d//E2b9uHixaPlE42LfcB4Hp3f8XMpgIvm9kz7t6WcMyfA/NjPx8HfhL7UyQv6boUXngB3j1az5HeoyUrOdzU2HhiCcHR5jofK5bULp89R4Y4NqWO5UWeGG20tVZTk/7qle9wy/NFDWfc0l3JhelqKUyyWWavnWDpTNz9iJltBRqAxOS+Anggtm7q82Y23cxmx14rkrN0XQrvvw9zTznA6pXv6D90FsZaazW1+2XNhnNw31r6QLOU7eAxCeTU525m84CPAC+kPNUA7ErY3h3bl5TczWwVsApgbn19bpHKpJOuS2HBaXuLltijNj/PaHPebNsG+/cHz/X0QOdvd/HQ5rOp6x6gLoR97qPdHNbgsfSyTu5mdhrwK+Bv3b079ek0LxnxT8Td1wJrAZrmzw/hPyEJk3RdCtt7zsL9UFH+I0dxfp5Ma60+9dRwK/jBB+Hjp79N3Ser2PSbgVAmydFuDoepQilMshrEZGbVBIn9QXf/dZpDdgONCdtzgL3jD08mq9QuhTvvhD/5k6DPPeg+KHeEE0e6tVaXLk1OimZBn/tH6/5Q+gCzpAVRcjNmco9VwqwDtrp7pqbNRuArFvgE0KX+dhmPdF0KH/940Oc+tSY8rctsR3/Gu3ziP58e6GZx34GyToxWqAW2S0ULouQmm26ZTwF/CbxhZq/G9n0HmAvg7j8FniAog9xBUAr5tcKHKpNNui6FBaftZdXS8k/5C7nd4Evt8hmt8kZGGuvmsFrwI2VTLbOFMRaSiVXJfLNQQcnk5s6Jf3HxpJmY4MMgijf40l2FhOUcRrs5HLbBY2GhEaoSKmufnMvze07FG4LteIvt2cf/Oyf1/W/63++jqXkIgH2dnfQDc+rqkt5jWm1t0W+ORu0G3yudH2DNhpNPlEKGscww083hifa7LhUldwkNdzjSW8Xmgx9kgORL8eNHh/j3qfX09fZwbm0w10tbZydfgZHzwaQpZyyGTKM/w5Bschns4w7Hh6p4aHPDiVLIsF6FTLT7BOWkKX8lNOIVG4tmbOXgQbj++uEEc3rNPaH7jxzWG3xPPpkcRzzOJ59Mf7xZUAr55UV7eKu7kWefTe7bDtvvXbKjlruEihmsbHiJXx5cfGLfypXwwuPB4/6hKuiIDdkfCrpn6EhZMLuvD9avL3hs249868Tj0W7wuQezLcaTom/bjm3fnvG9CinfewG/PbCQlp5/5Lv991FdExyXeKMYlOQnGiV3CRV32LDnz5L2xVuhp54KR6qr+F3vXAD6h9rohxPbce8NdLDojbsLH9xUuCFW3ZLpBt+2bZCYx/3sD3DOb++lqsKZVdeX9r0KKZ97AddcA7e/fibn/PZe+u0k/DgcPhz83lesCP7cvh0uvDA8/e8yNiV3CY34nOKbD57OjBnBwKV4q/NI7zfw2g3MmjP8T3b3TqMSkvYB1HZVcMPtZxQ93tQbfADnnx/EG5+ca8EC2Lfv1FhyPa0krd9c7wW4w4JPnsF7LfCnc+Gdd4LW/8aN8MYbwbZZcG7F6H/XZGDFoeQuoWEGU2sGWDRjK9sbZie1Qp99vIKLuw8kHX8Y6Ac+1ZW8P93AoGIlkMT3GE8FTSHjG20myHTvGb8KueSS4Zb6xo1B6/3VV2HaNFi+PLmbplDJV5OBFY+Su4TKqqXvMuu1Nr5vQZ97PGFefvl3CMbO5a6UCSSfCppCxpfvYJ/Eq5DLLw+O7+kJbmuYBUm/0L+7KI4VCBNVy0joFLLcLTGBxPvu4wmkt7fwlS25VtAUOr5M9wIWLRp7sE88eT/ySNBqj8d3+DB873tBot+wAVpakmPL93eYGNvmzcnVUarSGT+13CXSCjHYKNsuk3xazYnxtbQkxxdvLecaS76DfeKJ/bHHgu2rrw4S+i9/Ca+8As3NUFEB8+YVriUf5rECE51a7hJ545lNMJea8XxbzfHXHT48/DkrVsCjjyZ/Tq6xjLadKY5TTglunMb72L/4RbjySjj55CCxDw3BoUNBbOO9ynBPvtKJvz4MYwWiQC13mbBybVEnipf5VVQkH5f6frn2CefTah4agpdeCvq4AaZPD7pBDh0KbnLGE10p+qeXLoUlS4Zjdw9+R7NmDW+ffvrIq4xcW9tPPglHjwavSTyH7ds1GVihKLnLhJTtTchMXSWPPw5vvgnHO/6M/iP7cYdDvd+gwnqoq3mIKbXBwtX5dOnk0mp2D1rBhw7BBRcEfx4+DLt3B9srVgy/R7bdN+NN9CcGXyX87i65ZPh319ISxDh9en7zu8S/NLdsgZkzhxP7li1w8cXBlYMmAxs/JXeZUNavH27hvftu0Be8YMHw9ty5cOBAcmL4/e+DAVA9PcGqQ4ODUFUFb70FJ/Wv4MVTNnDv8at5/PgSlp30FM399Xxm7/4Tg1zdhwfBnnFGbsnsxReTBzUluuaakWWI3/52kDQBmprg6aeTv8RWrAjKFCsqoLY26C559NHxV9okDui9ZpSBWitWBF+K3d3Dv4PRyizTSb0Psm9fsC/+OfFjZHzKlty73uvlsTvaxj5QJp31Oy+GeSP3v/gi7P3XNi6d2cYChxeq5/PWtkb2bwue/9i0XXy8723szeTXLSDWmn0zmP3w+FAV105/m5cG59Oyfxmf7mqmgkH+quoBVg2tw45B9cBRFrzxMO7wwqH5nNzbyJH+GjqoySmZPXffH7h06ssj9+9fyHoWcs01QRIeGgqSNATvO306HDs23KKFILF+73vBl9RppwXPtbYGrX3Iv6sm8ff63P6FvLhgIRddFDyX2M2UeJWxbNn45lRPvJEaf426YQrLfIw7F2Z2L7AM2O/uH0rz/KXAo0B8fa5fu/ttY33w1KlNfuGFrTkHLJPDDTek33/HHcOP3eG114a3P/zhzH3u8eS0Z0/Qsq+vh7POguf/fS8nUUetdbGpZtmJPvjP9h9gXtMf2bMHDh6EGTOgoSG4SsilXG/9etibYcHJ+DmOVmUTT9KbNwddIT09QXfNzTcHibalJegDP3RoOJZ8+sATf6+ZfvdQuJr8xHOOUwlkdpYvt5fdvWms47Jpud8H3AU8MMoxm919WZaxAcENmtH+EYmkk5oQ9+0bfm7BgpHJITUZDQ0Frd+dO4N5YJzpnF7ZRX3lIX5dczXfnP4gZlDbBTfemPz6RDU12cWbzUpLmaps4p+zZEnQeq+oCFrsN98cPE485umnh98vnwSZ7f/FQsyprlWVSmPMUkh3bwHCsa6ZCCOTw513Dg+ESS0VTB0g9OijQf/5++8HreDKisO8cfYyrpj6FL/qWcKPD1+dVIYXX0j6qaeGK25WrgwS7mjT6OZ7Xum2459bWxt018TLEON94L29ya8rdinheAeZjWeglWSvUH3unzSz14C9wLfd/a0Cva/ICGO1dFNblTBc7eIe3BQ9ciRoxR/tOczCfSupO/mHdFa9z919PTzUPXLh6mKWISZWj8Rjjr9/vMslsVolHke8Fn4itoC1qlLxFSK5vwKc7e49ZnYZsAGYn+5AM1sFrAKor5+b7hCRrGSbHBJv3MWH0kNwQzBIjgvZvHkhn1z09wl17/8j7XvAyJLIQpQhZnr/Sy4JqmGOHUv/JVZRMbHXFS3kNBMy0riTu7t3Jzx+wszuNrMZ7n4wzbFrgbUA8+c3aQyajEs2ySFxAJNZkBBPP314AFNqshzts1KHydfUFKYMMdP7p5uFMfVLTC1gyWTc0w+Y2Syz4J+SmV0Ue8+O0V8lUnzp+uaXLUsePh9PhmMl49RRru7BqNKWlsJM+DXahGNjfYmpBSzpjNlyN7OHgEuBGWa2G7gVqAZw958CVwB/bWYDQC9wlY9VXylSArn0zY8mMXFffHEwJW58pGZd3fiH4qt6RIphzOTu7l8e4/m7CEolRUKnEN0W8S+JmTOTB9y4B+WU3d1BJUt8f7bvHY8r2y+hsNEKSuGmWSEl8grRbbFkSfISenHbtwdVN7nOaJg6w+OSJcHjp54ajjGb7qJyyWWGSikPzS0jkoXUipaWFujsDPZ/4QtBV80jj2TXlZJptsktW5JLK8fbCi5Wy1orKE0MSu4SamG69E+saOnuhr4+uOKKILHHn585M7sVj8a7gMhYirm0YCnil/FTt4yEVtgu/eOf7x50xQwMQFtb8g3R888fng99NIkJMq5QibEUSwsWM34pDCV3CaVSJKhc40mc23zdumACr9dfD5afa2nJfem+XNZazUXicP5irU1azPilMNQtI6EUtkv/dBUtN988vK5oLlU4pSh9HG1Q1HipdHNiUMtdQitsl/7xScQS5zafPn24DDLblmspJs4q9pWBJv4KP7XcJbQyJahyJvjEm5Opy8/l0nIt5rQBpWhZa9qD8FNyl1AK86V/oQYdFWvagFINitK0B+Gm5C6hFPZRm2FvuYY9Pik+JXcJrbAnqLC3XMMenxSXbqhKqClBieRHyV1EJIKU3EVEIkjJXUQkgpTcRUQiaMzkbmb3mtl+M3szw/NmZv/TzHaY2etm9tHChykiIrnIpuV+HzDaJKF/DsyP/awCfjL+sEREZDzGTO7u3gIcGuWQFcADHngemG5mswsVoIiI5K4Qfe4NwK6E7d2xfSIiUiaFSO7phpWknXvOzFaZWauZtXZ1HSjAR4uISDqFSO67gcaE7TnA3nQHuvtad29y96ba2voCfLSIiKRTiOS+EfhKrGrmE0CXu7cX4H1FRCRPY04cZmYPAZcCM8xsN3ArUA3g7j8FngAuA3YAR4GvFStYERHJzpjJ3d2/PMbzDnyzYBGJiMi4aYSqiEgEKbmLiESQkruISAQpuYuIRJCSu4hIBCm5i4hEkJK7iEgEKbmLiESQkruISAQpuYuIRJCSu4hIBCm5i4hEkJK7iEgEKbmLiESQkruISAQpuYuIRFBWyd3MlprZNjPbYWZ/l+b5a83sgJm9Gvv5euFDFRGRbGWzzF4l8GPgcwSLYb9kZhvdvS3l0F+4+3VFiFFERHKUTcv9ImCHu7/j7seBnwMrihuWiIiMRzbJvQHYlbC9O7YrLCy5AAADoUlEQVQv1ZfM7HUze9jMGtO9kZmtMrNWM2vt6jqQR7giIpKNbJK7pdnnKduPAfPc/QLgWeD+dG/k7mvdvcndm2pr63OLVEREspZNct8NJLbE5wB7Ew9w9w5374tt3gN8rDDhiYhIPrJJ7i8B883sA2Z2EnAVsDHxADObnbC5HNhauBBFRCRXY1bLuPuAmV0HPAVUAve6+1tmdhvQ6u4bgW+Z2XJgADgEXFvEmEVEZAxjJncAd38CeCJl3y0Jj28CbipsaCIiki+NUBURiSAldxGRCFJyFxGJICV3EZEIUnIXEYkgJXcRkQgy99SZBEr0wWYHgD+W5cPLZwZwsNxBlNFkPn+d++RUjHM/293HnL+lbMl9MjKzVndvKncc5TKZz1/nrnMvNXXLiIhEkJK7iEgEKbmX1tpyB1Bmk/n8de6TU9nOXX3uIiIRpJa7iEgEKbkXiZnda2b7zezNhH1XmtlbZjZkZpGtHshw7t83s9/FlmJ8xMymlzPGYspw/v8UO/dXzexpMzurnDEWS7pzT3ju22bmZjajHLEVW4a/9++a2Z7Y3/urZnZZqeJRci+e+4ClKfveBL4ItJQ8mtK6j5Hn/gzwodhSjNuJ9hTR9zHy/L/v7he4+4XA48AtI14VDfcx8tyJrav8OeDdUgdUQveR5tyBH7j7hbGfJ9I8XxRK7kXi7i0EC5ck7tvq7tvKFFLJZDj3p919ILb5PMFyjZGU4fy7EzZPZeQ6xJGQ7txjfgDcQETPG0Y997JQcpdy+CvgN+UOotTM7Htmtgu4mui23EeIrdK2x91fK3csZXJdrEvuXjOrK9WHKrlLSZnZzQTLMT5Y7lhKzd1vdvdGgnO/rtzxlIKZnQLczCT6MkvxE+Bc4EKgHbizVB+s5C4lY2ZfBZYBV/vkrsH9v8CXyh1EiZwLfAB4zcx2EnTHvWJms8oaVYm4+z53H3T3IeAe4KJSfXZWa6iKjJeZLQVuBD7t7kfLHU+pmdl8d387trkc+F054ykVd38DmBnfjiX4JnefFBOJmdlsd2+PbV5OUFRREkruRWJmDwGXAjPMbDdwK8HNlv8F1AP/z8xedfcl5YuyODKc+03AFOAZMwN43t3/a9mCLKIM53+ZmZ0PDBHMhjppzt3d15U3qtLI8Pd+qZldSHAjeSfwX0oWz+S+OhYRiSb1uYuIRJCSu4hIBCm5i4hEkJK7iEgEKbmLiESQkruISAQpuYuIRJCSu4hIBP1/9YC+cXh3YEoAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "ada = ada.fit(X_train,y_train)\n", + "y_train_pred = ada.predict(X_train)\n", + "y_test_pred = ada.predict(X_test)\n", + "ada_train = accuracy_score(y_train,y_train_pred)\n", + "ada_test = accuracy_score(y_test,y_test_pred)\n", + "print('Adaboost train/test accuracies %.3f/%.3f'%(ada_train,ada_test))\n", + "plot_decision_regions(X_train,y_train,classifier=ada)" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": { + "collapsed": false, + "pycharm": { + "name": "#%% md\n" + } + }, + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "3.7.0" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +}