五 softmax多分类实例

文章目录

  • 独热编码
  • 顺序编码

独热编码

import keras
from keras import layers
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
data = pd.read_csv('./dataset/iris.csv') ##用的是花花分类
data.head()

五 softmax多分类实例_第1张图片

data.Species.unique()##查看花的种类

在这里插入图片描述
将花的种类转化为数值,采用独热编码

pd.get_dummies(data.Species)##独热编码 产生对应种类的编码

五 softmax多分类实例_第2张图片
将新产生的数据加入到原来数据中

data=data.join(pd.get_dummies(data.Species)) #将新产生的数据加入到原来数据中
data #看一下当前数据

五 softmax多分类实例_第3张图片
除原有字符串数据

del data['Species'] #删除原有字符串数据

打乱数据方便训练

index = np.random.permutation(len(data))##打乱数据方便训练
data = data.iloc[index]

处理数据集

x=data[data.columns[1:-3]]##第二列到倒数第四列为输入
y=data.iloc[:,-3:]##倒数后三列为输出
x.shape,y.shape ##看一下数据维度

训练网络

module = keras.Sequential()
module.add(layers.Dense(3,input_dim=4,activation='softmax'))##输入维度3 输出维度4
module.summary()

五 softmax多分类实例_第4张图片
编译模型

module.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['acc'])##因为采用独热编码,所以损失函数用categorical_crossentropy
history = module.fit(x,y,epochs=100)

五 softmax多分类实例_第5张图片
五 softmax多分类实例_第6张图片
模型预测

module.predict(pd.DataFrame([[5.1,3.5,1.4,0.2]]))

在这里插入图片描述

顺序编码

下面用顺序编码处理输出是字符产的类型

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)

data ##看一下数据

五 softmax多分类实例_第7张图片

x=data[data.columns[1:-1]]
y=data.Species
model = keras.Sequential()
model.add(layers.Dense(3,input_dim=4,activation='softmax'))
model.summary()
##顺序编码loss函数用sparse_categorical_crossentropy
model.compile(optimizer='adam',loss='sparse_categorical_crossentropy',metrics=['acc']) 

history = model.fit(x,y,epochs=100)

五 softmax多分类实例_第8张图片
五 softmax多分类实例_第9张图片
模型预测

model.predict(pd.DataFrame([[7.7,3.0,6.6,2.3]]))

在这里插入图片描述

你可能感兴趣的