이서
Data Analyst
300x250
300x250

전체 글 366

Lv4 | 전처리 | Polynomial Features (1)

이전에는 연속형 데이터를 범주형 데이터로 변환 시키는 방법으로 변수를 추가헀다면, 요번에는 Polynomial Features라는 라이브러리에 대해 알아보도록 하겠다. Polynomial Features 라이브러리는 sklearn 에 내장되어 있는 라이브러리이다. Polynomial Features 라이브러리를 이용하면 현재 데이터를 다항식 형태로 변환 시킬 수 있다. 데이터에 x1, x2변수가 있다하면 PolynomialFeatures 라이브러리를 이용해 1. x1, x2, x1^2, x1*x2, x2^2로 간단하게 변환 시킬 수 있다. # 임의 데이터 생성 X = np.arrange(6).reshape(3,2) df = pd.DataFrame(X) df.columns = ['x_1','x_2'] po..

Lv4 | 전처리 | 연속형 변수 변환 (2)

연속형 변수를 범주형 변수로 변환 시키는 방법 중 2번째 방법에 대해 알아보겠다. 수치 범위 구간을 직접 지정해 레이블링 하기. 판다스의 cut() 함수로 레이블링 하기 지난 시간에는 직접 수치 범위를 지정해서 나눴다. 직접 수치 범위를 나눌 경우 조금 더 세밀하게 조정가능하다는 장점이 있지만, 여러 변수에 한번에 적용하기는 어렵고 각각의 변수에 맞는 범위를 지정하기에는 많은 시간이 소요될 것이다. 이번 시간에는 판다스의 cut() 함수를 이용해 손쉽게 연속형 변수를 범주형 변수로 변환 시켜보도록 하겠다. 사용 방법은 아래와 같다. train['변수명'] = pd.cut(train['변수명'], 나눌 범주의 갯수(정수형), labels=False) # train 데이터의 alcohol 변수를 구간이 5개..

Lv4 | 전처리 | 연속형 변수 변환 (1)

머신러닝 모델링을 하다 보면 제한된 변수로 성능을 끌어 올리는 데는 한계가 있다. 실제 데이콘 대회 우승자 코드를 살펴보면, 전처리와 모델링은 크게 차이가 없다. 우승자들과 그 외 사람들을 비교해보면, 크게 다음 두 가지에서 큰 차이를 보인다. 1. 어떻게 데이터를 증강시켰는지? 2. 어떤 파생 변수를 추가하였는지 ? 특히 정형 데이터의 경우 데이터 증강은 제한적입니다. 그래서 더욱더 효율적인 파생 변수를 추가하는 것이 중요하다. 오늘은 가장 간단하게 파생 변수를 추가할 수 있는 방법인 연속형 변수를 범주형 변수로 변환시켜보겠다. 연속형 변수를 범주형 변수로 변환 시키는 방법은 여러가지가 있겠지만, 크게 2가지에 대해서 알아보도록 하겠다. 1. 수치 범위 구간을 직접 지정해 레이블링 하기. 2. 판다스의..

머신러닝 데이터 분석 2회차

UNIT 2-1 정형 데이터와 비정형 데이터 정형 데이터 데이터 베이스의 정해진 규칙에 맞게 구조화된 형태(스키마)로 구성된 데이터 머신러닝이 자주 사용 비정형 데이터 정해진 규칙 없이 다양한 형태로 구성된 데이터 딥러닝이 자주 사용 반정형 데이터 정형 데이터와 비정형 데이터가 완벽히 분리되지않는 형태의 데이터 로그 파일 데이터 웨어하우스와 데이터 레이크 데이터 웨어하우스 - 여러 시스템의 데이터베이스에 축적된 데이터를 공통의 형식으로 통합해서 관리하는 데이터 베이스 - 하나의 웨어하우스에서 주제별로 데이터 마트를 생성( 필요한것들만 뽑는다) 데이터 레이크 - 원래의 형식으로 대량 저장하여, 정형, 비정형, 반정형 데이터를 모두 적재 - Hadoop, spark 등 다양한 빅데이터 기술 요소를 포함 SU..

머신러닝 데이터 분석 1회차

Unit 1-1 기존의 프로그래밍과 머신러닝 프로그래밍의 차이점 - 프로그래밍 컴퓨터의 프로그램을 작성하는 일. 일반적으로 프로그램의 작성 방법의 결정, 코딩(coding), 에러 수정 등의 작업 모두를 가리키지만 코딩만을 가리킬때도 있다. 명시적 프로그래밍 - 규칙 기반으로 모든 사항을 프로그래밍 하는 것 머신러닝 프로그래밍 - 어떤 데이터로부터 학습을 하여, 학습된 형태로 동작하도록 프로그래밍 하는 것 - 머신러닝|딥러닝|데이터 사이언스 - 통계학 vs 머신러닝 통계학 데이터에 대한 분포 가정에 의존한다. 이론적 솔루션을 제공한다. 해석 가능성이 중요하다. 머신러닝 사람의 두뇌보다 수많은 연산을 의존한다. 이론보다 유연성을 강조한다. 해석 가능성보다 예측력을 우선시한다. - 대표적인 머신러닝 문제 U..

Lv4 | 전처리 | 다중공선성 해결 - PCA (3)

실습 순서는 다음과 같습니다. 1. iris 데이터 로딩 2. x축: sepal length y축: sepal width하여 품종 데이터 분포 시각화 3. PCA를 이용해 차원 축소 후 변환된 데이터 셋을 2차원 상에서 시각화 #setosa는 빨간색, versicolor는 노란색, virginica는 파란색 color = ['r','y','b'] # setosa의 target 값은 0, versicolor는 1, virginica는 2. # 각 target 별로 다른 색으로 scatter plot for i,c in enumerate(color): x_axis_data = df[df['target'] == i]['sepal_length'] y_axis_data = df[df['target'] == i][..

Lv4 | 전처리 | 다중공선성 해결 - PCA (2)

차원 축소 기법 중 가장 대표적인 기법인 PCA는 여러 변수간에 존재하는 상관관계를 이용해 이를 대표하는 주성분을 추출해 차원을 축소하는 기법이다. PCA는 기존 데이터의 정보 유실 최소화를 위해 가장 높은 분산을 가지는 데이터 축을 찾아 해당 축으로 차원을 축소한다. 키와 몸무게 2개의 피처를 가지고 있는 데이터 셋이 다음과 같이 구성되어 있다고 가정한다. 이 2개의 피처를 한개의 주성분을 가진 데이터 셋으로 차원축소하는 과정은 다음과 같다. PCA는 제일 먼저 가장 큰 데이터 변동성을 기반으로 첫 번째 벡터 축을 생성하고, 두 번째 축을 이 벡터 축에 직각이 되는 벡터(직교 벡터)를 축으로 한다. 세 번째 축은 다시 두 번째 축과 직각이 되는 벡터를 설정하는 방식으로 축을 생성한다. 이렇게 생성된 벡..

Lv4 | 전처리 | 다중공선성 해결 - PCA (1)

이전 시간에 말했듯이, 다중공선성을 해결하는 방법은 크게 세가지가 있다. 1. 변수 정규화 2. 변수 제거 3. PCA(주성분 분석) 변수 정규화 방법은 수치형 데이터들을 Min-Max scaling 이나 Z-Score scaling 등의 기법으로 정규화 시켜주는 방법이고, 변수 제거 방법은 변수의 VIF(분산팽창요인) 계수가 10이상인 변수를 제거하는 방법이였다. 마지막 세번째 방법은 PCA를 통한 해결 방법이다. PCA를 이해하기 위해서 먼저 차원축소의 개념을 이해해야한다. 차원 축소란? 차원 축소는 많은 피처로 구성된 다차원 데이터 셋의 차원을 축소해 새로운 차원의 데이터 셋을 생성하는 것이다. 일반적으로 차원이 증가할수록 데이터 포인트 간의 거리가 기하급수적으로 멀어지게 되고, 희소(sparse)..

Lv4 | 전처리 | 다중공선성 해결 | 변수 제거

다중공선성 해결 이전 시간에 다중공선성을 해결하는 3가지 방법에 대하여 알려드렸고, 그 중 첫번째 방법이 ㄴ변수 정규화에 대해 실습해보았다. 이번 시간에는 두번쨰 방법인 VIF 기준 10이상의 변수들을 제거해 보도록 하겠다. # train 데이터의 VIF 계수 출력 vif =pd.DataFrame() vif["VIF Factor"] = [variance_inflation_factor(train.values,i) for i in range(train.shape[1])] vif['features'] = train.columns vif # 종속변수인 quality를 제외 한 vif 10이상 변수 제거 new_train = train.drop(['alcohol','fixed acidity','total sulf..

카테고리 없음 2021.09.03

데이터베이스 기초 (MYSQL)

개념 " 데이터를 구조적으로 모아둔 데이터 집합소 " 관계형 데이터베이스(Relational Database - : RDB) 데이터를 열과 행을 가진 테이블 형태로 표현하며, 구조적으로 데이터 관리를 한다. NoSQL 구조적 데이터, 가변적인 형태로 관리 및 가공, 데이터 처리 속도가 빠르다. 빅데이터에 최적화되어있다. 용어 SQL structured Query Language RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어 SQL 문법 데이터 정의 언어(DDL) CREATE, DROP, ALTER 데이터 조작 언어(DML) SELECT INSERT, UPDATE, DELETE 데이터 제어 언어(DCL) GRANT, REVOKE CRUD CREATE, READ, UPDATE, DE..

Lv4 | 전처리 | 다중공선성 해결 | 변수 정규화

다중공선성 해결 다중공선성을 일으키는 변수들을 어떻게 다뤄줘야할지에 대해 알아보도록 하겠다. 다중공선성을 해결하는 방법은 크게 3가지가 있다. 1. 변수 정규화 2. 변수 제거 3. PCA(주성분 분석) 이번 시간에는 정규호를 적용하기 전 분산 팽창 요인(VIF)를 확인하고 정규화를 적용한 후에 분산 팽창 요인을 확인해 서로 비교하도록 한다. #train 데이터의 VIF 계수 출력 vif =pd.DataFrame() vif['VIF Factor"] = [variance_inflation_factor(train_values,i) for i in range(train.shape[1])] vif['features'] = train.columns vif # MinMaxScaler를 통해 변환 scaler = M..

Lv4 | EDA | 복습

1️⃣ seaborn pairplot seaborn의 pairplot은 데이터에 들어 있는 각 컬럼(열)들의 모든 상관 관계를 출력합니다. 3차원 이상의 데이터라면 pairplot 함수를 사용해 분포도를 그리면 손쉽게 모든 변수간의 상관관계를 얻을 수 있습니다. pairplot은 grid(격자) 형태로 각 집합의 조합에 대해 히스토그램과 분포도를 그립니다. 2️⃣seaborn distplot seaborn의 distplot 함수는 데이터의 히스토그램을 그려주는 함수입니다. 히스토그램이란 수치형 데이터 분포를 정확하게 표현해주는 시각화 방법입니다. 변수를 여러 개의 bin으로 자르고(사용자 지정) bin당 관측수를 막대그래프로 표현합니다. 3️⃣ 히트맵 (Heat Map) 히트맵은 두개의 범주형(Categ..

Lv4 | EDA | 다중공선성 VIF(분산 팽창 요인)

이번에는 변수의 다중공선성을 확인하는 방법 중 하나인 VIF(variance Inflation Factors, 분산팽창요인)에 대해 알아보자 VIF는 변수간의 다중공선성을 진단하는 수치이며, 범위 1부터 무한대이다. 통계학에서는 VIF값이 10이상이면 해당 변수가 다중공선성이 있는 것으로 판단한다 VIF를 구하는 수식은 VIFk = 1 / (1 - Rj2) 이다. 여기서 VIFk 는 k번째 변수의 VIF 값을 의미하고, Rj2 는 회귀분석에서 사용하는 결정계수이다. # 결과값을 저장할 VIF라는 이름의 리스트 생성 vif = [] # values atribution(속성) 이용해 train 데이터의 값만 추출 train_val = train.values # variance_inflation_factor ..

Lv4 | EDA | seaborn |다중공선성 Scatter plot

다중공선성 다중공선성은 상관관계가 높은 독립변수들이 동시에 모델에 포함될 때 발생합니다. 만약 두 변수가 완벽하게 다중공선성에 걸려있다면, 같은 변수를 두 번 넣는 것이므로 모델이 결과값을 추론하는데 방해가 될 수 있다. 다중공선성 확인 다중공선성을 확인 하는 방법은 크게 3가지가 있다. 1. scatter plot을 통한 확인 2. hearmap 그래프를 통한 확인 3. VIF을 통한 확인 Scatter plot(산점도 그래프)는 두 개의 연속형 변수에 대한 관계를 파악하는데 유용하게 사용할 수 있다. x 데이터가 증가함에 따라 y데이터가 증가하는 경향을 보이는데, 이럴 경우 두 변수의 상관도가 높다고 해석할 수 있다. #scatter plot을 그릴 변수 지정 x_data = train['residu..

Lv4 | EDA | seaborn | heatamp

히트맵 (Heat Map) 히트맵은 두개의 범주형(Categorical) 변수에 대한 반응변수의 크기를 색깔의 변화로 표현하는 것입니다. 예를 들어, 일 별 기온을 보고자 할때 , 매일 온도를 히트맵으로 표현하여 온도 변화의 추이를 볼 수도 있습니다. 데이터 분석 과정에서는 변수별 상관관계를 확인 할때 히트맵 그래프를 많이 사용합니다. 상관관계를 파악하는 이유는 바로 다중공선성 때문인데, 다중공선성은 전처리 부분에서 자세히 설명 드릴 예정입니다.

카테고리 없음 2021.08.29

Lv4 | EDA | 2/5 | seaborn distplot

seabron의 distplot 함수는 데이터의 히스토그램을 그려주는 함수이다. 히스토크갦이랑 수치형 데이터 분포를 정확하게 표현해주는 시각화 방법이다. 변수를 여러개의 bin으로 자르고(사용자 지정) bin당 관측수를 막대그래프로 표현한다. #히스토그램을 그릴 변수지정(변수는 1개만) data =train['fixed acidity'] #distplot 함수로 히스토그램을 그립니다. sns.distplot(data, bins=100)

Lv4 | EDA | 1/5 | seaborn pairplot

seabron의 pairplot은 데이터에 들어 있는 각 컬럼(열)들의 모든 상관 관계를 출력한다. 3차원 이상의 데이터라면 pairtplot 함수를 사용해 분포도를 그리면 손쉽게 모든 변수간의 상관관계를 얻을 수 있다. pairplot은 grid(격자) 형태로 각 집합의 조합에 대해 히스토그램과 분포도를 그린다. #"data"라는 변수에 train의 "fixed acidity"부터 "chlorides"까지의 변수를 저장해주세요 data = train.loc[:,'fixed acidity':'chlorides'] #data의 pairplot을 그려보세요 sns.pairplot(data)

Lv3 | 튜닝 | Bayesian Optimization 실습

# X에 학습할 데이터를, y에 목표 변수를 저장해주세요 X = train.drop(columns=['index','quailty']) y = train['quality'] # 랜덤포레스트의 하이퍼 파라미터의 범위를 dictionary 형태로 지정해주세요 ## Key는 랜덤포레스트의 hyperparameter이름이고, value는 탐색할 범위 입니다. rf_parameter_bounds = { 'max_depth' : (1,3) #나무의 깊이 'n_estimators' : (30,100), } # 함수를 만들어주겠습니다. # 함수의 구성은 다음과 같습니다. # 1. 함수에 들어가는 인자 = 위에서 만든 함수의 key값들 # 2. 함수 속 인자를 통해 받아와 새롭게 하이퍼파라미터 딕셔너리 생성 # 3. 그..

Lv3 | 튜닝 | 그리드, 랜덤 서치 vs Bayesian Optimization

이번 시간에는 Hyper Parameter의 3가지 튜닝 방법을 비교해보겠습니다. 1. GridSearch 기법: =사전에 탐색할 값들을 미리 지정해주고, 그 값들의 모든 조합을 바탕으로 성능의 최고점을 찾아낸다. 장점: 내가 원하는 범위를 정확하게 비교 분석이 가능하다. 단점: 시간이 오래걸린다. (4개의 파라미터에 대해서, 4가지 값들을 지정해두고, 한번 탐색하는데 1분이 걸린다면 -> 4*4*1분 = 16분) 소요) 성능의 최고점이 아닐 가능성이 높다. "최적화 검색" (여러개들을 비교 분석해서 최고를 찾아내는 기법)이지, "최적화 탐색"(성능이 가장 높은 점으로 점차 찾아가는 기법)이 아니다. 2. Random Search 기법: 사전에 탐색할 값들의 범위를 지정해주고, 그 범위 속에서 가능한 조..

파이썬 기초 - 7

필요한 라이브러리 불러오기 import pandas as pd import numpy as np import matplotlib.pyplot as plt import seaborn as sns 데이터셋 불러오기 # mpg 데이터셋을 불러옵니다. df = sns.load_dataset('mpg') df 데이터셋 일부만 가져오기 데이터 앞부분 df.head() 데이터 뒷부분 df.tail() 요약하기 df.info() 결측치 보기 df.isnull().sum() 결측치 시각화하기 sns.heatmap(df.isnull(), cmap="Grey_r") 기술 통계 구하기 describe 를 통해 범주형 변수에 대한 기술통계를 보기 df.describe(include='object') 범주형 변수 범주형 데이터 ..

Lv3 | 튜닝 | Bayesian Optimization

Bayesian Optimization 은 하이퍼 파라미터 튜닝과 관련된 내용이다. 우리가 흔히 알고 있는 하이퍼 파라미터 튜닝은 Grid Search, Random Search이다/ 하지만 그 2가지에는 공통적인 문제점이 있다. '최적의 값을 찾아갈 수 없다' 라는 문제점입니다. 이를 해결하기 위한 방법 중 하나가 'Bayesian Optimization' 이다. Bayseian Optimization은 보통 1. 'Gausain Process'라는 통계학을 기반으로 만들어진 모델로, 여러개의 하이퍼 파라미터들에 대해서, 'Aqusition Function' 을 적용했을 때, 가장 큰 값이 나올 확률이 높은 지점을 찾아낸다. 우리가 다룰 Bayesian Optimization 패키지에서는 다음과 같은 ..

파이썬 데이터 분석을 위한 수학 & 통계 - 5회차

상관분석과 회귀분석 - 인과관계 예측 => 좋은 의사결정 - 상관분석과 회귀분석 : 변수간의 관련성 분석 - 선형관계: 두 변수간의 선형관계를 계량적으로 분석 - 회귀분석: 변수를 설명변수와 종속변수로 구분하여, 종속변수를 설명변수의 특정한 함수 형태로 설명할 수 있는지를 분석 1. 상관분석 두 확률변수 X와 Y의 상관관계(선형관계)의 부호와 강약을 나타내는 척도 상관계수의 특성 ① ρXY의 범위는 -1≤ρXY≤1 ② 두 변수가 서로 독립이면 두 변수 간에 상관관계가 없으며, ρXY =0 ③ ρXY =0 이면 두 변수 간에 상관관계(선형관계)가 없다. 그러나 비선형관계는 있을 수 있기 때문에 두 변수가 서로 독립이라는 보장은 없다. ④ X와 Y가 정규분포를 따르는 경우, ρXY =0 이면 X와 Y는 독립..

Lv3 | 모델링 | 교차검증 실습 K-Fold

교차 검증의 정의와 반복문으로 train-valid로 나누는 방법을 저번에 알아보았다. 이를 실습해보겠다. 이번 시간의 내용을 위의 이미지와 함께 정리하면 다음과 같다. 1. K-Fold를 이용해서 Train 과 Valid Data를 나눈다. 2. Model을 이용해서 train 데이터를 학습한다. 3. Model을 이용해서 valid 데이터를 예측해 성능을 확인한다. 4. Model을 이용해서 test 데이터를 이용한다. 5. n_splits를 5호 설정한다면, 5개의 결과값들에 대한 "최빈값"을 이용해 가장 등장할 가능성이 높은 결과값으로 결정한다. 6. 결과를 제출한다. # "X"라는 변수에 train의 "index"와 "quality"를 제외하고 지정해 주세요 # "y"라는 변수에는 "qualit..

Lv3 | 모델링 | 교차 검증 정의 K-Fold - 2 : 교차검증

교차검증 K-Fold의 아이디어는 단순하다. "모든 데이터를 최소한 한 번씩 다 학습하게 하자!" 그래서 valid 데이터를 겹치지 않게 나누어 N개의 데이터셋을 만들어 낸다. 만약 데이터셋을 5개로 만든다고 하면, (==valid size가 20%) 겹치지 않게 위와 같은 모양으로 만들 수 있다. 그리고 반복문을 통해서 1번부터 5번 데이터들에 들어갔다가 나오면서, 데이터를 모두 최소한 한번씩은 학습한다. 실습 # sklearn에 model_selection 부분 속 KFold를 불러와보세요 from sklearn.model_selection import KFold # KFold에 n_splits = 5, shuffle = True, random_state = 0이라는 인자를 추가해 "kf"라는 변수에..

추천시스템 1회차

추천 시스템은 왜 필요한가? 추천의 원줄기는 검색으로부터 시작됐다. 만약 상품 수가 적을 때는 추천 시스템의 매력도는 없다고 볼 수 있다. 하지만 정보의 풍요로 정보를 찾는데 시간이 너무 오래 걸려 추천시스템의 중요도가 높아졌다. 과거에는 유저가 접할 수 있는 상품과 컨텐츠가 예를 들어 TV채널, 영화관, 백화점, 신문 등과 같이 제한적이었다. 하지만, 정보의 부족이 풍요로 바뀌게 되고, Few Popular items 들이 Long Tail Phenomenon으로 변화하게 됨에 따라 웹과 모바일 환경은 다양한 상품, 컨텐츠를 등장하게되었다. 이렇게 다양한 환경 속에서 사용자들은 정보를 찾는데 시간이 오래 걸린다. 어디에서 어떤 키워드로 원하는 정보를 어떻게 찾아야 하는지 모를 수 가 있기 때문이다. L..

Lv3 | 모델링 | 교차 검증 정의 K-Fold - 1 : Hold-out

Hold-out Hold-out은 단순하게 Train 데이터를 (train,valid)라는 이름의 2개의 데이터로 나누는 작업이다. 보통 train : valid = 8 : 2 혹은 7 : 3의 비율로 데이터를 나눈다. 데이터를 이렇게 나누는 이유가 무엇일까? 이미지를 통해서 추가 설명을 하자면 Train이 train.csv를 통해서 불러온 데이터라면, train은 Train 의 거대한 데이터를 8 : 2로 쪼갠 작은 부분이다. test(=valid)는 Train의 거대한 데이터를 8 : 2로 쪼갠 작은 부분이다. 모델이 80%의 데이터를 통해서 학습하고, 20%의 데이터를 예측한다면, 어느정도의 성능이 나올지 가늠할 수 있다. 다만 Hold-out 의 문제점은 데이터의 낭비이다. 데이터 사이언스에 있어..

Lv3 | 모델링 | 모델 실습 RandomForestClassifier()

랜덤포레스트 분류 모형을 "random_classifier"라는 변수에 저장하세요. random_classifier = RandomForestClassifier() "X"라는 변수에 train의 "quality" 피쳐를 제거하고 저장하세요. X = train .drop(columns=['quality']) "y"라는 변수에 정답인 train의 "quality" 피쳐를 저장하세요. y = train['quality'] "random_classifier"를 X와 y를 이용해 학습시켜보세요. random_classifier.fit(X,y)

Lv3 | 모델링 | 모델 정의 RandomForestClassifier()

# 랜덤포레스트 분류 모형을 불러오세요 from sklearn.ensemble import RandomForestClassifier # 랜덤포레스트 분류 모형을 "random_forest"라는 변수에 저장하세요 random_forest = RandomForestClassifier() 다만 이번에는 “회귀 모형”이 아닌 “분류 모형”을 사용해보자 회귀 모형은 집값, 주가, 시가 등등 특정한 값을 맞추는 모형이라면, 분류 모형은 어떤 그룹에 속할지를 예측하는 모형이다. 우리가 다루고 있는 “와인 품질 분류”는 말 그대로, 와인의 품질이 어느정도일지를 예측하는 문제이기 때문에, “분류 모델”을 사용해서 예측한다. Randomforest 모형을 불러와 정의하는 실습을 해보겠다 Random Forest 모형은 위..

300x250
300x250