與前兩篇內建建模方式的不同點:
預估器建模:初始化模型:xgb_classifier=xgb.xgbclassifier(引數)
擬合模型:xgb_classifier.fit(x,y)
使用模型**:xgb_classifier.predict(test_x)
內建方式建模:引數設定:
param =
設定watchlist用於檢視模型狀態:
watchlist = [(xgtest,『eval』), (xgtrain,『train』)]
num_round = 10
bst = xgb.train(param, xgtrain, num_round, watchlist)
使用模型**:preds = bst.predict(xgtest)
內建建模方式的優點:1.自定義損失函式 【見下節】
#預估器建模方式(sklearn形態)
#!/usr/bin/python
import warnings
warnings.filterwarnings(
"ignore"
)import numpy as np
import pandas as pd
import pickle
import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.externals import joblib
# 基本例子,從csv檔案中讀取資料,做二分類
# 用pandas讀入資料
data = pd.read_csv(
'data/pima-indians-diabetes.csv'
)#做資料切分
train,test = train_test_split(data)
#去除特徵x和目標y的部分
feature_columns =
['pregnancies', 'glucose', 'bloodpressure', 'skinthickness', 'insulin', 'bmi', 'diabetespedigreefunction', 'age'
]target_column =
'outcome'
train_x = train[feature_columns].values
train_y = train[target_column].values
test_x = test[feature_columns].values
test_y = test[target_column].values
#初始化模型
xgb_classifier = xgb.xgbclassifier(n_estimators=20,\
max_depth=4, \
learning_rate=0.1, \
subsample=0.7, \
colsample_bytree=0.7)
#擬合模型
xgb_classifier.fit(train_x,train_y)
#使用模型**
preds = xgb_classifier.predict(test_x)
#判斷準確率
print(
'錯誤率未%f' %((preds!=test_y).sum(
)/float(test_y.shape[0]))
)#儲存模型
joblib.dump(xgb_classifier,'data/0003.model'
)
xgboost使用one hot編碼方式是否合理
離散特徵為什麼要是用one hot編碼方式 在樹模型中,當類別特徵為數很高時,one hot編碼並不合適 使用one hot coding的話,意味著每乙個決策節點上只能用one vs rest的切分方式,當特徵維度高時,每個類別的資料都會比較少,產生的切分不平衡,切分增益也會很小 會影響決策數的學...
飛行器不同建模方式 姿態表示的區別
在建模過程中將飛行機械人本體視為空間中自由運動的剛體,主要的區別在於力與力矩的產生機制和飛行機械人姿態的描述方法。其中,力與力矩的產生機制主要由飛行機械人的構形和旋翼的拓撲分布決定。飛行機械人的位姿包括質心的位置和相對於慣性系的方向,其中質心的位置可以描述為歐氏空間中的乙個向量,而它的姿態則是滿足某...
CLR載入器(一)使用載入器的方式
載入器往往是隱式地為你工作。程式設計師能夠通過程式集載入器顯式地與載入器進行互動。程式集載入器通 過system.reflection.assembly類的loadfrom靜態方法向程式設計師公開。這個方法接收乙個字串,它可以 是檔案系統路徑,也可以是識別含有程式集清單模組的統一資源定位器。下面 載...