一个最简单的神经系统,里面总共有两层神经元:一层输入单元和一层输出单元
Y=X1+2X1+3X1+4
处理线性关系
处理非线性关系
预先设定一种网络结构和激活函数----》初始化模型权重--------》根据输入数据和权重来预测结果---------》模型要调节权重
神经元的激活需要电信号累加到一定的水平
常见的激活函数:ReLU、tanh、Sigmoid
可以像搭积木一样不断地扩展模型的边界,而对于内部具体的运行不需要加以太多的干涉
1.神经网络缺乏可解释性,它的内部纷繁复杂
2.神经网络非常耗资源
#神经网络 from sklearn import datasets #sklearn的数据集 from sklearn.neural_network import MLPClassifier import numpy as np #矩形运算库numpy np.random.seed(0) #设置随机种子,不设置的话默认是按系统时间作为参数,设置后可以保证我们每次产生的随机数是一样的 iris = datasets.load_iris() #获取鸢尾花数据集 iris_x = iris.data #数据部分 iris_y = iris.target #类别部分 #从150条数据中选取140条作为训练集,10条作为测试集。permutation接收一个数作为参数(这里为数据集长度150), #产生一个0-149乱序一维数组 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:]] #测试集数据 #slover是权重优化的策略;activation表示选择的激活函数,这里没有设置,默认是relu;alpha是惩罚参数;hidden_layer_sizes是隐藏层大小,长度就是隐藏层的数量, #每一个大小就是设置每层隐藏层的神经元数量;random_state是初始化所使用的随机项 #(5,2)表示有两层,第一层有5个神经元,第二层有2个 clf = MLPClassifier(solver='lbfgs',alpha=le-5, hidden_layer_sizes=(5,2),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)
深度学习:
图像处理方面、自然语言处理方面