神经网络概念总结:
单层神经网络无隐层,为感知机,是神经网络的起源。
在输入层和输出层之间加上隐层,隐层同样具有和输出层一样的神经元功能,形成神经网络。
概念总结导图:
习题简单实践:
习题5.5 用单隐层网络训练西瓜数据集3.0.
# first round -- sklearn
import pandas as pd
import numpy as np
data = pd.read_csv('./CH4 TABLE4-3.csv', delimiter=',')
# 西瓜数据集3.0见第4张总结
data1 = data[:8]
data1 = data[['色泽','根蒂','敲声','纹理','脐部','触感','密度','含糖率','好坏']]
data2 = data1.replace(['青绿','蜷缩','浊响','清晰','凹陷','硬滑','乌黑','稍蜷','沉闷','稍糊','稍凹','软粘','浅白','硬挺','清脆','模糊','平坦','好瓜','坏瓜'],[1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,1,0])
X =np.array(data2.iloc[:,0:8])
y = np.array(data2.iloc[:,8])
from sklearn import model_selection
X_train,X_test,y_train,y_test = model_selection.train_test_split(X,y,test_size = 0.5,random_state=0)
from sklearn.neural_network import MLPClassifier
from sklearn import metrics
# solver取值sgd,基于梯度下降;这里因为数据量太小,选取了lbfgs
clf = MLPClassifier(activation='logistic',solver='lbfgs',random_state=0,hidden_layer_sizes=(4,))
clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
print(metrics.classification_report(y_test,y_pred))