본문 바로가기

Python47

type annotation, type hint 보통 파이썬은 타입을 명시하지 않는다. 동적 프로그래밍 언어인 파이썬은 이 변수의 타입을 추론해서 만들어주기 때문에 개발자는 편하게 코드를 축소해서 짤 수 있다. 보통 n=1을 하면 파이썬은 '아 int형이구나' 라고 알아 듣고, n='1'을 하면 '아 string형이구나' 하고 알아 듣는다. 하지만 프로젝트의 규모가 커지고 코드를 봐야하는 사람들이 많아지면 문제가 발생한다. 이 변수가 어떤 타입인지를 모르기 때문에 치명적인 버그로 이어질 확률이 높아지며 안정성에 위협이 되는 요소가 된다. 그렇기에 사람들은 타입 힌트(type hint)란 걸 명시했다. 처음엔 # int형임 이런 식으로 했지만 점차 파이썬 버전이 업그레이드 되면서 표준화되었다. 이것이 type annotation이다. 간단하다. 변수 이.. 2022. 2. 4.
df.select_dtypes() - 데이터프레임에서 타입별로 불러오기 df안에는 다양한 타입들이 존재한다. int, float, object, bool 등 다양하다. 거기서 내가 원하는 타입만 불러오고 싶을 때 이 함수를 쓰면된다. 먼저 df안에있는 col들의 타입을 알아봐야된다. df.dtypes 이것은 내가 지금 데이콘에서 수행하고 있는 데이터셋이다. 여기서 보면 다양한 type들이 나온다. 이제 타입별로 불러와보자. # int형 col만 불러온다. df.select_dtypes(int) # bool형만 불러온다. df.select_dtypes(bool) # object형만 불러온다. df.select_dtypes(object) 2022. 2. 4.
명목변수 내 인자 확인, 수, 갯수 - df.unique(), nunique(), value_counts() 과일이란 컬럼안에 사과, 배, 귤 등등이 있다. 이 때 이 과일컬럼 내에 어떤 요소들이 있는지 확인하는 방법 df['과일'].unique() 결과로 사과, 배, 귤이 나온다. 범주형 변수에서 어떤 인자가 있는지 중복되지 않고 보여준다. 이제 고유한 인자들이 몇개인지를 확인할 때, df['과일'].nunique() 결과로 3 이 나온다. 사과, 배, 귤로 총 3개인 것을 알 수 있다. 마지막으로 이 고유값들이 df안에 얼마나 들어있는지 확인할 때, df['과일'].value_counts(ascending=True) # ascending은 결과를 오름차순으로 보여준다. 이러면 사과는 몇개가 있고 배는 몇개, 귤은 몇개로 나타난다. 2022. 1. 4.
Voting Classifier 여러개의 모델을 결합하여 더 좋은 예측 결과를 도출하는 앙상블 기법이다. 간단하다. 다양한 모델의 결과들을 모아서 투표하는 것이다. 아주 간단한 예로 모델이 총 3개로 1번 모델, 2번 모델의 결과가 사과로 나왔다. 3번 모델의 결과는 배로 나왔으면 사과가 2표, 배가 1표이므로 이 것의 결과는 사과가 된다. Voting Classifier 는 Hard voting과 soft voting으로 나뉘어진다. Hard voting. - Majority voting이라고도 하며, 각 모델의 예측한 결과들을 모아 다수결 투표로 최종 예측 결과를 선정하는 방식이다. 방금 위에서 표현한 예가 hard voting이다. Soft Voting - Probability Voting이라고도 하며, 각 모델들이 예측한 결과값.. 2021. 12. 30.
LGBM(Light Gradient Boosting Model) LGBM을 알기전에 XGB, GBM을 알아야 한다. https://lucian-blog.tistory.com/100 LGBM은 XGB의 업그레이드 버전이라 보면 된다. XGB는 높은 성능을 내고 GBM보다 빠르지만 여전히 level-wise 트리 확장 구조를 사용하므로 느리다! 즉 트리 구조가 수평적으로 예쁘게 확장되는 것이 level-wise 확장 구조이다. 반면에 LGBM(Light GBM)은 leaf-wise 트리 확장 구조로 변경하여 속도와 메모리를 비약적으로 향상시켰다. 즉 트리의 어느 레벨에서 모든 노드를 확장시키는 것이 아닌 최종 노드 하나만 분할하는 방식을 사용한 것이다. =수직 트리 구조 이렇게 하면 loss가 가장 큰 부분을 쪼개고 쪼개서 결국 최대한으로 줄여지는 것이 가능하다. 이렇게.. 2021. 12. 30.
XGB(Extreme Gradient Boosting) 먼저 XGB를 알기전에 GBM부터 알아야한다. https://lucian-blog.tistory.com/51?category=1002577 XGB는 GBM의 속도와 성능을 향상시킨 업그레이드 버전이라고 보면 된다. 앙상블 기법 중 Boosting 기법은 틀린 답 즉 오류(또는 오답)에 가중치를 부여하여, 순차적으로 다음 학습모델에 반영하여 강한 예측모형을 만드는 기법이다. 그 중 GBM은 이 가중치에 경사하강법을 도입하여 만든 모델이다. 그런데 이 부스팅 모델은 모델들을 순차적으로 학습하기 때문에 속도가 매우 느리다... 데이터가 많아질수록 더 많이 느려진다. 이를 업그레이드 한 것이 XGB이다. XGB는 GBM의 학습하는 모델을 병렬처리하여 학습하게 만든다. 즉 순차적으로 진행이 아닌 동시에 각각의 모.. 2021. 12. 30.
연속형 변수 -> 범주형 변수로 바꾸기 - df.apply(), pd.cut() 1. df.apply() def func(x): if x < 3: return 'lowest' elif x < 3.3: return 'low' elif x < 3.5: return 'normal' else : return'high' train['pH'] = train['pH'].apply(lambda x : func(x)) 2. pd.cut() & pd.qcut() 인자로 데이터, 구간의 갯수, 레이블명 구간의 갯수는 5개로 설정하여 1,2,3,4,5가 된다. labels=False로 설정할 시 그대로 숫자가 넣어지고 만약 labels=['a','b','c','d','e'] 일 경우 숫자 대신 리스트의 값이 넣어진다. cut은 레이블의 범위가 같다. qcut은 갯수가 같다. 만약 0과 99사이의 값을 3.. 2021. 12. 29.
올림, 내림, 반올림 함수 # math.ceil()함수 : 무조건 소수점 자리를 올린다. ex) ceil(99.2) => 100 # math.floor()함수 : 무조건 소수점 자리를 내린다. ex)floor(99.2) => 99 # math.round()함수 : 소수점을 반올림한다. 2021. 12. 29.
데이터프레임 열 또는 행에 함수 적용하기 - df.apply() 보호되어 있는 글 입니다. 2021. 12. 29.