加载scikit-learn库中的鸢尾花数据集; 将上述数据集划分为训练集和测试集; 基于深度学习框架构造一个非线性分类器;将训练集按照82拆分用于训练和验证调整超参数并获得最优的超参数; 评估所获得的最优超参数下的分类性能;
代码实现如下:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
from keras.utils import to_categorical
# 加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 构造非线性分类器
model = Sequential()
model.add(Dense(64, activation='relu', input_dim=4))
model.add(Dense(64, activation='relu'))
model.add(Dense(3, activation='softmax'))
model.compile(loss='categorical_crossentropy', optimizer=Adam(lr=0.01), metrics=['accuracy'])
# 将类别转换为one-hot编码
y_train_onehot = to_categorical(y_train)
y_test_onehot = to_categorical(y_test)
# 将训练集按照8:2拆分,用于训练和验证
X_train_new, X_val, y_train_new, y_val = train_test_split(X_train, y_train_onehot, test_size=0.2, random_state=42)
# 调整超参数并训练模型
history = model.fit(X_train_new, y_train_new, validation_data=(X_val, y_val), epochs=50, batch_size=10)
# 评估最优超参数下的分类性能
loss, acc = model.evaluate(X_test, y_test_onehot)
print('Test Loss:', loss)
print('Test Accuracy:', acc)
在训练过程中,我们将训练集按照8:2拆分为训练集和验证集,通过调整超参数来获得最优的超参数。在本例中,我们选择了学习率为0.01,训练50个epoch,并且批量大小为10。最后,我们评估了最优超参数下的分类性能
原文地址: http://www.cveoy.top/t/topic/dw8r 著作权归作者所有。请勿转载和采集!