#系统核心事务逻辑处理代码
importsysimportosimportcx_Oracleimportnumpy as npimportpandas as pdimporttensorflow as tf
conn=cx_Oracle.connect('doctor/admin@localhost:1521/tszr')
cursor=conn.cursor()defshowSurgest():
sql= 'select distinct SURGERY from menzhen'cursor.execute(sql)
rows=cursor.fetchall()
surgery=[]for row inrows:
surgery.append(row[0])for i inrange(len(surgery)):print(surgery[i])defshowSujects(surgest):
sql= "select distinct SURGERYCHEST from menzhen where SURGERY='%s'" %surgest
cursor.execute(sql)
rows=cursor.fetchall()
sujects=[]for row inrows:
sujects.append(row[0])for i inrange(len(sujects)):print(sujects[i])defshowQuestion(sujects):
sql= "select QUESTION from QUESTTB where ILLSUBJECT='%s'" %sujects
cursor.execute(sql)
rows=cursor.fetchall()
question= ""
for row inrows:
question+=row[0]
question= question.split(',')returnquestiondefgetQuestion(sujects):
quest=showQuestion(sujects)for i inrange(len(quest)):print('你是否'+quest[i]+':')defgetTrainData(sujects):
sql= "select feature1,feature2,feature3,feature4,feature5,trainLable from menzhen where surgeryChest='%s'" %(sujects)
cursor.execute(sql)
rows= cursor.fetchall() #得到所有数据集
trainDataSet =[]for row inrows:
oneLine=[]
oneLine.append(row[0])
oneLine.append(row[1])
oneLine.append(row[2])
oneLine.append(row[3])
oneLine.append(row[4])
oneLine.append(row[5])
trainDataSet.append(oneLine)
trainData=[]
trainLabel=[]for i inrange(len(trainDataSet)):
trainData.append(trainDataSet[i][:-1])
trainLabel.append(trainDataSet[i][-1])
X=trainData
Y_=trainLabel
Y_= np.reshape(Y_,(-1,1))returnX,Y_defcountWeights(X,Y_):#定义神经网络参数
CLASS_NUM = 1DEEP_OUT= 5bias1= 5DEEP_TWO= 1Bias2= 1LEARN_RACE= 0.0001
#定义神经网络
#定义训练数据x,y_
x = tf.placeholder(tf.float32, shape=(None, 5))
y_= tf.placeholder(tf.float32, shape=(None, 1))#定义第一层(隐藏层)神经网络
w1 = tf.Variable(tf.random_normal([5, 5], stddev=1, seed=1))
bias1= tf.Variable(tf.random_normal([5]))#定义输出层
w2 = tf.Variable(tf.random_normal([5, 1], stddev=1, seed=1))
bias2= tf.Variable(tf.random_normal([1]))#神经网络前向传播过程
#第一层神经网络层传播
a =tf.matmul(x, w1)
a=tf.nn.bias_add(a,bias1)
a=tf.nn.relu(a)#第二层(输出层)神经网络层传播
y =tf.matmul(a, w2)
y=tf.nn.bias_add(y,bias2)#定义损失函数进行反向传播优化修改权值
#使用均方误差损失函数
loss_mse = tf.reduce_mean(tf.square(y -y_))#选择一个优化器
#随机梯度下降优化算法#train_step = tf.train.GradientDescentOptimizer(LEARN_RACE).minimize(loss_mse)
#移动动量优化算法
train_step = tf.train.MomentumOptimizer(LEARN_RACE,0.9).minimize(loss_mse)#亚当优化算法#train_step = tf.train.AdamOptimizer(LEARN_RACE).minimize(loss_mse)
#比较预测值与真实值
correct_pred=tf.equal(y,y_)#计算每个batch的平均准确率
accuracy=tf.reduce_mean(tf.cast(correct_pred,tf.float32))#神经网络的执行
#定义算法执行参数
STEPS = 1BATCH_SIZE= 8TRAIN_ROW=np.shape(X)[0]
BATCH_NUM= int(TRAIN_ROW/BATCH_SIZE)
with tf.Session() as sess:
init=tf.global_variables_initializer()
sess.run(init)for i inrange(STEPS):for j inrange(BATCH_NUM):
start= (j * BATCH_SIZE) %np.shape(X)[0]
end= start +BATCH_SIZE
sess.run(train_step, feed_dict={x: X[start:end], y_: Y_[start:end]})if j % 200 ==0:
total_loss= sess.run(loss_mse, feed_dict={x: X, y_: Y_})#print("After %d training step(s), accuracy on all data is %.4f%%" % (i,((1-total_loss)*100)))
w = w2.eval(session=sess)
weights=[]for i inrange(len(w)):
weights.append(w[i][0])returnweightsdefgetAnswer(a1,a2,a3,a4,a5):
answers=[]
answers.append(int(a1))
answers.append(int(a2))