Python数据科学:神经网络

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,说明模型效果非常好。

对模型进行最优参数搜索,并且对最优参数下的模型进行训练。

声明: 本文由入驻OFweek维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。
侵权投诉

下载OFweek,一手掌握高科技全行业资讯

还不是OFweek会员,马上注册
打开app,查看更多精彩资讯 >
  • 长按识别二维码
  • 进入OFweek阅读全文
长按图片进行保存