본문 바로가기

ML36

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.
회귀와 분류 최근에 어느 기업의 면접을 봤다. 거기서 회귀와 분류에 대한 질문을 하셨다. 회귀 - 연속적인 데이터를 가지고 새로운 데이터를 예측하는 방법. 분류 - 그저 말대로 분류..... 어떤 데이터를 구분할 때 쓰이는 방법. 또한 회귀는 지도학습, 분류는 비지도학습에 주로 쓰인다고 답했는데,,,,ㅎㅎ.... 이렇게 말씀드렸던 것 같다. 미숙하게 대답을 했기에 약간의 후회가 남아서 다시 정리해본다. 먼저 강화, 지도, 비지도학습이 있다. 이 중 회귀, 분류는 지도학습(supervised learning)에 속한다. 아까 면접에서 분류는 비지도학습에 주로 쓰인다고 했는데, 이것은 군집화와 착각해서 나온 답임을 알게됬다. 생활코딩에서 회귀 : 예측하고 싶은 종속변수(정답 레이블, y)가 숫자일 때 사용한다. 분류 :.. 2022. 1. 14.
정규화(Normalization)와 표준화(Standardization)를 하는 이유 머신러닝 모델링을 하기 전에 기계학습을 하는 이유가 무엇일까? 보통 머신러닝 모델을 만들기 위해선 데이터를 전처리해준다. 이 과정에서 사용되는 것 중 하나가 정규화 또는 표준화이다. 왜 이것을 사용하는가 하면 데이터의 컬럼 별 단위 또는 범위를 통일시켜준다고 생각하면 편하다. 컬럼별로 뭐 시간, km, kg 등 다양한 단위를 가지는데 이러면 직접적인 비교가 불가능하다. 예를 들자. 넌 180cm인데 난 80kg이니깐 내가 더 몸이 좋아! 라고 한다면 상대방이 나를 이상한 사람 취급할 것이다. 또는 토익 300점(990점 만점)인데 넌 학교 영어점수가 100점(100점만점)이니 내가 더 영어를 잘하네.라고 한다면 똑같이 나를 이상한 취급을 할 것이다. 이처럼 다른 데이터로 비교한다는 것이 말이 안되므로 이.. 2022. 1. 5.
명목변수 내 인자 확인, 수, 갯수 - df.unique(), nunique(), value_counts() 과일이란 컬럼안에 사과, 배, 귤 등등이 있다. 이 때 이 과일컬럼 내에 어떤 요소들이 있는지 확인하는 방법 df['과일'].unique() 결과로 사과, 배, 귤이 나온다. 범주형 변수에서 어떤 인자가 있는지 중복되지 않고 보여준다. 이제 고유한 인자들이 몇개인지를 확인할 때, df['과일'].nunique() 결과로 3 이 나온다. 사과, 배, 귤로 총 3개인 것을 알 수 있다. 마지막으로 이 고유값들이 df안에 얼마나 들어있는지 확인할 때, df['과일'].value_counts(ascending=True) # ascending은 결과를 오름차순으로 보여준다. 이러면 사과는 몇개가 있고 배는 몇개, 귤은 몇개로 나타난다. 2022. 1. 4.
평균, 분산, 표준편차의 이야기 우리는 늘 분산이 작으면 안정적이야 이렇게 말한다... 대체 왜 그럴까? 이런 의문을 가지고 검색을 해봤다. 늘상 쓰이는 거지만, 왜일까?란 의문을 계속 제시해야 한다.. 명심하자... 먼저 평균은 그 데이터가 가리키는 값이라 할 수 있다. 내가 90점을 받았는데, 평균이 얼마지? 라고 생각해본적이 다들 있다. 그 데이터의 평균이 50점이라고 하면 시험을 본 대부분이 50점 근처라고 생각할 것이다. 이처럼 평균은 그 데이터를 대표하는 값으로 표현이 가능하다. 평균을 알았고 아 내가 남들보다 엄청 잘봤네~ 이런 생각이 들면서 이제 다음으로 생각할 것이다. 그럼 내가 몇 등급이지?? 1등급? 2등급? 이 때 나오는 것이 표준편차, 분산이다. 분산의 사전적 의미는 '그 확률변수가 기댓값(평균)으로부터 얼마나 .. 2022. 1. 4.
count, mean, std, min , 1 분위수, 2 분위수, 3 분위수, max 출력함수 df.describe() 2022. 1. 3.
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.