123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143 |
- import pandas as pd
- import lightgbm as lgb
- from sklearn.model_selection import train_test_split
- from sklearn.model_selection import GridSearchCV
- from sklearn.metrics import mean_absolute_percentage_error, r2_score
- from rov_train import process_data
- from config import set_config
- config_, env = set_config()
- train_filename = config_.TRAIN_DATA_FILENAME
- X, Y, videos, fea = process_data(filename=train_filename)
- x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size=0.33)
- # params = {
- # 'boosting_type': 'gbdt',
- # 'objective': 'regression',
- # 'metric': 'mape',
- # 'nthread': 4,
- # 'learning_rate': 0.1,
- # 'num_leaves': 30,
- # 'max_depth': 5,
- # 'subsample': 0.8,
- # 'colsample_bytree': 0.8,
- # }
- # data_train = lgb.Dataset(x_train, y_train)
- # cv_results = lgb.cv(
- # params,
- # data_train,
- # num_boost_round=1000,
- # nfold=5,
- # stratified=False,
- # shuffle=True,
- # metrics='mape',
- # early_stopping_rounds=50,
- # seed=0
- # )
- # print('cv_results: ', cv_results)
- # print('best n_estimators: ', len(cv_results['mape-mean']))
- # print('best cv score: ', pd.Series(cv_results['mape-mean']).min())
- # best n_estimators: 1000
- # best cv score: 0.1578205729958749
- # params_test1 = {'max_depth': range(3, 8, 1), 'num_leaves': range(5, 100, 10)}
- # gsearch1 = GridSearchCV(
- # estimator=lgb.LGBMRegressor(boosting_type='gbdt', objective='regression', metrics='mape', learning_rate=0.1,
- # n_estimators=1000, max_depth=6, bagging_fraction=0.8, feature_fraction=0.8),
- # param_grid=params_test1, scoring='r2', cv=5, n_jobs=-1)
- # gsearch1.fit(x_train, y_train)
- # print(gsearch1.cv_results_, gsearch1.best_params_, gsearch1.best_score_)
- # {'max_depth': 3, 'num_leaves': 5} 0.9263654009553877
- # params_test2 = {'max_bin': range(5, 256, 10), 'min_data_in_leaf': range(1, 102, 10)}
- #
- # gsearch2 = GridSearchCV(
- # estimator=lgb.LGBMRegressor(boosting_type='gbdt', objective='regression', metrics='mape', learning_rate=0.1,
- # n_estimators=1000, max_depth=3, num_leaves=5, bagging_fraction=0.8,
- # feature_fraction=0.8),
- # param_grid=params_test2, scoring='r2', cv=5, n_jobs=-1)
- # gsearch2.fit(x_train, y_train)
- # print(gsearch2.cv_results_, gsearch2.best_params_, gsearch2.best_score_)
- # {'max_bin': 125, 'min_data_in_leaf': 21} 0.7918455469932647
- # params_test3 = {'feature_fraction': [0.6, 0.7, 0.8, 0.9, 1.0],
- # 'bagging_fraction': [0.6, 0.7, 0.8, 0.9, 1.0],
- # 'bagging_freq': range(0, 81, 10)
- # }
- #
- # gsearch3 = GridSearchCV(
- # estimator=lgb.LGBMRegressor(boosting_type='gbdt', objective='regression', metrics='mape', learning_rate=0.1,
- # n_estimators=1000, max_depth=3, num_leaves=5, max_bin=125, min_data_in_leaf=21),
- # param_grid=params_test3, scoring='r2', cv=5, n_jobs=-1)
- # gsearch3.fit(x_train, y_train)
- # print(gsearch3.cv_results_, gsearch3.best_params_, gsearch3.best_score_)
- # {'bagging_fraction': 0.6, 'bagging_freq': 0, 'feature_fraction': 0.9} 0.9003939890191465
- # params_test4 = {'lambda_l1': [1e-5, 1e-3, 1e-1, 0.0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.0],
- # 'lambda_l2': [1e-5, 1e-3, 1e-1, 0.0, 0.1, 0.3, 0.5, 0.7, 0.9, 1.0]
- # }
- #
- # gsearch4 = GridSearchCV(
- # estimator=lgb.LGBMRegressor(boosting_type='gbdt', objective='regression', metrics='mape', learning_rate=0.1,
- # n_estimators=1000, max_depth=3, num_leaves=5, max_bin=125, min_data_in_leaf=21,
- # bagging_fraction=0.6, bagging_freq=0, feature_fraction=0.9),
- # param_grid=params_test4, scoring='r2', cv=5, n_jobs=-1)
- # gsearch4.fit(x_train, y_train)
- # print(gsearch4.cv_results_, gsearch4.best_params_, gsearch4.best_score_)
- # {'lambda_l1': 0.7, 'lambda_l2': 0.9} 0.7538021411131314
- # params_test5 = {'min_split_gain': [0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0]}
- # gsearch5 = GridSearchCV(
- # estimator=lgb.LGBMRegressor(boosting_type='gbdt', objective='regression', metrics='mape', learning_rate=0.1,
- # n_estimators=1000, max_depth=3, num_leaves=5, max_bin=125, min_data_in_leaf=21,
- # bagging_fraction=0.6, bagging_freq=0, feature_fraction=0.9,
- # lambda_l1=0.7, lambda_l2=0.9),
- # param_grid=params_test5, scoring='r2', cv=5, n_jobs=-1)
- # gsearch5.fit(x_train, y_train)
- # print(gsearch5.cv_results_, gsearch5.best_params_, gsearch5.best_score_)
- #
- # {'min_split_gain': 0.0} 0.8903744931054016
- # model = lgb.LGBMRegressor(boosting_type='gbdt', objective='regression', metrics='mape', learning_rate=0.01,
- # n_estimators=7000, max_depth=3, num_leaves=5, max_bin=125, min_data_in_leaf=21,
- # bagging_fraction=0.6, bagging_freq=0, feature_fraction=0.9,
- # lambda_l1=0.7, lambda_l2=0.9, min_split_gain=0)
- # model.fit(x_train, y_train)
- # y_pre = model.predict(x_test)
- # print('mape: ', mean_absolute_percentage_error(y_test, y_pre))
- # print('r2: ', r2_score(y_test, y_pre))
- # mape: 0.7407816559793686
- # r2: 0.9069208480190998
- # model = lgb.LGBMRegressor()
- # model.fit(x_train, y_train)
- # y_pre = model.predict(x_test)
- # print('mape: ', mean_absolute_percentage_error(y_test, y_pre))
- # print('r2: ', r2_score(y_test, y_pre))
- # mape: 0.211698833035155
- # r2: 0.893979193478978
- model = lgb.LGBMRegressor(boosting_type='gbdt', objective='regression', metrics='mape', learning_rate=0.08,
- n_estimators=3000, max_depth=3, num_leaves=5, max_bin=125, min_data_in_leaf=21,
- bagging_fraction=0.6, bagging_freq=0, feature_fraction=0.9,
- lambda_l1=0.7, lambda_l2=0.9, min_split_gain=0)
- model.fit(x_train, y_train)
- y_pre = model.predict(x_test)
- print('mape: ', mean_absolute_percentage_error(y_test, y_pre))
- print('r2: ', r2_score(y_test, y_pre))
|