在这个例子中,我们将使用Keras处理多分类问题。我们将使用Iris数据集,该数据集包含三个不同种类的鸢尾花,每个种类包含50个样本。每个数据点都有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。
我们将使用一个简单的神经网络来训练模型,并使用softmax激活函数输出一个概率分布,即每个样本属于三个类别中的哪一个。我们还将在训练过程中使用交叉熵损失函数和随机梯度下降优化器。
代码示例:
载入数据集
from sklearn.datasets import load_iris
iris = load_iris()
将数据集拆分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
将标签转换为one-hot编码
from keras.utils import to_categorical
y_train = to_categorical(y_train)
y_test = to_categorical(y_test)
创建模型
from keras.models import Sequential
from keras.layers import Dense
model = Sequential()
model.add(Dense(units=10, input_dim=4, activation='relu'))
model.add(Dense(units=3, activation='softmax'))
编译模型
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
训练模型
model.fit(X_train, y_train, epochs=50, batch_size=10)
评估模型
loss_and_metrics = model.evaluate(X_test, y_test, batch_size=10)
print(loss_and_metrics)
python
我们首先将数据集拆分为训练集和测试集,然后使用to_categorical函数将标签转换为one-hot编码。
接下来,我们创建一个Sequential模型,并为其添加两个Dense层。第一层包含10个神经元和relu激活函数,第二层包含3个神经元和softmax激活函数,以输出每个样本属于三个类别中的哪一个的概率分布。我们使用交叉熵损失函数和随机梯度下降优化器来编译模型,并指定metrics为accuracy。
我们使用fit函数训练模型,并在测试集上使用evaluate函数评估模型的性能。