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

资源简介

使用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

评论

共有 条评论