肯定有人要说什么多层感知机,不就是几个隐藏层连接在一起的吗。话是这么说,但是我觉得我们首先要自己承认自己高级,不然怎么去说服(hu nong)别人呢
from keras.models import Sequential from keras.layers import Dense import numpy as np #设置随机种子,使得每次结果都是一致的 np.random.seed(7) import pandas as pd dataFrame = pd.read_csv("E:/数据集/PimaIndians.csv") print(dataFrame.head()) print(dataFrame.keys()) #导入数据 #dataset = np.loadtxt("E:/数据集/PimaIndians.csv",delimiter=",") #分割输入变量和输出变量 #选择前8列作为输入,最有一列作为输出 x = dataFrame.ix[:,list(range(8))] y = dataFrame.ix[:,[8]] print(x.head()) print(y.head()) #将其转换成np数组,以输入到keras模型中去 x = x.values y=y.values print(type(x),x.shape) #创建模型 model = Sequential() #添加几个隐藏层 model.add(Dense(12,input_dim=8,activation='relu')) model.add(Dense(8,activation='relu')) model.add(Dense(1,activation='sigmoid')) #编译模型 model.compile(loss='binary_crossentropy',optimizer='adam',metrics=['accuracy']) #训练模型 model.fit(x=x,y=y,epochs=150,batch_size=10,validation_split=0.2) #评估模型 scores=model.evaluate(x=x,y=y) print(' %s:%.2f%%'%(model.metrics_names[1],scores[1]*100))
画几个知识点:
1、pandans按列切片:
#分割输入变量和输出变量 #选择前8列作为输入,最有一列作为输出 x = dataFrame.ix[:,list(range(8))] y = dataFrame.ix[:,[8]]
2、dataFrame转换成numpy数组
#将其转换成np数组,以输入到keras模型中去 x = x.values y=y.values
3、keras自动切分数据集
#训练模型 model.fit(x=x,y=y,epochs=150,batch_size=10,validation_split=0.2)