订阅
纠错
加入自媒体

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  2  3  下一页>  
声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

    人工智能 猎头职位 更多
    扫码关注公众号
    OFweek人工智能网
    获取更多精彩内容
    文章纠错
    x
    *文字标题:
    *纠错内容:
    联系邮箱:
    *验 证 码:

    粤公网安备 44030502002758号