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,说明模型效果非常好。
对模型进行最优参数搜索,并且对最优参数下的模型进行训练。
最新活动更多
-
12月12日火热报名中>>> STM32全球线上峰会
-
即日-12.18立即报名>>> 【在线会议】Automation1微纳精密运动控制系统
-
12月19日立即报名>> 【线下会议】OFweek 2024(第九届)物联网产业大会
-
即日-12.26立即报名>>> 【在线会议】村田用于AR/VR设计开发解决方案
-
1月8日火热报名中>> Allegro助力汽车电气化和底盘解决方案优化在线研讨会
-
即日-1.14火热报名中>> OFweek2025中国智造CIO在线峰会
推荐专题
发表评论
请输入评论内容...
请输入评论/评论长度6~500个字
暂无评论
暂无评论