branch생성시점의 master가 너무 오래돼서, 최신 master의 branch로 업데이트 하고 싶을때

방법1. merge

방법2. rebase

 

타인이 올린 PR의 Files changed를 터미널에서 확인하기

현재 master의 최신이 아닌 PR을 올린사람이 작업을 시작할때의 master가 기준이 됨에 유의

git fetch origin
git diff $(git merge-base origin/master origin/pr-branch-name)..origin/pr-branch-name

 

 

 

타인이 올린 PR을 내 로컬로 가져와서 검토하기

 

예를들어 위와 같은 PR이 올라왔다고 하자.

git fetch origin pull/51/head:bump-twisted 라고 치면 로컬에 "bump-twisted"라고 하는 브랜치가 생성된다(이것은 임의로 지정한 이름이며 생략하면 "pull/51/head"가 된다)

git branch를 해보면 아래처럼 bump-twisted라는 브랜치가 로컬 저장소에 추가된 것을 볼 수 있다.

$ git branch
* master
  bump-twisted

아직은 master를 바라보고 있어 PR의 내용이 로컬저장소에 반영되지 않았다.

git checkout bump-twisted 라고 치면 반영된다.

만약 PR을 올린사람이 merge전에 PR의 내용을 변경했다면

git pull origin pull/51/head:bump-twisted 다시 이렇게 치면 된다. 

 

위 방법대신

git branch -r을 해보면 다음처럼 이미 해당 PR들의 branch 들이 생성되어 있는 것을 볼 수 있는데,

(coin) sevity@raspberrypi:~/workspace/temp/coin_strategy $ git branch -r
  origin/HEAD -> origin/master
  origin/dependabot/pip/tornado-6.3.3
  origin/dependabot/pip/twisted-23.8.0
  origin/dependabot/pip/urllib3-1.26.18
  origin/master

여기서 해당 PR을 확인하고 git pull origin dependabot/pip/twisted-23.8.0:bump-twisted 이렇게 하는 방법도 있다.

 

 

반응형

'Programming > Git' 카테고리의 다른 글

git 초기설정  (0) 2023.06.06
git log  (0) 2019.12.09
git 자주 쓰는 명령어 모음  (0) 2019.09.27
git branch 관련  (0) 2019.04.17
github  (0) 2018.11.07

아래 코드는 여기서 확인가능하다.

 

data는 sklearn에서 제공하는 wine data를 사용(178개 밖에 안되긴 한다)

import pandas as pd
from sklearn.datasets import load_wine
# 와인 데이터셋 로드
wine = load_wine(as_frame=True)
df = wine.data
# data 첫 5행 출력
print(df.head())
df = wine.target
# 정답 레이블 첫 5행 출력
print(df.head())


//출력
   alcohol  malic_acid   ash  alcalinity_of_ash  magnesium  total_phenols  flavanoids  nonflavanoid_phenols  proanthocyanins  color_intensity   hue  od280/od315_of_diluted_wines  proline
0    14.23        1.71  2.43               15.6      127.0           2.80        3.06                  0.28             2.29             5.64  1.04                          3.92   1065.0
1    13.20        1.78  2.14               11.2      100.0           2.65        2.76                  0.26             1.28             4.38  1.05                          3.40   1050.0
2    13.16        2.36  2.67               18.6      101.0           2.80        3.24                  0.30             2.81             5.68  1.03                          3.17   1185.0
3    14.37        1.95  2.50               16.8      113.0           3.85        3.49                  0.24             2.18             7.80  0.86                          3.45   1480.0
4    13.24        2.59  2.87               21.0      118.0           2.80        2.69                  0.39             1.82             4.32  1.04                          2.93    735.0
0    0
1    0
2    0
3    0
4    0
Name: target, dtype: int64

정답레이블은 0, 1, 2로 서로다른 와인 재배자를 뜻함

 

다음 코드를 통해 간단히 디시전트리, 랜덤포레스트, xgboost의 성능을 비교(교차검증 사용)

from sklearn.datasets import load_wine
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
import xgboost as xgb
import numpy as np

# 데이터 로딩
data = load_wine()
X, y = data.data, data.target

# 디시전 트리 모델 생성
dt = DecisionTreeClassifier()

# 랜덤 포레스트 모델 생성
rf = RandomForestClassifier()

# XGBoost 모델 생성
xg_cls = xgb.XGBClassifier()

# 교차 검증 수행 (5-fold CV)
cv_scores_dt = cross_val_score(dt, X, y, cv=5)
cv_scores_rf = cross_val_score(rf, X, y, cv=5)
cv_scores_xgb = cross_val_score(xg_cls, X, y, cv=5)

# 평균 정확도 출력
print(f'Decision Tree CV Accuracy: {np.mean(cv_scores_dt):.2f}')
print(f'Random Forest CV Accuracy: {np.mean(cv_scores_rf):.2f}')
print(f'XGBoost CV Accuracy: {np.mean(cv_scores_xgb):.2f}')

출력

$ python wine_test.py
Decision Tree CV Accuracy: 0.87
Random Forest CV Accuracy: 0.97
XGBoost CV Accuracy: 0.95

 

반응형

'AI, ML > ML' 카테고리의 다른 글

dense feature vs sparse feature  (0) 2024.01.07
binning  (0) 2023.12.28
그레디언트 부스팅 (Gradient Boosting)  (0) 2023.10.15
랜덤 포레스트(random forest)  (1) 2023.10.15
윈도우 환경에서 ML환경 구축  (0) 2022.03.09

먼저 디시전트리랜덤포레스트를 보고오자.

비슷한 글을 여기서도 작성한 적 있다.

랜덤포레스트와의 차이점을 통해 그레디언트 부스팅의 특징을 파악해보자.

 

랜덤 포레스트와 그래디언트 부스팅은 둘 다 트리 기반의 앙상블 학습 방법이지만, 
학습 방식과 특징에 있어서 다음과 같은 차이점이 있다.

앙상블 방식:
랜덤 포레스트는 배깅(bagging)이라는 앙상블 방식을 사용.

  • 여러 개의 결정 트리를 독립적으로 학습시키고, 그 예측을 집계하여 최종 예측을 생성.

그래디언트 부스팅은 부스팅(boosting)이라는 앙상블 방식을 사용.

  • 단 한개의 시드 트리로 부터, 이전 트리의 오류를 줄이는 방향으로 학습되며, 이는 순차적인 과정.

 

과적합 방지:

랜덤 포레스트는 트리의 무작위성으로 인해 자연스럽게 과적합을 방지합니다.
그래디언트 부스팅은 규제(Regularization) 기능을 제공하여 과적합을 방지.

 

성능:
그래디언트 부스팅은 일반적으로 랜덤 포레스트보다 더 높은 예측 성능을 제공


랜덤 포레스트는 병렬 학습이 가능하므로 큰 데이터셋에 대해 빠르게 학습할 수 있습니다.
그래디언트 부스팅은 순차적인 학습 방식을 사용하므로 랜덤 포레스트보다 학습 속도가 느릴 수 있다.

 

XGBoost:

그래디언트 부스팅과 XGBoost는 기본적으로 같은 앙상블 학습 방법을 사용하지만, 

XGBoost에는 이런저런 최적화 기능이 포함되어 있음

반응형

'AI, ML > ML' 카테고리의 다른 글

binning  (0) 2023.12.28
디시전트리기반 코드 실습  (0) 2023.10.16
랜덤 포레스트(random forest)  (1) 2023.10.15
윈도우 환경에서 ML환경 구축  (0) 2022.03.09
케라스(Keras)  (0) 2020.04.13

+ Recent posts