from keras.models import Sequential
from keras.layers import Dense,Activation
Keras基本操作:模型的设定方式
#方式一:直接传递网络层实例列表
model=Sequential([
Dense(32,input_shape=(784,)), Activation('relu'),
Dense(10), Activation('softmax'),
])
#方式二:使用.add()方法依次添加各层
model=Sequential()
model.add(Dense(32,input_dim=784))
model.add(Activation('relu'))
1.数据的导入,以及测试集、训练集的划分
#导入iris数据集,导入并切分数据
from sklearn import datasets
from sklearn.model_selection import train_test_split
iris=datasets.load_iris()
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.3,random_state=666)
#去除30%作为测试集
print('训练集长度:{}'.format(len(x_train)))
print('测试集长度:{}'.format(len(x_test)))
训练集长度:105
测试集长度:45
2.训练集以及测试集进行标准化
#引入iris并标准化
#对训练集自变量做标准化
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
iris_train = scaler.fit_transform(x_train)
iris_test = scaler.fit_transform(x_test)
#用以展示数据,可以看训练集的标准化
print(iris_train)
print('-'*20)
print(iris_train.shape)
3.因变量(3种花的种类)进行哑变量的转换
#使用keras拟合
#将因变量转换为哑变量组(哑变量,用以反映质的属性的一个人工变量,是量化了的自变量,通常取
#值为0或1。引入哑变量可使线形回归模型变得更复杂,但对问题描述更简明,一个方程能达到两个方
#程的作用,而且接近现实。
from keras.utils import to_categorical
# 将因变量转换为哑变量组
y = to_categorical(y_train)
# 查看前五个因变量的值
print(y[:5])
[[1. 0. 0.]
[1. 0. 0.]
[1. 0. 0.]
[0. 1. 0.]
[1. 0. 0.]]
4.建立神经网络模型并进行训练
#建立网络并训练模型
from keras.models import Sequential
from keras.layers import Dense
"""
添加三层。
第一层激活函数选择sigmoid;
第二层激活函数选择tanh;
第三层激活函数选择softmax。
"""
model = Sequential()
model.add(Dense(6, input_dim = 4, activation = 'sigmoid'))
model.add(Dense(5,activation='relu'))
model.add(Dense(4, activation = 'tanh'))
model.add(Dense(3, activation = 'softmax')) # softmax保证输出在[0,1]范围内
"""损失函数loss选择categorical_crossentropy;
优化器optimizer选择rmsprop;
评估标准metrics选择accuracy。"""
model.compile(loss = 'categorical_crossentropy',
optimizer = 'rmsprop',
metrics = ['accuracy'])
# 模型的训练
hist=model.fit(iris_train, y, epochs = 200)
5.模型的评价
#模型评价以及效果评价
model.summary()
scores = model.evaluate(iris_train, y)
print("测试集损失函数:%f,预测准确率:%2.2f%%" % (scores[0],scores[1] * 100))
105/105 [==============================] - 0s 380us/step
测试集损失函数:0.286841,预测准确率:91.43%
6.模型的预测
#模型的预测
result = model.predict(iris_test)
print(result)
print('-'*20)
print(result.shape)
print(hist.history)
7.可视化展示
from matplotlib import pyplot as plt
plt.plot(hist.history['acc'],c='purple',alpha=0.3)
# 使用第二Y轴
ax2 = plt.gca().twinx()
plt.plot(hist.history['loss'],c='red',alpha=0.5)
plt.show()