python

    [NLP] NLP 기초, 텍스트 전처리의 모든 것

    [NLP] NLP 기초, 텍스트 전처리의 모든 것

    텍스트 분석은 단어마다 쪼개는게 상당히 어렵고, 내 나름대로 진입장벽이 꽤 높다고 생각해서 쉽게 도전하지 못했던 분야였다. 이번에 데이콘 NLP대회에 경험삼아 참가해서 여러 코드도 참고해서 따라해보고 적용해봐야겠다는 생각에 기초부터 다지자!! 결심했다. [파이썬 머신러닝 완벽가이드]에서 나오는 텍스트분석은 어떤 프로세스로 분석을 전개해가야 하는지 틀을 잡을 수 있게 도와주었다. 텍스트 분석 수행 프로세스 1) 텍스트 사전 준비작업 ( 텍스트 전처리 ) : 텍스트를 피처로 만들기 전, 미리 클렌징, 대/소문자 변경, 특수문자 삭제, 단어토큰화 작업, 스탑워드 제거, 어근추출 등의 텍스트 정규화를 진행 2) 피처 백터화/추출 : 사전 준비작업으로 가공된 텍스트에서 피처를 추출하고, 이에 백터값 할당 => B..

    [python] SMOTE를 활용한 오버샘플링

    [python] SMOTE를 활용한 오버샘플링

    이번에는 SMOTE를 활용한 오버샘플링을 적용해보겠습니다. 일반적으로 언더샘플링보다 오버샘플링이 예측 성능상 더 유리한 경우가 많아 주로 사용됩니다. ## 오버샘플링? 이상 데이터와 같이 적은 데이터 세트를 증식하여 학습을 위한 충분한 데이터를 확보하는 방법으로, 동일한 데이터의 단순 증식은 과적합을 유발할 수 있기 때문에 의미가 없으므로 원본 데이터의 피처값들을 아주 약간씩 변형하여 증식 여기서 주의할 점은 SMOTE를 적용할 때는 반드시 학습 데이터 세트만 오버샘플링을 해야합니다!!! 검증 데이터 세트 혹은 테스트 데이터 세트를 오버샘플링 하는 경우 결국 원본 데이터가 아닌 데이터 세트에서 검증되기 때문에 올바른 검증이 되지 않습니다. 캐글의 Credit Card Fraud Detection 데이터를..

    [python] LGBMClassifier 단번에 성능 높이기

    [python] LGBMClassifier 단번에 성능 높이기

    Light GBM은 XGBoost보다 개선된 성능과 빠른 수행률을 보여주어 많은 대회의 상위 랭커들이 활용하는 모델이라고 할 수 있습니다! 저는 LGBMClaasifier 모델을 활용할 때 특히 주의해야 할 부분을 짚어보려고 하는데요, LGBMClassifier hyper parameter 중 'boost_from_averge' 설정입니다. Light GBM이 버전업 됨에 따라 boost_from_average 파라미터의 디폴트 값이 False에서 True로 변경되었습니다. 레이블 값이 극도로 불균형한 분포인 데이터의 경우 boost_from_average = True 값은 재현율과 roc_auc_score를 매우 저하시킵니다! Light GBM 2.1.0이상 버전이거나, 불균형한 데이터 세트에서 예측 ..

    [python] 교차검증을 간단하게 cross_val_score()

    sklearn은 kfold 교차검증을 보다 편리하게 수행할 수 있는 API를 제공합니다. 바로 cross_val_score() 인데요! 기존에 폴드 세트를 지정하고, for 루프에서 반복으로 학습 및 테스트 데이터의 인덱스를 추출하고, 반복적으로 학습과 예측을 수행하는 일련의 과정을 한번에 수행해주는 API입니다. 특히 classifier 학습을 진행하는 경우 자동으로 stratified KFold 방식을 진행해주기 때문에 더할나위 없이 편하다고 할 수 있겠네요! cross_val_score() 사용법 cross_val_score(estimator, X, y, scoring=평가지표, cv=교차 검증 폴드 수) 까지가 주요 파라미터라고 할 수 있습니다. * 여기서 estimator가 classifier ..

    [python] 공공 데이터 포털 API 불러오기

    [python] 공공 데이터 포털 API 불러오기

    python을 활용하여 공공데이터 포털에 존재하는 Open API 형태의 데이터 불러오기 불러온 데이터를 테이블 데이터로 변환해주는 실습 진행 - !! 실습 데이터 https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15028195 공공데이터 포털의 전국과속방지턱표준데이터를 활용해보았다 ※ 일반 파일 데이터는 로그인 없이도 다운이 가능하지만, API 신청을 위해서는 로그인이 요구됨 실습전 API 활용신청을 해야하며, 개인마다 주어지는 API KEY값을 활용한다 공공데이터 포털에서 공개되는 API는 대부분 바로 자동 승인이 이루어진다! 활용신청 이렇게 승인처리된 데이터를 눌러주면 개인에게 주어진 인증키를 볼 수 있는 창으로 넘어가게..

    [python] colab pycaret 설치

    코랩에서 여러 모델의 성능을 비교해볼 수 있는 pycaret을 사용하기 위해 설치를 하려고 기존에 다른 패키지를 설치하는 것처럼 설치했더니,, !pip install pycaret 오류가 발생한다.. sklearn 버전에 맞게 재설치 우선 설치된 sklearn의 버전이 0.23.2로 맞추어져야 한다고 오류가 떠서 버전에 맞게 sklearn을 삭제 및 재설치 해준다 !pip uninstall sklearn -y !pip install --upgrade sklearn !pip install scikit-learn==0.23.2 --user 위 코드를 실행시킨 다음 런타임 재실행 후 다시 sklearn의 버전을 확인하여야 0.23.2 버전으로 설치된 것을 확인할 수 있다 import sklearn sklear..

    [python] LabelEncoder

    범주형 컬럼을 인코딩하려는 데 컬럼이 너무 많아서 원핫인코딩을 사용할 수 없는 상황이다 그래서 LabelEncoder를 사용하려고 했으나 array가 1차원 형식이어야 한다는 조건 때문에 train데이터에 적용이 안되는 문제가 있었다 LabelEncoder 사용시 전체 컬럼에 적용할 것인지, 또는 특정 컬럼에 적용할 것인지에 따라 약간씩 코드가 달라진다 하나의 컬럼에 LabelEncoder 적용하기 인코딩 할 컬럼이 몇 개 되지 않는 경우에는 하나씩 적용하면 사용하면 좋다!원래 LabelEncoder를 사용할 시 여러 개를 한 번에 돌리는 것보다 하나의 컬럼을 각각 확인해가며 변환하는 것이 가장 좋은 방법이라고 한다 from sklearn.preprocessing import LabelEncoder en..

    [python 쌩기초] Numpy

    데이터 분석이라 함은,, 응당 마주할 수 밖에 없는 패키지가 Numpy 와 Pandas 라고 생각된다 원래는 단순히 import numpy as np를 기계적으로 치고서는 뭐가 들어있는지 제대로 파악도 못한 채 쓸 때마다 " 아,, 이런 게 있었구나 " 하면서 그때 그때 알아가고는 했는데 이번 빅데이터 분석 기사를 치고 나서 내가 사용하는 패키지에 대해 잘 알아두는 것도 굉장히 중요하다는 생각이 들었다 함수는 알아도 어디 패키지인지 몰라서 np.dropna, pd.dropna, df.dropna등.. 엄청나게 난리를 쳤기 때문 이번은 numpy에 대한 간략한 설명과 어떤 기능을 담고 있는지 살펴볼 것이다! Numpy 다차원 배열의 연산기능을 모아놓은 꾸러미이며, 수치 연산을 위한 다양한 기능을 담고 있는..

    [python 쌩기초] 함수 / 람다

    조건문과 반복문 다음에는 이것들을 활용한 함수를 만들어본다 데이터 EDA할 때 동일한 코드를 여러 번 사용하게 되는데, 이때 함수가 굉장히 필수적이라고 느꼈다! 처음에는 스스로 함수를 만든다는 것 자체에 덜컥 겁내했는데 알고 보면 별 거 아닌 놈 그치만,, 기초부터 탄탄히 ㅎ 사용자 함수 만들기 ※ 사용자 함수 더보기 더보기 def 함수이름 (인자): 함수 본문 return # 온도에 따른 커피추천 함수 만들기 def coffee(temp): if temp>0: print('아이스 아메리카노') else: print('따뜻한 아메리카노') # 함수활용 print(coffee(30)) print(coffee(-10)) c = coffee(30) print('추천 커피는 {}입니다.'.format(c)) #..

    [python 쌩기초] 조건문 / 반복문

    학교 수업에서 파이썬 기초만 지겹게 했던터라 스스로 기초를 다시 공부할 일은 없을 거라고 생각했는데.. 어느 정도 파이썬과 친숙해지고 나니 기초만큼 중요한 게 없구나를 깨닫고 책을 펼쳤다..! 분석을 위한 코딩을 할 때는 for문을 많이 활용하는 것같은데, 늘 남의 코드를 보고 작성하다보니 헷갈리기도,, 답답하기도 해서 나만의 for문을 만들기 위해 초심잡고 공부 시작 ! 조건문 # 온도가 0도보다 높다면 '아이스 아메리카노'를 추천하자 today_temp = 30 if today_temp > 0 : print('아이스 아메리카노') # 온도가 0도보다 높다면 '아이스 아메리카노'를, 반대로 낮다면 '따뜻한 아메리카노'를 추천하자 today_temp = 30 if today_temp > 0: print(..