XGBoost 与 信用卡诈骗数据集 二
生活随笔
收集整理的這篇文章主要介紹了
XGBoost 与 信用卡诈骗数据集 二
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解決了之前的問題,成功使用 sklearn API
import sklearn as sk import xgboost as xgb import numpy as np import pandas as pd from sklearn.model_selection import train_test_split # 功能:數據集按比例切分為訓練集和測試集 from sklearn.metrics import precision_score from sklearn.metrics import recall_score from sklearn.preprocessing import scale # 數據集標準化 import matplotlib.pyplot as plt from pandas_ml import ConfusionMatrix # 引入混淆矩陣 from xgboost.sklearn import XGBClassifierdf = pd.read_csv('creditcard.csv', low_memory=False)X = df.iloc[:,:-1] # 基于位置的純整數索引 y = df['Class'] # 類別 X_scaled = scale(X) # 標準化train_X, test_X, train_y, test_y = train_test_split(X, y, test_size=0.35 ,random_state = 12) # dtrain = xgb.DMatrix(train_X, label = train_y) # dtest = xgb.DMatrix(test_X, label = test_y)XGBC = xgb.XGBClassifier(gamma = 0.1, # Gamma指定了節點分裂所需的最小損失函數下降值,值越大,算法越保守。learning_rate = 0.3, # 學習速率max_delta_step = 0, # 限制每棵樹權重改變的最大步長。0為沒有限制,越大越保守。可用于樣本不平衡的時候。max_depth = 5, # 樹的最大深度min_child_weight = 6, # 最小葉子節點樣本權重和。低避免過擬合,太高導致欠擬合。missing = None, # 如果有缺失值則替換。默認 None 就是 np.nann_estimators = 250, # 樹的數量nthread = 8, # 并行線程數量objective = 'binary:logistic', # 指定學習任務和相應的學習目標或要使用的自定義目標函數#'objective':'multi:softprob', # 定義學習任務及相應的學習目標#'objective':'reg:linear', # 線性回歸#'objective':'reg:logistic', # 邏輯回歸#'objective':'binary:logistic', # 二分類的邏輯回歸問題,輸出為概率#'objective':'binary:logitraw', # 二分類的邏輯回歸問題,輸出結果為 wTx,wTx指機器學習線性模型f(x)=wTx+b#'objective':'count:poisson' # 計數問題的poisson回歸,輸出結果為poisson分布#'objective':'multi:softmax' # 讓XGBoost采用softmax目標函數處理多分類問題,同時需要設置參數num_class#'objective':'multi:softprob' # 和softmax一樣,但是輸出的是ndata * nclass的向量,# 可以將該向量reshape成ndata行nclass列的矩陣。# 每行數據表示樣本所屬于每個類別的概率。reg_alpha = 1, # 權重的L1正則化項。默認1reg_lambda = 1, # 權重的L2正則化項。默認1scale_pos_weight = 10000, # 數字變大,會增加對少量詐騙樣本的學習權重,這里10000比較好seed = 0, # 隨機種子silent = True, # 靜默模式開啟,不會輸出任何信息subsample = 0.9, # 控制對于每棵樹,隨機采樣的比例。減小會更加保守,避免過擬,過小會導致欠擬合。base_score = 0.5) # 所有實例的初始預測評分,全局偏差 bst = XGBC.fit(train_X, train_y) preds = bst.predict(test_X) # 對測試集作出預測 print("訓練完成")# 精確度(Precision): # P = TP/(TP+FP) ; 反映了被分類器判定的正例中真正的正例樣本的比重 print("精確度(Precision):", precision_score(test_y, preds, average='macro')) # ?? % print("召回率(Recall):", recall_score(test_y, preds, average='macro')) # ?? %predicted_y = np.array(preds) right_y = np.array(test_y)# 混淆矩陣的每一列代表了預測類別, # 每一列的總數表示預測為該類別的數據的數目; # 每一行代表了數據的真實歸屬類別, # 每一行的數據總數表示該類別的數據實例的數目。 confusion_matrix = ConfusionMatrix(right_y, predicted_y) # print("Confusion matrix:\n%s" % confusion_matrix) # confusion_matrix.plot(normalized=True) # plt.show() confusion_matrix.print_stats()''' population: 99683 P: 176 N: 99507 PositiveTest: 170 NegativeTest: 99513 TP: 147 TN: 99484 FP: 23 FN: 29 TPR: 0.835227272727 TNR: 0.999768860482 PPV: 0.864705882353 NPV: 0.999708580788 FPR: 0.000231139517823 FDR: 0.135294117647 FNR: 0.164772727273 ACC: 0.999478346358 F1_score: 0.849710982659 MCC: 0.849577974181 informedness: 0.834996133209 markedness: 0.864414463141 prevalence: 0.00176559694231 LRP: 3613.52000988 LRN: 0.164810821567 DOR: 21925.2593703 FOR: 0.00029141921156s '''
可以看出,增加了詐騙樣本的學習權重,但是改進效果不是很好。
總結
以上是生活随笔為你收集整理的XGBoost 与 信用卡诈骗数据集 二的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 3dmaxobj导出选项_3DMAX怎么
- 下一篇: Maya Python脚本导出OBJ