模型的保存、加載,預測報告的打印

sklearn模型的保存和加載

以xgboost爲例,模型保存學習

from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
model = XGBClassifier(
    silent=0,  # 設置成1則沒有運行信息輸出,最好是設置爲0.是否在運行升級時打印消息。  # nthread=4,# cpu 線程數 默認最大  learning_rate=0.3,  # 如同窗習率  min_child_weight=1,
    # 這個參數默認是 1,是每一個葉子裏面 h 的和至少是多少,對正負樣本不均衡時的 0-1 分類而言  # ,假設 h 在 0.01 附近,min_child_weight 爲 1 意味着葉子節點中最少須要包含 100 個樣本。  # 這個參數很是影響結果,控制葉子節點中二階導的和的最小值,該參數值越小,越容易 overfitting。  max_depth=6,  # 構建樹的深度,越大越容易過擬合  gamma=0,  # 樹的葉子節點上做進一步分區所需的最小損失減小,越大越保守,通常0.一、0.2這樣子。  subsample=1,  # 隨機採樣訓練樣本 訓練實例的子採樣比  max_delta_step=0,  # 最大增量步長,咱們容許每一個樹的權重估計。  colsample_bytree=1,  # 生成樹時進行的列採樣  reg_lambda=1,  # 控制模型複雜度的權重值的L2正則化項參數,參數越大,模型越不容易過擬合。  # reg_alpha=0, # L1 正則項參數  # scale_pos_weight=1, #若是取值大於0的話,在類別樣本不平衡的狀況下有助於快速收斂。平衡正負權重  # objective= 'multi:softmax', #多分類的問題 指定學習任務和相應的學習目標  # num_class=2, # 類別數,多分類與 multisoftmax 並用  objective='binary:logistic',
    n_estimators=100,  # 樹的個數  seed=1000  # 隨機種子  # eval_metric= 'auc' )

model.fit(train_weight, y_train, eval_metric='auc')

# 保存模型 model_path = 'models/xgboost.pkl' with open(model_path, 'wb') as f:
    pickle.dump(model, f)

xgboost模型加載spa

# 加載模型 model_path = 'models/xgboost.pkl' # 加載模型 with open(model_path, 'rb') as f:
    model = pickle.load(f)

預測結果報告打印線程

y_true, y_pred = y_test, model.predict(test_weight)
target_names = ['class 0', 'class 1']
#輸出報告 print(metrics.classification_report(y_true, y_pred, target_names=target_names))
#計算準確率 print("Accuracy : %.4g" % metrics.accuracy_score(y_true, y_pred))
相關文章
相關標籤/搜索