Python数据科学:神经网络
# 极值标准化处理
scaler = MinMaxScaler()
scaler.fit(train_data)
scaled_train_data = scaler.transform(train_data)
scaler_test_data = scaler.transform(test_data)
建立多层感知器模型。
# 设置多层感知器对应的模型
mlp = MLPClassifier(hidden_layer_sizes=(10,), activation='logistic', alpha=0.1, max_iter=1000)
# 对训练集进行模型训练
mlp.fit(scaled_train_data, train_target)
# 输出神经网络模型信息
print(mlp)
输出模型信息如下。
接下来使用经过训练集训练的模型,对训练集及测试集进行预测。
# 使用模型进行预测
train_predict = mlp.predict(scaled_train_data)
test_predict = mlp.predict(scaler_test_data)
输出预测概率,用户流失的概率。
# 输出模型预测概率(为1的情况)
train_proba = mlp.predict_proba(scaled_train_data)[:, 1]
test_proba = mlp.predict_proba(scaler_test_data)[:, 1]
对模型进行评估,输出评估数据。
# 根据预测信息输出模型评估结果
print(metrics.confusion_matrix(test_target, test_predict, labels=[0, 1]))
print(metrics.classification_report(test_target, test_predict))
输出如下。
模型对流失用户的f1-score(精确率和召回率的调和平均数)值为0.81,效果不错。
此外对流失用户的灵敏度recall为0.83,模型能识别出83%的流失用户,说明模型识别流失用户的能力还可以。
输出模型预测的平均准确度。
# 使用指定数据集输出模型预测的平均准确度
print(mlp.score(scaler_test_data, test_target))
# 输出值为0.8282828282828283
平均准确度值为0.8282。
计算模型的ROC下面积。
# 绘制ROC曲线
fpr_test, tpr_test, th_test = metrics.roc_curve(test_target, test_proba)
fpr_train, tpr_train, th_train = metrics.roc_curve(train_target, train_proba)
plt.figure(figsize=[3, 3])
plt.plot(fpr_test, tpr_test, 'b--')
plt.plot(fpr_train, tpr_train, 'r-')
plt.title('ROC curve')
plt.show()
# 计算AUC值
print(metrics.roc_auc_score(test_target, test_proba))
# 输出值为0.9149632415075206
ROC曲线图如下。
训练集和测试集的曲线很接近,没有过拟合现象。
AUC值为0.9149,说明模型效果非常好。
对模型进行最优参数搜索,并且对最优参数下的模型进行训练。
最新活动更多
-
即日-1.24立即参与>>> 【限时免费】安森美:Treo 平台带来出色的精密模拟
-
2月28日火热报名中>> 【免费试用】东集技术年终福利——免费试用活动
-
即日-3.21立即报名 >> 【深圳 IEAE】2025 消费新场景创新与实践论坛
-
4日10日立即报名>> OFweek 2025(第十四届)中国机器人产业大会
-
7.30-8.1火热报名中>> 全数会2025(第六届)机器人及智能工厂展
-
即日-2025.8.1立即下载>> 《2024智能制造产业高端化、智能化、绿色化发展蓝皮书》
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论