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))
採用微軟的AutoML框架對鳶尾花進行特徵篩選
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.