资源简介
使用tensorflow实现的神经网络二分类,数据集为糖尿病化验数据,其中前八列为特征,第九列为期望结果,准准确率81.75%,内有详细的代码注解,适合新手学习使用

代码片段和文件信息
# -*- coding: utf-8 -*-
“““
Created on Fri Oct 26 14:56:45 2018
@author: Fang
“““
import tensorflow as tf
import numpy as np
from sklearn.preprocessing import StandardScaler #标准化
from sklearn.preprocessing import scale #按行或列标准化
from sklearn.preprocessing import Normalizer
from sklearn.preprocessing import MinMaxScaler
def load_data():
‘‘‘
加载训练集和测试集,并将数据转化为矩阵
training_data 训练集,包含461条数据
test_data 测试集,包含307条数据
‘‘‘
file1 = ‘diabetes_data.txt‘
p = open(file1)
lines = p.readlines()
n = len(lines)
datamat = np.zeros((n9))
row = 0
for i in lines:
i = i.strip().split(‘‘)
datamat[row:] = i[:]
row += 1
training_data = datamat[::]
file2 = ‘diabetes_test.txt‘
p1 = open(file2)
line = p1.readlines()
n1 = len(line)
datamat2 = np.zeros((n19))
row1 = 0
for i in line:
i = i.strip().split(‘‘)
datamat2[row1:] = i[:]
row1 += 1
test_data = datamat2[::]
return training_datatest_data
#定义神经网络的参数
learning_rate = 0.009 #学习率
training_step = 7000 #训练迭代次数
testing_step = 6000 #测试迭代次数
display_step = 1000 #每多少次迭代显示一次损失
#定义输入和输出
x = tf.placeholder(tf.float32shape=(None8)name=“X_train“)
y = tf.placeholder(tf.float32shape=(None1)name=“Y_train“)
#定义模型参数
w = tf.Variable(tf.random_normal([81]stddev=1.0seed=1))
b = tf.Variable(tf.random_normal([1]stddev=1.0seed=1))
#定义神经网络的前向传播过程
#Model = tf.nn.sigmoid(tf.matmul(xw) + b)
Model = tf.nn.tanh(tf.matmul(xw) + b)
#Model = tf.nn.relu(tf.matmul(xw) + b)
“““
对模型进行优化,将Model的值加0.5之后进行取整,
方便测试准确率(若Model>0.5则优化后会取整为1,反之会取整为0)
“““
model = Model + 0.5
model = tf.cast(modeltf.int32)
y_ = tf.cast(ytf.int32)
#Dropout操作:用于防止模型过拟合
keep_prob = tf.placeholder(tf.float32)
Model_drop = tf.nn.dropout(Modelkeep_prob)
#损失函数:交叉熵
cross_entropy = -tf.reduce_mean(y * tf.log(tf.clip_by_value(Model1e-101.0))+(1-y) * tf.log(tf.clip_by_value(1-Model1e-101.0)))
“““
优化函数
即反向传播过程
主要测试了Adam算法和梯度下降算法,Adam的效果较好
“““
#优化器:使用Adadelta算法作为优化函数,来保证预测值与实际值之间交叉熵最小
#optimizer = tf.train.AdamOptimizer(learning_rate).minimize(cross_entropy)
#优化器:梯度下降
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cross_entropy)
#加载数据and数据预处理
#加载
training_datatest_data = load_data()
#训练集
X_train = training_data[::8]
Y_train = training_data[:8:9]
#测试集
X_test = test_data[::8]
Y_test = test_data[:8:9]
#X_test_Mn = StandardScaler().fit_transform(X_test)
b = MinMaxScaler()
X_test_cen = b.fit_transform(X_test)
#1、标准化
#X_train_Mn = StandardScaler().fit_transform(X_train)
#2、正则化 norm为正则化方法:‘l1‘‘l2‘‘max‘
#X_train_nor = Normalizer(norm=‘max‘).fit_transform(X_train)
#3、归一化(centering)
a = M
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2018-11-19 10:08 基于tensorflow的二分类\
文件 14268 2018-10-22 22:01 基于tensorflow的二分类\diabetes_data.txt
文件 9507 2018-10-23 22:00 基于tensorflow的二分类\diabetes_test.txt
文件 5931 2018-11-08 18:59 基于tensorflow的二分类\tf_2.py
相关资源
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
- 量化交易(附python常见函数的使用方
- python 名字用字排行
评论
共有 条评论