1 Star 0 Fork 0

tony_cao/DeepLearning

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
pred_churn_rate_use_MLPAndDropout.py 2.77 KB
一键复制 编辑 原始数据 按行查看 历史
tony_cao 提交于 2025-01-21 17:20 +08:00 . update file load path
# 主题:使用多层感知机模型并添加Dropout层来优化模型
import os
os.environ['TF_ENABLE_ONEDNN_OPTS'] = '0'
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import classification_report
from keras.src.models import Sequential # 导入Keras库序贯模型
from keras.src.layers import Dense # 导入Keras库全(密集)连接层
from keras.src.layers import Dropout # 导入Keras库Dropout层
# 1. 加载数据集
bank_data_frame = pd.read_csv('shallow-neural-networks\\BankCustomers.csv')
# 2. 数据预处理
## a. 忽略与预测结果不相关的特征
# axis的值默认为0,指删除行,删除列数据时要指定axis=1
bank_data_frame = bank_data_frame.drop('Surname', axis=1)
## b. 二元类别特征,转换成值为0或1的格式
bank_data_frame['Gender'].replace('Male', 0, inplace=True)
bank_data_frame['Gender'].replace('Female', 1, inplace=True)
## c. 多元类别特征,转换成多个二元哑变量
# 将Geography列的值,按行和列分别展开,映射成一个二维数组
geography = pd.get_dummies(bank_data_frame['Geography'], prefix='Geography')
# 将geography与原先的bank_data_frame一起组成DataFrame类型的数组
bank_data_frame = [bank_data_frame, geography]
# 将两个数组合并成一个
bank_data_frame = pd.concat(bank_data_frame, axis=1)
# d. 拆分数据集
y = bank_data_frame['Exited']
X = bank_data_frame.drop(['Exited', 'Geography'], axis=1)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# e. 特征缩放
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# 3. 模型处理
# 第一步:导入神经网络模型
model = Sequential()
# 第二步:添加网络层
model.add(Dense(12, input_dim=14, activation='relu'))
model.add(Dense(24, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(48, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(96, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(192, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation="sigmoid"))
model.summary()
## 第三步:编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
## 第四步:训练模型
history = model.fit(X_train, y_train, epochs=30, batch_size=64, validation_data=(X_test, y_test))
# 第五步:预测模型
y_pred = model.predict(X_test, batch_size=10)
# 第六步:评估模型
y_pred = np.round(y_pred)
def shwo_report(y_test, y_pred):
if(y_test.shape != (2000, 1)):
y_test = y_test.values
y_test = y_test.reshape(len(y_test), 1)
print(classification_report(y_test, y_pred, labels=[0, 1]))
shwo_report(y_test, y_pred)
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/tony_cao/deep-learning.git
git@gitee.com:tony_cao/deep-learning.git
tony_cao
deep-learning
DeepLearning
master

搜索帮助