F检验

1.介绍

名叫做联合假设检验(英语:joint hypotheses test),此外也称方差比率检验、方差齐性检验。 

它是一种在零假设(null hypothesis, H0)之下,统计值服从F-分布的检验。 

2.计算

(1)样本标准偏差的平方,即: 


        两组数据就能得到两个S2值。

(2)F=S2/S2’

(3)然后计算的F值与查表得到的F表值比较,如果 
        F < F表 表明两组数据没有显著差异; 
        F ≥ F表 表明两组数据存在显著差异。

3.代码:

f检验选取小于0.05的特征:

model = SelectKBest(f_classif, k = "all")
model.fit_transform(features_df, label_df)
features_pvalues_dict = {n:p for n,p in zip(X.columns,model.pvalues_<0.05)}
features_pvalues_df = pd.DataFrame(X.columns,model.pvalues_)

网格调参


1.简介

Grid Search:网格调参,在参数列表中进行穷举搜索,对每种情况进行训练,找到最优的参数,比较耗时。

GridSearchCV:交叉验证经常与网格搜索进行结合,作为参数评价的一种方法,这种方法叫做grid search with cross validation。sklearn因此设计了一个这样的类GridSearchCV,这个类实现了fit,predict,score等方法,被当做了一个estimator,使用fit方法,该过程中:(1)搜索到最佳参数;(2)实例化了一个最佳参数的estimator。

2.代码:

import xgboost as xgb

import pandas as pd

from sklearn.model_selection import GridSearchCV , train_test_split

X_train,X_test,y_train,y_test = train_test_split(features_df, label_df, random_state=10)

"""

配置固定的参数
"""
other_params = {'learning_rate':0.1,
                            'seed': 234, 
                            'gamma': 0.1, 
                            'reg_alpha': 1, 
                            'reg_lambda': 1, 
                            'eval_metric':'auc'}

"""
调用xgb模型
"""

model = xgb.XGBClassifier(other_params)


"""

配置网格调参参数

"""

model = xgb.XGBClassifier(
other_params)
                  'max_depth': [6, 7, 8],
                  'min_child_weight': [20, 40, 60, 80],
                  'subsample': [0.8, 0.9, 1.0],
                  'colsample_bytree': [0.8, 0.9, 1.0]}  
"""


GridSearchCV迭代模型

"""
optimized_GBM = GridSearchCV(estimator=model, param_grid=cv_params, cv=5, verbose=1, n_jobs=10)
  
"""
获取GridSearchCV迭代的最佳参数即得分
"""
optimized_GBM.fit(train_x, train_y)
print('最佳模型得分 : {0}'.format(optimized_GBM.best_score_))


param_grid = {    cv_params = {'n_estimators':[100, 200, 300, 400],


print('参数的最佳取值:{0}'.format(optimized_GBM.best_params_))

print('验证集得分:{0}'.format(optimized_GBM.score(X_test,y_test)))

总结   


Xgb的特点

1. 支持L1L2正则化惩罚项

2. 对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向

3. 各个特征的增益计算多线程并行进行

4. 特征重要性通过特征被选中为树节点分裂特征的次数的和

原创文章,转载请注明出处:http://124.221.219.47/article/xgb/