基于bankpep数据集,使用keras深度神经网络建立分类模型,记录模型在测试集上的性能
时间: 2024-05-11 08:20:08 浏览: 8
首先,我们需要加载数据集并进行预处理。bankpep数据集包含了银行客户的个人和财务信息,我们的任务是预测客户是否需要被监测。我们可以使用Pandas库来加载和预处理数据集:
```python
import pandas as pd
# 加载数据集
data = pd.read_csv('bankpep.csv')
# 将分类变量转换为数值变量
data['sex'] = data['sex'].map({'FEMALE': 0, 'MALE': 1})
data['region'] = data['region'].map({'INNER_CITY': 0, 'RURAL': 1, 'SUBURBAN': 2, 'TOWN': 3})
data['married'] = data['married'].map({'NO': 0, 'YES': 1})
data['car'] = data['car'].map({'NO': 0, 'YES': 1})
data['save_act'] = data['save_act'].map({'NO': 0, 'YES': 1})
data['current_act'] = data['current_act'].map({'NO': 0, 'YES': 1})
data['mortgage'] = data['mortgage'].map({'NO': 0, 'YES': 1})
data['pep'] = data['pep'].map({'NO': 0, 'YES': 1})
# 将数据集划分为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(data.drop('pep', axis=1), data['pep'], test_size=0.3)
```
接下来,我们可以使用Keras库来构建深度神经网络模型。我们将使用一个包含3个隐藏层的全连接神经网络,每个隐藏层包含32个神经元,激活函数为ReLU。输出层是一个具有sigmoid激活函数的单个神经元,用于二元分类。
```python
from keras.models import Sequential
from keras.layers import Dense
# 构建模型
model = Sequential()
model.add(Dense(32, activation='relu', input_dim=X_train.shape[1]))
model.add(Dense(32, activation='relu'))
model.add(Dense(32, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# 编译模型
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# 训练模型
model.fit(X_train, y_train, epochs=50, batch_size=10, verbose=0)
```
最后,我们可以使用测试集来评估模型的性能。我们将输出模型的准确度和F1分数。
```python
from sklearn.metrics import accuracy_score, f1_score
# 预测测试集
y_pred = model.predict_classes(X_test)
# 输出准确度和F1分数
print("Accuracy: ", accuracy_score(y_test, y_pred))
print("F1 Score: ", f1_score(y_test, y_pred))
```
根据算法的不同,分类模型的性能可能有所不同。如果我们的模型的准确度和F1分数较低,我们可以尝试使用其他算法或调整模型的超参数来提高性能。