㈠ 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自定义函数在运行时,最初只是存在内存中,只有调用时才会触发运行。