from sklearn import datasets from sklearn.model_selection import train_test_split from nni.feature_engineering.gbdt_selector import GBDTSelector import torch iris = datasets.load_iris() x = iris.data y = iris.target params = { # default=0.1, type=double, alias=shrinkage_rate 'learning_rate': 0.2, # default=regression,任务类型 'application': 'binary', # 叶子节点的数量 'num_leaves': 31, # default=1, type=int, alias=verbose | 日志冗长度,[详细信息]代表是否输出 < 0: Fatal, = 0: Error (Warn), > 0: Info 'verbosity': -1, 'data_random_seed': 2, 'bagging_fraction': 0.8,# default=1.0, type=double, 0.0 < bagging_fraction < 1.0, alias=sub_row, subsample # 类似于 feature_fraction, 但是它将在不进行重采样的情况下随机选择部分数据 # 可以用来加速训练 # 可以用来处理过拟合 # Note: 为了启用 bagging, bagging_freq 应该设置为非零值 'feature_fraction': 0.6, #default=1.0, type=double, 0.0 < feature_fraction < 1.0, alias=sub_feature, #colsample_bytree # 如果 feature_fraction 小于 1.0, LightGBM 将会在每次迭代中随机选择部分特征. 例如, 如果设置为 0.8, 将会在每棵树训练之前选择 80% 的特征 # 可以用来加速训练 # 可以用来处理过拟合 'nthread': 4, #default=OpenMP_default, type=int, alias=num_thread, nthread # LightGBM 的线程数 # 为了更快的速度, 将此设置为真正的 CPU 内核数, 而不是线程的数量 (大多数 CPU 使用超线程来使每个 CPU 内核生成 2 个线程) # 当你的数据集小的时候不要将它设置的过大 (比如, 当数据集有 10,000 行时不要使用 64 线程) # 请注意, 任务管理器或任何类似的 CPU 监视工具可能会报告未被充分利用的内核. 这是正常的 # 对于并行学习, 不应该使用全部的 CPU 内核, 因为这会导致网络性能不佳 'lambda_l1': 1, #lambda_l1, default=0, type=double, alias=reg_alpha L1 正则 'lambda_l2': 1} X_train, X_test, y_train, y_test = train_test_split(x, y, test_size=0.33, random_state=42) #X_train = torch.tensor(X_train).float() #y_train = torch.tensor(y_train).long() # 初始化 Selector fgs = GBDTSelector() # 拟合数据 fgs.fit(X_train, y_train, lgb_params=params, eval_ratio=0.3, early_stopping_rounds=2, importance_type='gain', num_boost_round=10) # 获取重要的特征 # 此处会返回重要特征的索引。 print(fgs.get_selected_features(2))
来源:CSDN
作者:小然_ran
链接:https://blog.csdn.net/qq_23144435/article/details/103843374