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()
data.Species.unique()##查看花的种类
pd.get_dummies(data.Species)##独热编码 产生对应种类的编码
data=data.join(pd.get_dummies(data.Species)) #将新产生的数据加入到原来数据中
data #看一下当前数据
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()
module.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['acc'])##因为采用独热编码,所以损失函数用categorical_crossentropy
history = module.fit(x,y,epochs=100)
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 ##看一下数据
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)
model.predict(pd.DataFrame([[7.7,3.0,6.6,2.3]]))