1、导入支持向量机模型,划分数据集
from sklearn import datasets
from sklearn import svm
iris=datasets.load_iris()
iris_x=iris.data
iris_y=iris.target
indices = np.random.permutation(len(iris_x))
iris_x_train = iris_x[indices[:-10]]
iris_y_train = iris_y[indices[:-10]]
iris_x_test = iris_x[indices[-10:]]
iris_y_test = iris_y[indices[-10:]]
2、训练模型
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
hidden_layer_sizes=(5, 2), random_state=1)
clf.fit(iris_x_train,iris_y_train)
#hidden_layer_sizes,它用来设置隐藏层大小,长度就是隐藏层的数量。在第一次,我们设置的是 [5,2] 这个数组,这样我们的网络有两层隐藏层,第一层有 5 个神经元,第二层有 2 个神经元。
多层感知器是一种人工神经网络模型,由多个神经网络层组成,其中包括输入层、隐藏层和输出层。MLPClassifier() 可以用于解决分类问题,它具有以下一些重要参数:
hidden_layer_sizes:指定隐藏层的大小和数量。
activation:激活函数,如 ‘logistic’、‘relu’、‘tanh’ 等。
solver:优化算法,如 ‘adam’、‘sgd’ 等。
alpha:L2 正则化参数。
learning_rate:学习率的调整策略,如’constant’、‘adaptive’ 等。
max_iter:最大迭代次数。
3、为测试数据集分类
iris_y_predict = clf.predict(iris_x_test)
score=clf.score(iris_x_test,iris_y_test,sample_weight=None)
print('iris_y_predict = ')
print(iris_y_predict)
print('iris_y_test = ')
print(iris_y_test)
print('Accuracy:',score)
print('layers nums :',clf.n_layers_)
iris_y_predict =
[2 2 2 2 2 2 2 2 2 2]
iris_y_test =
[1 1 1 0 0 0 2 1 2 0]
Accuracy: 0.2
layers nums : 4
在第一次输出的时候,可以看到准确率只有 20%,是不是让人大跌眼镜?不要担心,神经网络的重点就在这里,我们接着往下看。
clf = MLPClassifier(solver='lbfgs', alpha=1e-5,
hidden_layer_sizes=(10, 10,10), random_state=1)
clf.fit(iris_x_train,iris_y_train)
iris_y_predict = clf.predict(iris_x_test)
score=clf.score(iris_x_test,iris_y_test,sample_weight=None)
print('iris_y_predict = ')
print(iris_y_predict)
print('iris_y_test = ')
print(iris_y_test)
print('Accuracy:',score)
print('layers nums :',clf.n_layers_)
iris_y_predict =
[1 2 1 0 0 0 2 1 2 0]
iris_y_test =
[1 1 1 0 0 0 2 1 2 0]
Accuracy: 0.9
layers nums : 5
第二次输出的时候,对于代码其他部分没有做任何调整,只是对 hidden_layer_sizes 进行了修改,改成了三个隐藏层,每个隐藏层有10 个神经元,这个时候神奇的事情发生了,我们的准确率已经提升到 了 90%。
优点
1、可以不断地扩展模型的边界,而对于内部具体的运行不需要加以太多的干涉。通过不同的搭建手段,神经网络几乎可以去模拟任何算法的结果,只要数据量够多,构建的模型够完善,最终都会有一个很好的结果。
缺点
1、神经网络缺乏可解释性,它的内部纷繁复杂,就像一个神奇的黑匣子,你告诉它数据,然后它告诉你结果,至于为什么会这样,它不做任何解释。所以在很多对解释性要求比较高的场景,比如信用评级、金融风控等情况下没办法使用。
2、神经网络非常消耗资源,不管是数据、网络节点,还是硬件设备,要构建一套完美的神经网络模
型开销是非常大的,不光训练时间长,还需要耗费很大的人力物力。