Фрагменты кода для быстрого запуска на python для начала работы с логистической регрессией, линейной регрессией, классификатором DecisionTree, RandomForest, lightboost, xgboost и catboost

О чем эта статья

Эта статья содержит 7 примеров начальных кодов и краткое объяснение, которое позволит вам начать работу с любым из следующих алгоритмов машинного обучения:

  • Линейная регрессия (регрессия)
  • Логистическая регрессия (классификация)
  • DecisionTreeClassifier (классификация)
  • RandomForest (классификатор)
  • xgboost (классификатор)
  • catboost (классификатор)
  • lightGBM ( классификатор )

Предполагается, что у вас есть практические знания Python и вы можете ориентироваться в его синтаксисе.

О чем не эта статья

Эта статья не будет

  • дать какое-либо представление об используемых алгоритмах
  • объяснить используемые гиперпараметры или переменные (помимо стандартных)
  • не содержит шагов/кодов предварительной обработки данных или разработки функций

Для подробного объяснения фрагментов кода ознакомьтесь с соответствующими постами для каждого из алгоритмов.

Используемые обозначения / соглашения об именах

Там, где это применимо, это обозначения и имена используемых переменных.

  • df_train обозначает набор данных поезда
  • df_test обозначает тестовый набор данных
  • df_pred обозначает набор данных, содержащий значения прогноза.
  • cols это список имен столбцов, представляющих зависимые переменные
  • target имя столбца, представляющего целевую переменную

Как использовать эти фрагменты кода

Фрагмент кода состоит из двух частей

  • исходный фрагмент кода для импорта данных и т. д.
  • фактический алгоритм и часть предсказания

Если вы ищете конкретный алгоритм, перейдите прямо в подраздел и используйте код (вместе с исходным фрагментом кода)

Если вы используете ансамблевый алгоритм, вместе с начальным фрагментом кода используйте другие алгоритмы, которые вы собираетесь использовать, а затем создайте ансамблевый фрагмент кода для голосования (здесь не представлен).

Исходный фрагмент кода предназначен для —

  • импорт данных
  • определение x-переменных и y-переменных
  • создание разделения тестового поезда
import pandas as pd
from sklearn.model_selection import train_test_split
df_train  = pd.read_csv('train.csv')
df_test  = pd.read_csv('test.csv')
cols = ['col1','col2','col3']
X = df_train[cols]
y = df_train['target']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.30, random_state=1)

1. Линейная регрессия

Это единственный алгоритм регрессии, который мы показываем здесь, так как он наиболее часто используется. Пользователям может быть легко заставить этот код работать, а затем они могут внести необходимые изменения в начальные коды других алгоритмов классификации.

вторая половина кода (в зависимости от того, какой алгоритм вы используете)

#sklean package for Linear Regression
from sklearn.linear_model import LinearRegression
#Fitting the model
lr_model = LinearRegression()
lr_model.fit(X_train, y_train)
lr_model.score(X_train, y_train) # R^2 score
df_pred = pd.DataFrame(lr.predict(df_test[cols]))  # prediction-test set

2. Логистическая регрессия

#sklean package for Logistic Regression
from sklearn.linear_model import LogisticRegression
log_model = LogisticRegression(random_state=42)
log_model.fit(X_train, y_train)
log_model.score(X_test, y_test) #accuracy of test-split
df_pred= pd.DataFrame(log_model.predict(df_test[cols])) #test-prediction

3. Дерево решений (классификатор)

#sk-learn package for Decision Tree Classifier 
from sklearn.tree import DecisionTreeClassifier
dt_model=DecisionTreeClassifier(criterion='entropy',random_state= 1)
dt_model.fit(X_train, y_train)
dt_model.score(X_test, y_test) #score = accuracy
df_pred = pd.DataFrame(dt_model.predict(df_test[cols]))

4. RandomForest (классификатор)

#sk-learn package for RandomForest Classifier 
from sklearn.ensemble import RandomForestClassifier
model_rf= RandomForestClassifier(n_estimators = 100, max_depth = 4 , max_features=11)
model_rf.fit(X_train, y_train)
model_rf.score(X_test, y_test) #score = accuracy
df_pred = pd.DataFrame(model_rf.predict(df_test[cols]))

5. xgBoost (классификатор)

from xgboost import XGBClassifier
xgb_model = XGBClassifier(gamma=0, subsample=0.8,colsample_bytree=0.8,objective= 'binary:logistic',nthread=4, scale_pos_weight=1, seed=27)
xgb_model= xgb_model.fit(X_train, y_train)
#To get 1 / 0 predictions 
df_pred = pd.DataFrame(xgb_model.predict(df_test[cols]))
# To get probabilities of prediction across the different y-variable classes 
df_pred_proba = pd.DataFrame(xgb_model.predict_proba(df_test[cols]))

6. catboost (Классификатор)

from catboost import CatBoostClassifier
cat_model = CatBoostClassifier(iterations=2,learning_rate=1,depth=2)

cat_model.fit(X_train, y_train)
# Get predicted classes
preds_class = cat_model.predict(df_test[cols])
# Get predicted probabilities for each class
preds_proba = cat_model.predict_proba(df_test[cols])
# Get predicted RawFormulaVal
preds_raw = model.predict(df_test[cols],prediction_type='RawFormulaVal')

7. LightGBM (классификатор)

Вам нужно будет установить пакет lightgbm, так как он не встроен в другие пакеты, такие как scikit-learn.

Установка пакета

sudo pip install lightgbm
or 
git clone --recursive https://github.com/Microsoft/LightGBM

Фрагмент кода

from lightgbm import LGBMClassifier
lgbm_model = LGBMClassifier(num_leaves=31, max_depth=- 1, learning_rate=0.1, n_estimators=100 )
lgbm_model.fit( X_train, y_train)
lgbm_model.predict(df_test[cols])

использованная литература

[1] sklearn документация для RandomForestClassifier (версия: 3.2.4.3.1)

https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html