1. 导包:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
输出结果:
2.将数据集划分为训练集和测试集:
x_train,x_test,y_train,y_test=train_test_split(iris.data,iris.target,test_size=0.2,random_state=23)
输出结果:
3. 进一步将原始的训练集划分为训练集和验证集:
X_train,X_valid,y_train,y_valid=train_test_split(x_train,y_train,test_size=0.2,random_state=12)
输出结果:
4.输出验证集和训练集的形状:
print(X_valid.shape)
print(X_train.shape)
输出结果:
5. 添加Dropout层来减少过拟合:
import tensorflow as tf
from tensorflow import keras
model = keras.models.Sequential([
keras.layers.Flatten(input_shape=[4]),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dense(16, activation="relu"),
keras.layers.Dropout(rate=0.2),
keras.layers.Dense(3, activation="softmax")
])
输出结果:
6. 打印出模型的概述:
model.summary()
输出结果:
7.
8. 训练模型:
model.compile(loss="sparse_categorical_crossentropy",
optimizer="sgd",metrics=["accuracy"])
h=model.fit(X_train,y_train,batch_size=10,epochs=50,validation_data=(X_valid,y_valid))
输出结果:
9. 模型训练过程中的历史记录:
pd.DataFrame(h.history)
输出结果:
10. 画图:
pd.DataFrame(h.history).plot(figsize=(8,5))
plt.grid(True)
plt.gca().set_ylim(0,1)
plt.show()
输出结果:
11. 验证集训练的准确率:
model.evaluate(x_test,y_test,batch_size=1)
输出结果: