㈠ xgboost的python包有多少參數
XGBoost參數
XGBoost的參數可以分為三種類型:通用參數、booster參數以及學習目標參數
General parameters:參數控制在提升(boosting)過程中使用哪種booster,常用的booster有樹模型(tree)和線性模型(linear model)。
Booster parameters:這取決於使用哪種booster。
Learning Task parameters:控制學習的場景,例如在回歸問題中會使用不同的參數控制排序。
除了以上參數還可能有其它參數,在命令行中使用
General Parameters
booster [default=gbtree]
有兩種模型可以選擇gbtree和gblinear。gbtree使用基於樹的模型進行提升計算,gblinear使用線性模型進行提升計算。預設值為gbtree
silent [default=0]
取0時表示列印出運行時信息,取1時表示以緘默方式運行,不列印運行時的信息。預設值為0
建議取0,過程中的輸出數據有助於理解模型以及調參。另外實際上我設置其為1也通常無法緘默運行。。
nthread [default to maximum number of threads available if not set]
XGBoost運行時的線程數。預設值是當前系統可以獲得的最大線程數
如果你希望以最大速度運行,建議不設置這個參數,模型將自動獲得最大線程
num_pbuffer [set automatically by xgboost, no need to be set by user]
size of prediction buffer, normally set to number of training instances. The buffers are used to save the prediction results of last boosting step.
num_feature [set automatically by xgboost, no need to be set by user]
boosting過程中用到的特徵維數,設置為特徵個數。XGBoost會自動設置,不需要手工設置
Booster Parameters
From xgboost-unity, thebst:prefix is no longer needed for booster parameters. Parameter with or without bst: prefix will be equivalent(i.e. both bst:eta and eta will be valid parameter setting) .
Parameter for Tree Booster
eta [default=0.3]
為了防止過擬合,更新過程中用到的收縮步長。在每次提升計算之後,演算法會直接獲得新特徵的權重。 eta通過縮減特徵的權重使提升計算過程更加保守。預設值為0.3
取值范圍為:[0,1]
通常最後設置eta為0.01~0.2
gamma [default=0]
minimum loss rection required to make a further partition on a leaf node of the tree. the larger, the more conservative the algorithm will be.
range: [0,∞]
模型在默認情況下,對於一個節點的劃分只有在其loss function 得到結果大於0的情況下才進行,而gamma 給定了所需的最低loss function的值
gamma值使得演算法更conservation,且其值依賴於loss function ,在模型中應該進行調參。
max_depth [default=6]
樹的最大深度。預設值為6
取值范圍為:[1,∞]
指樹的最大深度
樹的深度越大,則對數據的擬合程度越高(過擬合程度也越高)。即該參數也是控制過擬合
建議通過交叉驗證(xgb.cv ) 進行調參
通常取值:3-10
min_child_weight [default=1]
孩子節點中最小的樣本權重和。如果一個葉子節點的樣本權重和小於min_child_weight則拆分過程結束。在現行回歸模型中,這個參數是指建立每個模型所需要的最小樣本數。該成熟越大演算法越conservative。即調大這個參數能夠控制過擬合。
取值范圍為: [0,∞]
max_delta_step [default=0]
Maximum delta step we allow each tree』s weight estimation to be. If the value is set to 0, it means there is no constraint. If it is set to a positive value, it can help making the update step more conservative. Usually this parameter is not needed, but it might help in logistic regression when class is extremely imbalanced. Set it to value of 1-10 might help control the update
取值范圍為:[0,∞]
如果取值為0,那麼意味著無限制。如果取為正數,則其使得xgboost更新過程更加保守。
通常不需要設置這個值,但在使用logistics 回歸時,若類別極度不平衡,則調整該參數可能有效果
subsample [default=1]
用於訓練模型的子樣本占整個樣本集合的比例。如果設置為0.5則意味著XGBoost將隨機的從整個樣本集合中抽取出50%的子樣本建立樹模型,這能夠防止過擬合。
取值范圍為:(0,1]
colsample_bytree [default=1]
在建立樹時對特徵隨機采樣的比例。預設值為1
取值范圍:(0,1]
colsample_bylevel[default=1]
決定每次節點劃分時子樣例的比例
通常不使用,因為subsample和colsample_bytree已經可以起到相同的作用了
scale_pos_weight[default=0]
A value greater than 0 can be used in case of high class imbalance as it helps in faster convergence.
大於0的取值可以處理類別不平衡的情況。幫助模型更快收斂
Parameter for Linear Booster
lambda [default=0]
L2 正則的懲罰系數
用於處理XGBoost的正則化部分。通常不使用,但可以用來降低過擬合
alpha [default=0]
L1 正則的懲罰系數
當數據維度極高時可以使用,使得演算法運行更快。
lambda_bias
在偏置上的L2正則。預設值為0(在L1上沒有偏置項的正則,因為L1時偏置不重要)
Task Parameters
objective [ default=reg:linear ]
定義學習任務及相應的學習目標,可選的目標函數如下:
「reg:linear」 –線性回歸。
「reg:logistic」 –邏輯回歸。
「binary:logistic」 –二分類的邏輯回歸問題,輸出為概率。
「binary:logitraw」 –二分類的邏輯回歸問題,輸出的結果為wTx。
「count:poisson」 –計數問題的poisson回歸,輸出結果為poisson分布。
在poisson回歸中,max_delta_step的預設值為0.7。(used to safeguard optimization)
「multi:softmax」 –讓XGBoost採用softmax目標函數處理多分類問題,同時需要設置參數num_class(類別個數)
「multi:softprob」 –和softmax一樣,但是輸出的是ndata * nclass的向量,可以將該向量reshape成ndata行nclass列的矩陣。每行數據表示樣本所屬於每個類別的概率。
「rank:pairwise」 –set XGBoost to do ranking task by minimizing the pairwise loss
base_score [ default=0.5 ]
the initial prediction score of all instances, global bias
eval_metric [ default according to objective ]
校驗數據所需要的評價指標,不同的目標函數將會有預設的評價指標(rmse for regression, and error for classification, mean average precision for ranking)
用戶可以添加多種評價指標,對於Python用戶要以list傳遞參數對給程序,而不是map參數list參數不會覆蓋』eval_metric』
The choices are listed below:
「rmse」:root mean square error
「logloss」: negativelog-likelihood
「error」:Binary classification error rate. It is calculated as #(wrong cases)/#(all cases). For the predictions, the evaluation will regard the instances with prediction value larger than 0.5 as positive instances, and the others as negative instances.
「merror」:Multiclass classification error rate. It is calculated as #(wrong cases)/#(all cases).
「mlogloss」: Multiclass logloss
「auc」:Area under the curvefor ranking evaluation.
「ndcg」:Normalized Discounted Cumulative Gain
「map」:Mean average precision
「ndcg@n」,」map@n」: n can be assigned as an integer to cut off the top positions in the lists for evaluation.
「ndcg-「,」map-「,」ndcg@n-「,」map@n-「: In XGBoost, NDCG and MAP will evaluate the score of a list without any positive samples as 1. By adding 「-」 in the evaluation metric XGBoost will evaluate these score as 0 to be consistent under some conditions.
training repeatively
seed [ default=0 ]
隨機數的種子。預設值為0
可以用於產生可重復的結果(每次取一樣的seed即可得到相同的隨機劃分)
Console Parameters
The following parameters are only used in the console version of xgboost
* use_buffer [ default=1 ]
- 是否為輸入創建二進制的緩存文件,緩存文件可以加速計算。預設值為1
* num_round
- boosting迭代計算次數。
* data
- 輸入數據的路徑
* test:data
- 測試數據的路徑
* save_period [default=0]
- 表示保存第i*save_period次迭代的模型。例如save_period=10表示每隔10迭代計算XGBoost將會保存中間結果,設置為0表示每次計算的模型都要保持。
* task [default=train] options: train, pred, eval, mp
- train:訓練模型
- pred:對測試數據進行預測
- eval:通過eval[name]=filenam定義評價指標
- mp:將學習模型保存成文本格式
* model_in [default=NULL]
- 指向模型的路徑在test, eval, mp都會用到,如果在training中定義XGBoost將會接著輸入模型繼續訓練
* model_out [default=NULL]
- 訓練完成後模型的保存路徑,如果沒有定義則會輸出類似0003.model這樣的結果,0003是第三次訓練的模型結果。
* model_dir [default=models]
- 輸出模型所保存的路徑。
* fmap
- feature map, used for mp model
* name_mp [default=mp.txt]
- name of model mp file
* name_pred [default=pred.txt]
- 預測結果文件
* pred_margin [default=0]
- 輸出預測的邊界,而不是轉換後的概率
如果你比較習慣scikit-learn的參數形式,那麼XGBoost的Python 版本也提供了sklearn形式的介面XGBClassifier。它使用sklearn形式的參數命名方式,對應關系如下:
eta –> learning_rate
lambda –> reg_lambda
alpha –> reg_alpha
㈡ python 怎麼求標准正態分布某個值
示例:
1、from numpy import *;
2、def rand_Matrix():
3、randArr=random.randn(2,3);
4、randMat=mat(randArr);
5、return randMat;
一種結果如下:
1、matrix([[ 0.3150869 , -0.02041996, -0.15361071],
2、[-0.75507988, 0.80393683, -0.31790917]])
(2)ndcg3怎麼算python擴展閱讀
Python正態分布概率計算方法:
def st_norm(u):
'''標准正態分布'''
import math
x=abs(u)/math.sqrt(2)
T=(0.0705230784,0.0422820123,0.0092705272,
0.0001520143,0.0002765672,0.0000430638)
E=1-pow((1+sum([a*pow(x,(i+1))
for i,a in enumerate(T)])),-16)
p=0.5-0.5*E if u<0 else 0.5+0.5*E
return(p)
def norm(a,sigma,x):
'''一般正態分布'''
u=(x-a)/sigma
return(st_norm(u))
while 1:
'''輸入一個數時默認為標准正態分布
輸入三個數(空格隔開)時分別為期望、方差、x
輸入 stop 停止'''
S=input('please input the parameters: ')
if S=='stop':break
try:
L=[float(s) for s in S.split()]
except:
print('Input error!')
continue
if len(L)==1:
print('f(x)=%.5f'%st_norm(L[0]))
elif len(L)==3:
print('f(x)=%.5f'%norm(L[0],L[1],L[2]))
else:
print('Input error!')
㈢ 使用python演算法如何解
解決方案
從一些測試案例開始總是好的做法。讓我們從小的案例開始,看看能否找到某種規律。
.N=1,1種爬樓方式:[1]
.N=2,2種爬樓方式:[1,1],[2]
.N=3,3種爬樓方式:[1,2],[1,1,1],[2,1]
.N=4,5種爬樓方式:[1,1,2],[2,2],[1,2,1],[1,1,1,1],[2,1,1]
你有沒有注意到什麼?請看N=3時,爬完3階樓梯的方法數量是3,基於N=1和N=2。存在什麼關系?
爬完N=3的兩種方法是首先達到N=1,然後再往上爬2步,或達到N=2再向上爬1步。所以f(3)=f(2)+f(1)。
這對N=4是否成立呢?是的,這也是成立的。因為我們只能在達到第三個台階然後再爬一步,或者在到了第二個台階之後再爬兩步這兩種方式爬完4個台階。所以f(4)=f(3)+f(2)。
所以關系如下:f(n)=f(n–1)+f(n–2),且f(1)=1和f(2)=2。這就是斐波那契數列。
deffibonacci(n):
ifn<=1:
return1
returnfibonacci(n-1)+fibonacci(n-2)
當然,這很慢(O(2^N))——我們要做很多重復的計算!通過迭代計算,我們可以更快:
deffibonacci(n):
a,b=1,2
for_inrange(n-1):
a,b=b,a+b
returna
現在,讓我們嘗試概括我們學到的東西,看看是否可以應用到從集合X中取步數這個要求下的爬樓梯。類似的推理告訴我們,如果X={1,3,5},那麼我們的演算法應該是f(n)=f(n–1)+f(n–3)+f(n–5)。如果n<0,那麼我們應該返回0,因為我們不能爬負數。
defstaircase(n,X):
ifn<0:
return0
elifn==0:
return1
elifninX:
return1+sum(staircase(n-x,X)forxinXifx<n)
else:
returnsum(staircase(n-x,X)forxinXifx<n)
這也很慢(O(|X|^N)),因為也重復計算了。我們可以使用動態編程來加快速度。
每次的輸入cache[i]將包含我們可以用集合X到達台階i的方法的數量。然後,我們將使用與之前相同的遞歸從零開始構建數組:
defstaircase(n,X):
cache=[0for_inrange(n+1)]
cache[0]=1
foriinrange(n+1):
cache[i]+=sum(cache[i-x]forxinXifi-x>0)
cache[i]+=1ifiinXelse0
returncache[-1]
現在時間復雜度為O(N*|X|),空間復雜度為O(N)。
㈣ Python氣象數據處理與繪圖(2):常用數據計算方法
對於氣象繪圖來講,第一步是對數據的處理,通過各類公式,或者統計方法將原始數據處理為目標數據。
按照氣象統計課程的內容,我給出了一些常用到的統計方法的對應函數:
在計算氣候態,區域平均時均要使用到求均值函數,對應NCL中的dim_average函數,在python中通常使用np.mean()函數
numpy.mean(a, axis, dtype)
假設a為[time,lat,lon]的數據,那麼
需要特別注意的是,氣象數據中常有缺測,在NCL中,使用求均值函數會自動略過,而在python中,當任意一數與缺測(np.nan)計算的結果均為np.nan,比如求[1,2,3,4,np.nan]的平均值,結果為np.nan
因此,當數據存在缺測數據時,通常使用np.nanmean()函數,用法同上,此時[1,2,3,4,np.nan]的平均值為(1+2+3+4)/4 = 2.5
同樣的,求某數組最大最小值時也有np.nanmax(), np.nanmin()函數來補充np.max(), np.min()的不足。
其他很多np的計算函數也可以通過在前邊加『nan』來使用。
另外,
也可以直接將a中缺失值全部填充為0。
np.std(a, axis, dtype)
用法同np.mean()
在NCL中有直接求數據標准化的函數dim_standardize()
其實也就是一行的事,根據需要指定維度即可。
皮爾遜相關系數:
相關可以說是氣象科研中最常用的方法之一了,numpy函數中的np.corrcoef(x, y)就可以實現相關計算。但是在這里我推薦scipy.stats中的函數來計算相關系數:
這個函數缺點和有點都很明顯,優點是可以直接返回相關系數R及其P值,這避免了我們進一步計算置信度。而缺點則是該函數只支持兩個一維數組的計算,也就是說當我們需要計算一個場和一個序列的相關時,我們需要循環來實現。
其中a[time,lat,lon],b[time]
(NCL中為regcoef()函數)
同樣推薦Scipy庫中的stats.linregress(x,y)函數:
slop: 回歸斜率
intercept:回歸截距
r_value: 相關系數
p_value: P值
std_err: 估計標准誤差
直接可以輸出P值,同樣省去了做置信度檢驗的過程,遺憾的是仍需同相關系數一樣循環計算。
㈤ python里怎麼計算信息增益,信息增益比,基尼指數
1、首先自定義一份數據,分別計算信息熵,條件信息熵,從而計算信息增益。
㈥ 在邏輯回歸中,odds ratio怎麼用python計算
實際上完成邏輯回歸是相當簡單的,首先指定要預測變數的列,接著指定模型用於做預測的列,剩下的就由演算法包去完成了。
本例中要預測的是admin列,使用到gre、gpa和虛擬變數prestige_2、prestige_3、prestige_4。prestige_1作為基準,所以排除掉,以防止多元共線性(multicollinearity)和引入分類變數的所有虛擬變數值所導致的陷阱(mmy variable trap)。
程序縮進如圖所示
㈦ python立方怎麼表示
直接可以利用冪運算符, 比如3的立方, 可以直接用 3**3 , 2的立方,可以寫成2**3
㈧ python3<<2怎麼算
<<在python中是左移運算符,即3的二進制數為11,左移兩位為1100,十進制結果就是12。
㈨ python入門教程(非常詳細)
python入門教程如下:
准備材料:windows電腦、python
1、這里簡單告用python軟體編寫的一個關於貨物售價折扣方面的一個計算程序,首先打開python軟體。
㈩ 3的x次方用Python怎麼寫
Python中冪運算可以使用**表示,Python中三次方可以表示為x**3,即為x的3次方。
**是Python中算術運算符表示冪運算,Python中算術運算符還有加、減、乘、除、取模、取整除。
Python自定義函數在運行時,最初只是存在內存中,只有調用時才會觸發運行。