import tensorflow as tf import pandas as pd import numpy as np

读取 Excel 表格

data = pd.read_excel('C:\Users\lenovo\Desktop\HIV\DNN神经网络测试\data1.xlsx')

将数据分成特征和标签

X = data.iloc[:, 1:].values y = data.iloc[:, 0].values

将标签转化为 one-hot 编码

y_one_hot = pd.get_dummies(y).values

定义第一个模型

model1 = tf.keras.models.Sequential([ tf.keras.layers.Dense(128, activation='relu', input_shape=(X.shape[1],)), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(64, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(8, activation='softmax') ])

编译第一个模型

model1.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

训练第一个模型

history1 = model1.fit(X, y_one_hot, batch_size=32, epochs=50)

输出第一个模型的准确率和损失值

loss1, acc1 = model1.evaluate(X, y_one_hot) print('Model 1 Accuracy:', acc1) print('Model 1 Loss:', loss1)

定义第二个模型

model2 = tf.keras.models.Sequential([ tf.keras.layers.Dense(64, activation='relu', input_shape=(8,)), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(32, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(16, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(4, activation='softmax') ])

编译第二个模型

model2.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])

用第一个模型的输出作为输入来训练第二个模型

X_model2 = model1.predict(X) history2 = model2.fit(X_model2, y_one_hot, batch_size=32, epochs=50)

输出第二个模型的准确率和损失值

loss2, acc2 = model2.evaluate(X_model2, y_one_hot) print('Model 2 Accuracy:', acc2) print('Model 2 Loss:', loss2)

定义第三个模型

model3 = tf.keras.models.Sequential([ tf.keras.layers.Dense(32, activation='relu', input_shape=(4,)), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(16, activation='relu'), tf.keras.layers.Dropout(0.2), tf.keras.layers.Dense(1, activation='sigmoid') ])

编译第三个模型

model3.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

用第二个模型的输出作为输入来训练第三个模型

X_model3 = model2.predict(X_model2) history3 = model3.fit(X_model3, y, batch_size=32, epochs=50)

输出第三个模型的准确率和损失值

loss3, acc3 = model3.evaluate(X_model3, y) print('Model 3 Accuracy:', acc3) print('Model 3 Loss:', loss3)

基于基因表达量预测患者患病情况的DNN神经网络模型

原文地址: https://www.cveoy.top/t/topic/mysA 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录