• 大小: 13KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-06
  • 语言: Python
  • 标签: 二分类  tensorflow  

资源简介

使用tensorflow集成的神经网络实现的基于糖尿病数据的二分类的python实现,内含代码、分配好的数据集以及调参过程,代码中有详细的注释以及可视化操作。欢迎下载交流!

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-
“““
Created on Fri Oct 26 14:56:45 2018

@author: Fang
“““


import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
#from sklearn.preprocessing import StandardScaler #标准化
#from sklearn.preprocessing import Normalizer
from sklearn.preprocessing import MinMaxScaler
from sklearn.metrics import confusion_matrix

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[::]
    X = training_data[:1:8]
    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[::]
    Y = test_data[:1:8]
    return training_datatest_data
if __name__ == “__main__“:
    #定义神经网络的参数
    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‘

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-24 14:55  基于tensorflow的二分类\
     文件       14268  2018-10-22 22:01  基于tensorflow的二分类\diabetes_data.txt
     文件        9507  2018-10-23 22:00  基于tensorflow的二分类\diabetes_test.txt
     文件        6861  2018-11-12 09:30  基于tensorflow的二分类\tf01.py
     文件        1452  2018-11-08 20:15  基于tensorflow的二分类\调参过程.txt

评论

共有 条评论