{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 多层感知机分类" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "王**" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "```\n", "import numpy as np\n", "from matplotlib import pyplot as plt\n", "from matplotlib.colors import ListedColormap\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn.datasets import make_moons, make_circles, make_classification\n", "from sklearn.neural_network import MLPClassifier\n", "\n", "h = 0.02 # step size in the mesh\n", "\n", "alphas = np.arange(1,5)\n", "\n", "names = []\n", "for i in alphas:\n", " names.append('n of neurons ' + str(i))\n", "\n", "classifiers = []\n", "for i in alphas: \n", " p=np.ones(i,dtype = np.int32)*int(3)\n", " classifiers.append(MLPClassifier(solver='lbfgs',activation='relu',learning_rate_init=0.1,alpha=1e-5, hidden_layer_sizes=p,random_state=1))\n", "\n", "X, y = make_classification(n_features=2, n_redundant=0, n_informative=2,\n", " random_state=0, n_clusters_per_class=1)\n", "rng = np.random.RandomState(2)\n", "X += 2 * rng.uniform(size=X.shape)\n", "linearly_separable = (X, y)\n", "\n", "datasets = [\n", " make_moons(n_samples=500,noise=0.2, random_state=0),\n", " make_circles(n_samples=500,noise=0.2, factor=0.5, random_state=1),\n", " linearly_separable]\n", " \n", "\n", "\n", "figure = plt.figure(figsize=(17, 9))\n", "i = 1\n", "# iterate over datasets\n", "for X, y in datasets:\n", " # preprocess dataset, split into training and test part\n", " X0=(X[:,0]-min(X[:,0]))/(max(X[:,0])-min(X[:,0]))*255\n", " X1=(X[:,1]-min(X[:,1]))/(max(X[:,1])-min(X[:,1]))*255\n", " X=np.vstack((X0,X1))\n", " X=X.T\n", " \n", " \n", " X = StandardScaler().fit_transform(X)\n", " X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4)\n", "\n", " x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5\n", " y_min, y_max = X[:, 1].min() - .5, X[:, 1].max() + .5\n", " xx, yy = np.meshgrid(np.arange(x_min, x_max, h),\n", " np.arange(y_min, y_max, h))\n", "\n", " # just plot the dataset first\n", " cm = plt.cm.RdBu\n", " cm_bright = ListedColormap(['#FF0000', '#0000FF'])\n", " ax = plt.subplot(len(datasets), len(classifiers) + 1, i)\n", " # Plot the training points\n", " ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright)\n", " # and testing points\n", " ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright, alpha=0.5)\n", " ax.set_xlim(xx.min(), xx.max())\n", " ax.set_ylim(yy.min(), yy.max())\n", " ax.set_xticks(())\n", " ax.set_yticks(())\n", " i += 1\n", "\n", " # iterate over classifiers\n", " for name, clf in zip(names, classifiers):\n", " ax = plt.subplot(len(datasets), len(classifiers) + 1, i)\n", " clf.fit(X_train, y_train)\n", " score = clf.score(X_test, y_test)\n", "\n", " # Plot the decision boundary. For that, we will assign a color to each\n", " # point in the mesh [x_min, x_max]x[y_min, y_max].\n", " if hasattr(clf, \"decision_function\"):\n", " Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n", " else:\n", " Z = clf.predict_proba(np.c_[xx.ravel(), yy.ravel()])[:, 1]\n", "\n", " # Put the result into a color plot\n", " Z = Z.reshape(xx.shape)\n", " ax.contourf(xx, yy, Z, cmap=cm, alpha=.8)\n", "\n", " # Plot also the training points\n", " ax.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=cm_bright)\n", " # and testing points\n", " ax.scatter(X_test[:, 0], X_test[:, 1], c=y_test, cmap=cm_bright,\n", " alpha=0.5)\n", "\n", " ax.set_xlim(xx.min(), xx.max())\n", " ax.set_ylim(yy.min(), yy.max())\n", " ax.set_xticks(())\n", " ax.set_yticks(())\n", " ax.set_title(name)\n", " ax.text(xx.max() - .3, yy.min() + .3, ('%.2f' % score).lstrip('0'),\n", " size=15, horizontalalignment='right')\n", " i += 1\n", "\n", "figure.subplots_adjust(left=.02, right=.98)\n", "plt.show()\n", "\n", "\n", "'''\n", "plt.plot(alphas, score) \n", "plt.axis([0, 11, 0, 1])\n", "plt.ylabel('score')\n", "plt.xlabel('the number of neurons')\n", "'''\n", "```" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "kernelspec": { "display_name": "Python [default]", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.0" } }, "nbformat": 4, "nbformat_minor": 2 }