Python數(shù)據(jù)科學:神經(jīng)網(wǎng)絡
# 極值標準化處理
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)
# 輸出神經(jīng)網(wǎng)絡模型信息
print(mlp)
輸出模型信息如下。
接下來使用經(jīng)過訓練集訓練的模型,對訓練集及測試集進行預測。
# 使用模型進行預測
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]
對模型進行評估,輸出評估數(shù)據(jù)。
# 根據(jù)預測信息輸出模型評估結果
print(metrics.confusion_matrix(test_target, test_predict, labels=[0, 1]))
print(metrics.classification_report(test_target, test_predict))
輸出如下。
模型對流失用戶的f1-score(精確率和召回率的調和平均數(shù))值為0.81,效果不錯。
此外對流失用戶的靈敏度recall為0.83,模型能識別出83%的流失用戶,說明模型識別流失用戶的能力還可以。
輸出模型預測的平均準確度。
# 使用指定數(shù)據(jù)集輸出模型預測的平均準確度
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曲線圖如下。
訓練集和測試集的曲線很接近,沒有過擬合現(xiàn)象。
AUC值為0.9149,說明模型效果非常好。
對模型進行最優(yōu)參數(shù)搜索,并且對最優(yōu)參數(shù)下的模型進行訓練。

請輸入評論內容...
請輸入評論/評論長度6~500個字