当前位置: 智能网 > 人工智能 > Python数据科学:神经网络

Python数据科学:神经网络

放大字体 缩小字体 发布日期:2019-05-28 21:06:22   浏览次数:1008


# 极值标准化处理

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

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

3  
 

[ 智能网搜索 ]  [ 打印本文 ]  [ 违规举报

猜你喜欢

 
推荐图文
ITECH直流电源在人工智能领域的应用 基于朴素贝叶斯自动过滤垃圾广告
2020年是人工智能相关业务发展的重要一年 我国人工智能市场规模、行业短板、发展前景一览
推荐智能网
点击排行

 
 
新能源网 | 锂电网 | 智能网 | 环保设备网 | 联系方式