전체 글 77

pandas.qcut, 구간 나누기, categorical 변수

데이터 분석을 하다보면 카테고리 변수를 다루는 일이 자주 있다. 예를 들어 동물의 크기에 따라 small, medium, large 세 경우로 나뉜다고 하였을 때, 이를 머신러닝에 활용하기 위해서는 이를 float이나 int 형으로 표현해주어야 한다. 이런 과정을 할때 보통 onehot-encoding을 사용한다. 그런데 만약 '나이'와 같은 변수를 카테고리 변수로 바꾸고 싶다면 어떻게 해야 할까? 당연히 판다스에는 이에 해당하는 적절한 메서드가 존재한다. https://pandas.pydata.org/docs/reference/api/pandas.qcut.html pandas.qcut — pandas 2.0.3 documentation Number of quantiles. 10 for deciles, ..

데이터분석 2023.08.21

scikit learn, GridSearchCV

데이터의 정제를 완료하면 모델을 통해 데이터를 학습하고 타겟 값을 예측한다. 머신러닝에 있어서 모델의 성능을 높이기 위해서 가장 중요한 작업은 데이터를 모델에 맞게 정제하는 과정이라고 생각한다. 그 다음으로는 모델의 파라미터 값을 조정하여 성능을 높이는 방법이 있다. 모델에 따라 수 많은 파라미터들이 존재하기 때문에, 사람이 모든 값을 하나씩 바꿔가며 실험하는 것은 많은 노력과 인력을 필요로 한다. 사이킷 런에서는 모델의 파라미터를 설정할 때, 사람이 일정 값을 설정해주면 모델이 그 조합들을 자동적으로 조합하여 실험을 실행시키는 메서드를 제공하는데 그것이 바로 GridSearchCV 이다. greedy 알고리즘은 최적해를 구하는 데에 사용되는 근사적인 방법으로, 여러 경우 중 하나를 결정해야 할 때마다 ..

데이터분석 2023.08.18

data handling, map, np.where

데이터를 다루다보면, 해당 컬럼을 변경하거나 변형해야할 때가 있다. 이때 유용한 map 과 np.where 을 소개하고자 한다. 1) map map 은 Series 형태인 데이터에 적용가능한 메서드이다. dataframe은 시리즈가 여러개 합쳐진 자료형이라고 생각하면 되는데, 그렇다면 dataframe에 map 메서드를 적용할 수 있다는 뜻이다. 예를들어 위와 같은 데이터가 df 라는 변수에 저장되어 있다고 생각해보자. diagnosis 는 M, B 두 가지 문자가 존재한다. 나는 M은 malignant, B는 benign 로 변경하고 싶다. 그렇다면 다음과 같은 코드를 실행하면 된다. class_mapping = {'M' : 'malignant', 'B' : 'benign'} df['diagnosis'..

데이터분석 2023.08.18

날짜 형식 데이터를 연, 월, 일로 변경하기

데이터를 다루다보면, 다음과 같은 데이터를 만날 때가 있다. 이런 형식의 데이터일 경우, 매번 습관적으로 연, 월, 일, 시 등으로 나누어 컬럼을 생성하여 데이터를 분석한다. 그렇다면 데이터를 왜 이러한 형식으로 변경하여 데이터 분석을 진행하는 것일까? 아래와 같은 장점이 존재하기 때문이다.(대부분 단점은 없는듯..?) 데이터 분석 및 시각화 : 연, 월, 일로 분리된 컬럼은 데이터를 시각화 할 때 더 쉽게 할 수 있도록 한다. 집계 및 그룹화 : 매월 판매량을 합산하거나 연간 통계를 생성할 때 유용하다. 시계열 데이터 분석: 연, 월, 일로 분리된 컬럼을 사용하면 시계열 패턴을 이해하고 예측하는 데 도움이 된다. 날짜 계산 및 조작 : 연, 월, 일로 분리된 컬럼을 사용하면 날짜와 관련된 계산 및 조직..

데이터분석 2023.08.10

Kfold( Cross Validation 교차검증 )

일반적으로 데이터를 모델에 사용할 수 있도록 정제한 후에는 train과 test 셋으로 분할하여 모델을 학습 시킨 후, test 셋으로 모델의 성능평가를 진행한다. 하지만 데이터가 적거나 동일한 데이이터 내에서 계속해서 학습을 진행하는 경우, train 셋을 집중적으로 학습하여 train 셋의 데이터는 모델이 잘 예측하지만 새롭게 들어오는 데이터에 대한 예측은 부정확한 경우가 발생한다. 이러한 현상을 오버피팅(overfitting)이라고 부른다. 이러한 문제점을 해결하기 위해, 여러가지 방법론이 존재하지만 오늘은 kfold에 대해 설명해보려고 한다. 일반적으로 학습에 사용할 데이터는 Training data, Test data 로 분류하여 사용한다. 그런데 Training data를 Fold로 나누어 위..

NLP 2023.08.03

Confusion Matrix, Accuracy, Precision, Recall, F1 score

Confusion Matrix 는 이진 분류(Binary Classification) 문제에서 모델의 성능을 평가하기 위해 사용되는 테이블 형태의 표이다. True Positive(TP) : 모델이 Positive 클래스로 정확하게 예측한 샘플의 수이다. 즉, 실제 Positive인 샘플을 모델이 정확하게 Positive로 예측한 경우를 의미한다. False Positive(FP) : 모델이 Negative 클래스를 Positive 클래스로 잘못 예측한 샘플의 수이다. 즉, 실제로는 Nagative인 샘플을 모델이 Positive로 잘못 예측한 경우를 의미한다. True Negative(TN) : 모델이 Negative 클래스로 정확하게 예측한 샘플의 수이다. 즉, 실제 Negative인 샘플을 모델이 ..

NLP 2023.08.02

Model 평가 및 지표들

정성적인 지표 R2 Score - Regression Model 의 정성적인 적합도 판단 - R2는 평균적으로 예측한 것에 비해 분산을 얼마나 축소시켰는지에 대한 판단 - 보통은 Correlation의 제곱으로 표현한다. - 정성적인 판단이 필요한 이유는 통상적인 Model의 예측력을 판단하기 위함이다 - 0 ~ 1 사이의 값을 갖고 1에 가까울 수록 좋은 모델이다. -R2 Score = SSE / SST = 1 - SSR / SST -SST : 총 편차 / SSR : 회귀식과 평균으로 예측한 것의 차이 -보통 0.25 이상일 경우 유의미하다고 판단한다.( 평균 예측한것 대비, 분산을 25% 이상 줄여준 것 ) 정량적인 지표 Mean Absolute Error : MAE - 평균 절대 오차 - 실제 값과..

NLP 2023.07.31

reset_index() 사용 방법

요즘 다시 자연어 처리 관련되 공부를 하고 있는데, 네이버 영화 리뷰 데이터를 다루기 전에 null 데이터를 확인하고 삭제하는 작업을 하였다. 그런데 문득 기계적으로 데이터를 삭제하고 나면 reset_index()를 사용해 왔는데 reset_index()를 하지 않을 경우에 어떤 문제가 발생하는지 궁금하여 찾아보고 기록한다. 1. 'reset_index()' 를 사용하지 않으면 이전의 인덱스 값들이 그대로 유지된다. 따라서 삭제된 행들로 인해 인덱스 값이 불연속적이거나 중복될 수 있다. 2. 기존 인덱스가 그대로 유지되기 때문에 해당 인덱스가 데이터프레임의 컬럼으로 존재하게 된다. 이는 원치 않는 중복 정보를 가질 수 있고, 데이터프레임을 다룰 때 문제를 일으킬 수 있다. 3. 다른 데이터 프레임과 'c..

NLP 2023.07.27

[백준] ATM, boj_11399, python

문제 인하은행에는 ATM이 1대밖에 없다. 지금 이 ATM앞에 N명의 사람들이 줄을 서있다. 사람은 1번부터 N번까지 번호가 매겨져 있으며, i번 사람이 돈을 인출하는데 걸리는 시간은 Pi분이다. 사람들이 줄을 서는 순서에 따라서, 돈을 인출하는데 필요한 시간의 합이 달라지게 된다. 예를 들어, 총 5명이 있고, P1 = 3, P2 = 1, P3 = 4, P4 = 3, P5 = 2 인 경우를 생각해보자. [1, 2, 3, 4, 5] 순서로 줄을 선다면, 1번 사람은 3분만에 돈을 뽑을 수 있다. 2번 사람은 1번 사람이 돈을 뽑을 때 까지 기다려야 하기 때문에, 3+1 = 4분이 걸리게 된다. 3번 사람은 1번, 2번 사람이 돈을 뽑을 때까지 기다려야 하기 때문에, 총 3+1+4 = 8분이 필요하게 된다..

[백준] 패션왕 신해빈, boj_9375, python

https://www.acmicpc.net/problem/9375 9375번: 패션왕 신해빈 첫 번째 테스트 케이스는 headgear에 해당하는 의상이 hat, turban이며 eyewear에 해당하는 의상이 sunglasses이므로 (hat), (turban), (sunglasses), (hat,sunglasses), (turban,sunglasses)로 총 5가지 이다. www.acmicpc.net 문제 해빈이는 패션에 매우 민감해서 한번 입었던 옷들의 조합을 절대 다시 입지 않는다. 예를 들어 오늘 해빈이가 안경, 코트, 상의, 신발을 입었다면, 다음날은 바지를 추가로 입거나 안경대신 렌즈를 착용하거나 해야한다. 해빈이가 가진 의상들이 주어졌을때 과연 해빈이는 알몸이 아닌 상태로 며칠동안 밖에 돌아..