使用鸢尾花数据集。鸢尾花数据集包含四个特征和一个标签。这四个特征确定了单株鸢尾花的下列植物学特征:
- 花萼长度
- 花萼宽度
- 花瓣长度
- 花瓣宽度
该表确定了鸢尾花品种,品种必须是下列任意一种:
- 山鸢尾 Iris-Setosa(0)
- 杂色鸢尾 Iris-versicolor(1)
- 维吉尼亚鸢尾 Iris-virginica(2)
目标数据做one-hot编码
import keras
from keras import layers
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据集
data = pd.read_csv('./dataset/iris.csv')
#对预测结果做one-hot编码处理,,然后加入到DataFrame里
data.Species.unique()
data = data.join(pd.get_dummies(data.Species))
del data['Species']
#对数据乱序处理
index = np.random.permutation(len(data))
data = data.iloc[index]
# 提取特征集
x = data[data.columns[1: -3]]
# 提取标签集
y = data.iloc[:, -3:]
model = keras.Sequential()
model.add(layers.Dense(3, input_dim=4, activation='softmax'))
model.compile(optimizer='adam',
loss='categorical_crossentropy',
metrics=['acc']
) # 目标数据做度热编码,用 categorical_crossentropy 来计算softmax交叉熵
history = model.fit(x, y, epochs=50)
目标数据做顺序编码
data = pd.read_csv('./dataset/iris.csv')
data.Species.unique()
spc_dic = {'setosa': 0, 'versicolor': 1, 'virginica': 2}
data['Species'] = data.Species.map(spc_dic)
x = data[data.columns[1:-1]]
y = data.Species
model = keras.Sequential()
model.add(layers.Dense(3, input_dim=4, activation='softmax'))
model.summary()
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['acc']
) # 目标数据做顺序编码,用 sparse_categorical_crossentropy 来计算softmax交叉熵
model.fit(x, y, epochs=50)