import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import datetime, os
from sklearn.preprocessing import StandardScaler, LabelEncoder
from sklearn.utils import shuffle
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
import tensorflow as tf
from tensorflow import keras
import warnings
warnings.filterwarnings("ignore")
1️⃣数据加载
2️⃣数据可视化分析
3️⃣特征工程
🎯
🎯
🎯
🎯
4️⃣网络搭建与训练
model = keras.models.Sequential()
# 第一层 : 128个node
model.add(keras.layers.Dense(128, activation='relu', input_dim=X_train.shape[1])) # input_dim与特征的数量一致
# 第二层 : 64个node
model.add(keras.layers.Dense(64, activation='relu'))
# 第三层 : 32个node
model.add(keras.layers.Dense(32, activation='relu'))
# 第四层 : 1个输出
model.add(keras.layers.Dense(1, activation='sigmoid')) # sigmoid的输出0或1,对应两种状态
🍒模型编译
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
🍒日志保存
logdir = os.path.join("log", datetime.datetime.now().strftime("%Y%m%d-%H%M%S"))
tensorboard_callback = tf.keras.callbacks.TensorBoard(logdir, histogram_freq=1)
🍒模型训练
output = model.fit(X_train, y_train, batch_size=32, epochs=30, validation_data=(X_test, y_test),callbacks=[tensorboard_callback])
# 显示验证accuracy和loss
plt.figure(figsize=(10,8))
plt.plot(output.history['val_accuracy'], label='val_acc')
plt.plot(output.history['val_loss'], label='val_loss')
plt.legend()
plt.title("Val Result")
plt.show()
5️⃣tensorboard 结果可视化
%load_ext tensorboard
%tensorboard --logdir log --port 6006 # 魔法操作
6️⃣模型评估和预测
y_pred = model.predict(X_test)
y_pred = np.argmax(y_pred,axis=1)
y_pred[:10] # 预测标签类别