多层感知机训练pima_indians_diabetes
导入库包
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
import pandas as pd
# 设定随机数种子,使得模型参数初始化结果相同
np.random.seed(7)
导入数据,并将其转换为keras指定数据类型
# 导入数据
dataset = pd.read_csv('XXXX/diabetes.csv')
#print(dataset)# 分割输入x和输出Y
x = dataset.iloc[:,0:8]
Y = dataset.iloc[:,8]# tensorflow仅接受训练数据为numpy形式
x = np.array(x)#对Y进行标签编码
from sklearn.preprocessing import LabelEncoder
Y=Y.values.tolist()
label_encoder = LabelEncoder()
Y = np.array(label_encoder.fit_transform(Y))
创建模型
# 创建模型
model = Sequential()# 第一层必须设定input_dim,即输入维度(输入变量个数);input_shape=(8,) 等价于input_dim=8
# Dense类为完全连接的层,参数1为神经元个数,activation为激活函数,可选sigmoid、relu、tanh
model.add(Dense(12, input_dim=8, activation='relu'))
model.add(Dense(8, activation='relu'))
# 由于最后输出结果为“是否为糖尿病”的二分类问题,因此选取sigmoid函数,且输出神经元为1
model.add(Dense(1, activation='sigmoid'))
编译模型
# 编译模型,需要指定用于评估一组权重的损失函数loss、用于搜索网络不同权重的优化器optimizer、以及模型训练报告的评估指标metrics
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
训练模型
# 训练模型,epochs为数据集迭代训练次数,还需设定执行神经网络中的权重跟新的每个批次所用到的实例个数
model.fit(x=x, y=Y, epochs=150, batch_size=10)
评估模型(仅用训练数据进行)
# 评估训练数据模型
scores = model.evaluate(x=x, y=Y)
print('\n%s : %.2f%%' % (model.metrics_names[1], scores[1]*100))
此外,可通过kera自动评估来对模型性能进行计算,需要使用到fit()函数中的验证分割参数validation_split,该值接受小数点形式,如validation_split=0.2,表示将数据集的20%用于评估模型,其余80%用于训练模型,而后依据这20%的数据表现来给出val_loss 和val_acc
model.fit(x=x, y=Y, epochs=150, batch_size=10,validation_split=0.2)
手动评估有两种形式,一是手动分离数据集并评估,二是k折交叉验证。对于手动指定验证数据集,可用scikit机器学习库里的train_test_split(),而评估数据集通过元组的形式传递给fit()。如下
x_trian,x_validation,Y_train,Y_validation = train_test_split(x,Y,test_size = 0.2,random_state = seed)model.fit(x_train, Y_train ,validation_data = (x_validation,Y_validation), epochs=150, batch_size=10)
使用k折交叉验证的方法(需要注意,此方法一般不用于深度学习,因为深度学习模型的计算开销比较大),使用scikit-Learn机器学习库中的StratifiedKFold对数据集进行划分。代码如下:
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import StratifiedKFold# 设定随机数种子
seed = 7
np.random.seed(seed)# 导入数据
dataset = pd.read_csv('XXX/diabetes.csv')
# 分割输入x和输出Y
x = dataset.iloc[:,0:8]
Y = dataset.iloc[:,8]# tensorflow仅接受训练数据为numpy形式
x = np.array(x)#对Y进行标签编码
Y=Y.values.tolist()
label_encoder = LabelEncoder()
Y = np.array(label_encoder.fit_transform(Y))kfold = StratifiedKFold(n_splits=10, random_state = seed, shuffle = True)
cvscores =[]
for train, validation in kfold.split(x,Y):# 创建模型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'])# 训练模型,通过verbose=0来关闭模型fit()和evaluate()的详细输出,在每个模型构建完成后,进行评估并输出评估结果model.fit(x[train], Y[train], epochs=150, batch_size=10, verbose=0)# 评估模型scores = model.evaluate(x[validation], Y[validation], verbose=0)#输出评估结果print('%s : %.2f%%' % (model.metrics_names[1], scores[1]*100))cvscores.append(scores[1]*100)# 输出均值和标准差
print('%.2f%% (+/- %.2f%%)'% (np.mean(cvscores),np.std(cvscores)))
该文代码源自魏贞原《深度学习:基于Keras的Python实践》
多层感知机训练pima_indians_diabetes相关推荐
- 深度学习笔记其三:多层感知机和PYTORCH
深度学习笔记其三:多层感知机和PYTORCH 1. 多层感知机 1.1 隐藏层 1.1.1 线性模型可能会出错 1.1.2 在网络中加入隐藏层 1.1.3 从线性到非线性 1.1.4 通用近似定理 1 ...
- TensorFlow基础之模型建立与训练:线性回归、MLP多层感知机、卷积神经网络
TensorFlow基础之模型建立与训练 模型建立与训练:简单的线性回归 MLP多层感知机 数据获取.预处理 模型搭建 训练与评估 卷积神经网络 高效建模 Keras Sequential高效建模 F ...
- TensorFlow实现多层感知机函数逼近
TensorFlow实现多层感知机函数逼近 准备工作 对于函数逼近,这里的损失函数是 MSE.输入应该归一化,隐藏层是 ReLU,输出层最好是 Sigmoid. 下面是如何使用 MLP 进行函数逼近的 ...
- TensorFlow实现多层感知机MINIST分类
TensorFlow实现多层感知机MINIST分类 TensorFlow 支持自动求导,可以使用 TensorFlow 优化器来计算和使用梯度.使用梯度自动更新用变量定义的张量.本文将使用 Tenso ...
- Theano3.4-练习之多层感知机
来自http://deeplearning.net/tutorial/mlp.html#mlp Multilayer Perceptron note:这部分假设读者已经通读之前的一个练习 Classi ...
- 【深度学习】基于Pytorch多层感知机的高级API实现和注意力机制(三)
[深度学习]基于Pytorch多层感知机的高级API实现和注意力机制(三) 文章目录 [深度学习]基于Pytorch多层感知机的高级API实现和注意力机制(三) 1 权重衰减 1.1 范数 1.2 L ...
- 【深度学习】基于Pytorch多层感知机的高级API实现和注意力机制(二)
[深度学习]基于Pytorch多层感知机的高级API实现和注意力机制(二) 文章目录1 代码实现 2 训练误差和泛化误差 3 模型复杂性 4 多项式回归4.1 生成数据集4.2 对模型进行训练和测试4 ...
- DeepLearning tutorial(3)MLP多层感知机原理简介+代码详解
FROM:http://blog.csdn.net/u012162613/article/details/43221829 @author:wepon @blog:http://blog.csdn.n ...
- python 底层实现_用Python从底层实现一个多层感知机
在上一篇文章中,我们从数学理论对多层感知机的反向传播进行了推导.南柯一梦宁沉沦:神经网络中反向传播算法数学推导zhuanlan.zhihu.com 这一篇文章中我们将基于上一篇文章最后给出的算法使用 ...
最新文章
- 2017.6.4 入门组 NO.2——睡眠
- python模块之datetime
- 机器学习中的矩阵向量求导(四) 矩阵向量求导链式法则
- 提高程序员工作效率的11个技巧
- 前端学习(487):css选择器下
- Android使用谷歌插件,详解谷歌官方教程 Android插件ADT 9.0.0
- ASP.NET AJAX:Ajax验证(ajax+Handler处理)
- HTML网页设计制作大作业 - 绿色环境保护HTML5网站模板(4个页面)
- 游戏开发入门(十)游戏中的网络模块
- 地理必修一三大类岩石_高中地理必修一知识点总结材料完整版
- 造价员容易漏算的100项内容
- 芥末圈:“知识付费”面具下的币圈割韭菜大本营
- qq对计算机程序的更改,解决电脑总弹出“是否允许程序对计算机进行更改”
- 写给30岁的自己,以及所有即将、正在、已经奔三的朋友们
- 【gcc/g++】1.编译器, 编译过程和基本参数
- Android中自定义注解处理器
- 云端部署 vs 本地化部署
- 关于Java中的finalize方法
- python人脸识别门禁系统生产厂家_人脸识别门禁硬件生产厂家
- 不能打开.mmap文件的解决办法