Вот ваш первый код LightGBM!
LightGBM – это платформа для повышения градиента, в которой используются алгоритмы обучения на основе дерева. Он предназначен для распределения и эффективности со следующими преимуществами:
- Более высокая скорость обучения и более высокая эффективность
- Меньшее использование памяти
- Лучшая точность
- Поддержка параллельного обучения и обучения на GPU
- Возможность обработки больших объемов данных
import os #to access files import pandas as pd #to work with dataframes import numpy as np #just a tradition from sklearn.model_selection import StratifiedKFold #for cross-validation from sklearn.metrics import roc_auc_score #this is we are trying to increase import matplotlib.pyplot as plt #we will plot something at the end) import seaborn as sns #same reason import lightgbm as lgb #the model we gonna use
Давайте прочитаем данные: тренируем, таргетируем и тестируем
train = pd.read_csv('../input/train.csv')
test = pd.read_csv('../input/test.csv')
for c in train.columns:
if train[c].dtype == 'object':
lbl = LabelEncoder()
lbl.fit(list(train[c].values) + list(test[c].values))
train[c] = lbl.transform(list(train[c].values))
test[c] = lbl.transform(list(test[c].values))
Форма набора данных
print('Shape train: {}\nShape test: {}'.format(train.shape, test.shape))
n_comp = 6 # PCA pca = PCA(n_components=n_comp, random_state=42) pca2_results_train = pca.fit_transform(train.drop(["y"], axis=1)) pca2_results_test = pca.transform(test) # ICA ica = FastICA(n_components=n_comp, random_state=42) ica2_results_train = ica.fit_transform(train.drop(["y"], axis=1)) ica2_results_test = ica.transform(test) # Append decomposition components to datasets for i in range(1, n_comp+1): train['pca_' + str(i)] = pca2_results_train[:,i-1] test['pca_' + str(i)] = pca2_results_test[:, i-1] train['ica_' + str(i)] = ica2_results_train[:,i-1] test['ica_' + str(i)] = ica2_results_test[:, i-1] # remove duplicates - needs to be applied to test too # train = train.T.drop_duplicates().T # test = test.T.drop_duplicates().T y_train = train["y"] y_mean = np.mean(y_train) train.drop('y', axis=1, inplace=True)
Обучение модели!
X_train, X_valid, y_train, y_valid = train_test_split(
train, y_train, test_size=0.2, random_state=9127)
# create dataset for lightgbm
lgb_train = lgb.Dataset(X_train, y_train)
lgb_valid = lgb.Dataset(X_valid, y_valid, reference=lgb_train)
# to record eval results for plotting
evals_result = {}
# The r2 is: 0.648019302812 the rmse is: 7.2525692268
# specify your configurations as a dict
params = {
'task': 'train',
'boosting_type': 'gbdt',
'objective': 'regression',
'metric': {'l2'},
'num_leaves': 5,
'learning_rate': 0.06,
'max_depth': 4,
'subsample': 0.95,
'feature_fraction': 0.9,
'bagging_fraction': 0.85,
'bagging_freq': 4,
'min_data_in_leaf':4,
'min_sum_hessian_in_leaf': 0.8,
'verbose':10
}
print('Start training...')
# train
gbm = lgb.train(params,
lgb_train,
num_boost_round=8000, # 200
valid_sets=[lgb_train, lgb_valid],
evals_result=evals_result,
verbose_eval=10,
early_stopping_rounds=50) # 50
#print('\nSave model...')
# save model to file
#gbm.save_model('model.txt')
print('Start predicting...')
# predict
y_pred = gbm.predict(X_valid, num_iteration=gbm.best_iteration)
Оценка
# feature importances
print('Feature importances:', list(gbm.feature_importance()))
# -------------------------------------------------------
print('Plot metrics during training...')
ax = lgb.plot_metric(evals_result, metric='l2')
plt.show()
print('Plot feature importances...')
ax = lgb.plot_importance(gbm, max_num_features=10)
plt.show()
# -------------------------------------------------------
# eval r2-score
from sklearn.metrics import r2_score
r2 = r2_score(y_valid, y_pred)
# eval rmse (lower is better)
print('\nThe r2 is: ',r2, 'the rmse is:', mean_squared_error(y_valid, y_pred) ** 0.5)
# -------------------------------------------------------
print('\nPredicting test set...')
y_pred = gbm.predict(test, num_iteration=gbm.best_iteration)
# y_pred = model.predict(dtest)
output = pd.DataFrame({'id': test['ID'], 'y': y_pred})
output.to_csv('submit-lightgbm-ICA-PCA.csv', index=False)
# -----------------------------------------------------------------------------
print("Finished.")
Это должно сработать для вас! Ваше здоровье!
Протяните руку и прокомментируйте, если вы застряли!
Другие статьи, которые могут быть интересны:
— Начало работы с Apache Spark — I | Сэм | компьютерная культура | январь 2022 г. | Medium
- Начало работы с Apache Spark II | Сэм | компьютерная культура | январь 2022 г. | Medium
- Начало работы с Apache Spark III | Сэм | компьютерная культура | январь 2022 г. | Medium
- Пингвины Стримлит и Палмер. Нетипичное пьянство на прошлой неделе на Netflix… | Сэм | компьютерная культура | Medium
- «Начало работы со Streamlit. Используйте Streamlit, чтобы объяснить свой EDA и… | Сэм | компьютерная культура | Середина"
Ура и следите за большим количеством такого контента! :)
Теперь вы тоже можете угостить меня кофе, если вам понравился контент!
samunderscore12 создает контент по науке о данных! (buymeacoffee.com)