成立多层感知器模子。
- # 配置多层感知器对应的模子
- 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,声名模子结果很是好。
对模子举办最优参数搜刮,而且对最优参数下的模子举办实习。
- # 行使GridSearchCV举办最优参数搜刮
- param_grid = {
- # 模子隐层数目
- 'hidden_layer_sizes': [(10, ), (15, ), (20, ), (5, 5)],
- # 激活函数
- 'activation': ['logistic', 'tanh', 'relu'],
- # 正则化系数
- 'alpha': [0.001, 0.01, 0.1, 0.2, 0.4, 1, 10]
- }
-
- mlp = MLPClassifier(max_iter=1000)
- # 选择roc_auc作为评判尺度,4折交错验证,n_jobs=-1行使多核CPU的所有线程
- gcv = GridSearchCV(estimator=mlp, param_grid=param_grid,
- scoring='roc_auc', cv=4, n_jobs=-1)
- gcv.fit(scaled_train_data, train_target)
输出最优参数的模子的环境。
- # 输出最优参数下模子的得分
- print(gcv.best_score_)
- # 输出值为0.9258018987136855
-
- # 输出最优参数下模子的参数
- print(gcv.best_params_)
- # 输出参数值为{'alpha': 0.01, 'activation': 'tanh', 'hidden_layer_sizes': (5, 5)}
-
- # 行使指定命据集输出最优模子猜测的均匀精确度
- print(gcv.score(scaler_test_data, test_target))
- # 输出值为0.9169384823390232
模子的roc_auc最高得分为0.92,即该模子下的ROC曲线下面积为0.92。
较之前的0.9149,进步了一点点。
模子的最优参数,激活函数为relu范例,alpha为0.01,潜匿层节点数为15个。
模子的猜测均匀精确率为0.9169,较之前的0.8282,进步了不少。 (编辑:湖南网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|