基于基因表达量预测患者患病情况的DNN神经网络模型
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)
原文地址: https://www.cveoy.top/t/topic/mysA 著作权归作者所有。请勿转载和采集!