资源简介
使用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视频教程
- 《PyTorch生成对抗网络编程》思维导图
- 基于Python实现LFM种子传播算法
- 密码学重合指数计算python实现
- python新手算法函数思想入门项目,包
- 已知空间坐标和对应的属性,利用p
- 小甲鱼pythons视频+课件+源代码(96天)
- 找出最长的句子最长的单词
- 如何封装一个带传参的python程序成可
- 疯狂的python学习笔记
- wxPython写的类似qq截图的小程序
- Python3.6.4+Django2.0.2 单表的增删改查和
- python三边定位模块
- Python帮助手册CHM版
- MIC数据关联性挖掘算法Python源码
- 船舶AIS数据轨迹可视化python代码.rar
- python mysql 简单银行存取款转账系统
- 麦子学院Python全套视频.txt
- python多线程批量端口扫描
- [麻省理工-计算机科学及编程导论][
- python视频教程 老男孩全栈工程师教程
- 读取ros包中rgb和depth图,python代码
- python爬取亚马逊排名
- Python数据分析与机器学习-Python库分析
- 20newsgroup python分类聚类
- 决策树DecisionTree项目python代码实现
- (完整版)python考试复习题库.pdf
- linux 串口模拟 python脚本
- Python安卓QQ5.8协议源码
- Python二级模拟试题
评论
共有 条评论