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)
"""
配置网格调参参数
"""
'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. 支持L1和L2正则化惩罚项
2. 对于特征的值有缺失的样本,xgboost可以自动学习出它的分裂方向
3. 各个特征的增益计算多线程并行进行
4. 特征重要性通过特征被选中为树节点分裂特征的次数的和
原创文章,转载请注明出处:http://124.221.219.47/article/xgb/