多层感知器算法
from sklearn.neural_network import MLPClassifier
from sklearn.datasets import load_wine
wine=load_wine()
X=wine.data[:,:2]
y=wine.target
import matplotlib.pyplot as plt
%matplotlib inline
plt.figure(dpi=100)
plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.spring,edgecolors='k')
from sklearn.model_selection import train_test_split
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.3,random_state=8)
mlp=MLPClassifier(random_state=8)
mlp.fit(X_train,y_train)
print(mlp.score(X_train,y_train),mlp.score(X_test,y_test))
0.3870967741935484 0.42592592592592593
mlp=MLPClassifier(hidden_layer_sizes=(100,100),random_state=8)
mlp.fit(X_train,y_train)
print(mlp.score(X_train,y_train),mlp.score(X_test,y_test))
0.7741935483870968 0.7777777777777778
mlp=MLPClassifier(hidden_layer_sizes=(100,100,100),random_state=8)
mlp.fit(X_train,y_train)
print(mlp.score(X_train,y_train),mlp.score(X_test,y_test))
0.8064516129032258 0.7777777777777778
mlp=MLPClassifier(hidden_layer_sizes=(120,120,200),activation='tanh',random_state=8)
mlp.fit(X_train,y_train)
print(mlp.score(X_train,y_train),mlp.score(X_test,y_test))
0.8306451612903226 0.8148148148148148
mlp=MLPClassifier(hidden_layer_sizes=(100,100),
activation='relu',
solver='sgd',
random_state=8)
mlp.fit(X_train,y_train)
print(mlp.score(X_train,y_train),mlp.score(X_test,y_test))
0.5806451612903226 0.5
mlp=MLPClassifier(hidden_layer_sizes=(100,100),
activation='relu',
random_state=8)
mlp.fit(X_train,y_train)
print(mlp.score(X_train,y_train),mlp.score(X_test,y_test))
0.7741935483870968 0.7777777777777778
import numpy as np
x_min,x_max=X[:,0].min()-0.5,X[:,0].max()+0.5
y_min,y_max=X[:,1].min()-0.5,X[:,1].max()+0.5
xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
Z=mlp.predict(np.c_[xx.ravel(),yy.ravel()])
Z=Z.reshape(xx.shape)
plt.figure()
plt.pcolormesh(xx,yy,Z,cmap=plt.cm.Pastel1)
plt.scatter(X[:,0],X[:,1],c=y,cmap=plt.cm.winter,edgecolor='k')
plt.xlim(xx.min(),xx.max())
plt.ylim(yy.min(),yy.max())
plt.title("Classifier:MLPClassifier")
plt.show()