목록전체 글 (408)
오답노트
Logistic Regression 시그모이드 함수라고도 불려진다. 회귀는 수치형 데이터를 예측하는 사용하지만, 로지스틱 회귀는 범주형 데이터를 예측하는데 사용된다. 선형회귀는 데이터를 가장 잘 표현하는 직선을 찾는 것이다. 하지만 0,1 과 같은 값만 존재한다면 선형회귀로는 데이터를 예측할 수 없다. 하지만 0 또는 1로 수렴하는 함수를 만들면 이러한 문제를 해결할 수 있다. (출처 : https://odsc.medium.com/logistic-regression-with-python-ede39f8573c7) 승산 (Odds Ratio) 승산은 사건이 일어날 가능성 대 사건이 일아나지 않을 가능성의 비다. 예를 들어 일어날 확률이 80% 라면 승산은 0.8(일어날 확률) / 0.2(일어나지 않을 확률)..
KNeighborsRegressor KNN 회귀 알고리즘이다. 수치데이터를 예측할 수 있다 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsRegressor from sklearn.metrics import * path = 'boston.csv' data = pd.read_csv(path) data.drop(['black'], axis = 1, inplace = True) target = 'medv' x = data.drop(target,axis=1) y = da..
KNN 예측 데이터의 변수로 부터 실측 데이터의 변수 사이의 거리를 계산하여 그 중 가장 가까운 k개 데이터의 평균으로 타겟 데이터를 예측하는 알고리즘 (출처 : https://pub.towardsai.net/k-nearest-neighbors-knn-algorithm-tutorial-machine-learning-basics-ml-ec6756d3e0ac) 장점으로는 데이터의 분포 형태와 상관이 없다. 설명변수의 개수가 많아도 사용가능하다. 단점으로는 계산시간이 오래걸리고, 훈련 데이터를 모델에 함께 저장하고 있다. 해석이 어렵다. K 값 KNN은 인접한 k 개의 데이터의 평균으로 판단한다. k를 어떻게 설정하느냐에 따라 예측 결과가 달라지게 된다. k 값을 최대 train 데이터의 개수까지 키울 수 있..
선형회귀 (Linear Regression) 데이터를 하나의 직선으로 요약이 가능하다면 선형회귀 알고리즘을 사용할 수 있다. 데이터를 설명 할 때, 여러가지 직선으로 설명할 수 있겠지만 그중에서 가장 잘 설명하는 직선 한 개를 선정하는 방법이다. (출처 : http://primo.ai/index.php?title=Linear_Regression) 단순회귀와 다중회귀로 나눌 수 있다. 단순회귀는 Feature가 1개를 사용하고 다중회귀는 Feature가 두개 이상을 사용하여 모델링하는 것을 말한다. 단순회귀 모델링 코드 import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection impor..
모델, 모델링 모델은 데이터로 부터 패턴을 찾아 수식으로 정리한 것이다. 모델링은 오차가 적은 모델을 만드는 과정이다. 목적 샘플을 가지고 전체를 추정하기위해 모델링을 한다. 패턴을 찾는 방법 패턴을 찾는 방법은 두 가지가 있다. 지도학습 (Supervised Learning) 비지도학습 (Unsupervised Learning) 지도학습 지도학습은 답을 알려주면서 패턴을 찾게하는 방식이다. 답에는 숫자형(Regression)과 범주형(Classification) 두가지가 있다. 비지도학습 비지도학습은 데이터 안에서 비슷한 데이터끼리 모아 패턴을 찾게하는 방식이다. 오차 오차는 데이터가 벗어난 정도를 나타낸다. 수식으로는 아래와 같이 나타낼 수 있다. 실제 값 = 모델 + 오차 이 오차를 최소화 하는 것..
Opening Day zoom을 통해서 AI 개발자 트랙과 DX 컨설턴트 트랙 모두가 모여 오리엔테이션을 가지게 되었다. 선남선녀의 MC분들이 진행을 맡으셨는데, 진행이 매끄러운 것을 보니 상당히 연습하신 듯하다.. 기본적으로 앞으로의 일정을 구체적으로 설명하는 오리엔테이션이 진행되었는데, 에이블 스쿨 1기 선배님들 중 KT 입사하신 두 분(AI 개발자, DX 컨설턴트 각 1분씩)의 에이블 스쿨 입교에 대한 축하 메시지도 있었다. 오랜만에 영상을 보며 저렇게 되고 싶다고 생각하게 되었다. 래퍼 unofficialboyy의 축사와 함께 기분 좋은 로고송으로 AIVLE School 첫날이 시작됐다! Git Git 강사님은 엄청 유명한 강사님이 오셨다. (IT 네임드도 모르는 나도 알 정도..) 하루 만에 g..
수치 → 수치 시각화 [matplotlib] scatter (산점도) plt.scatter(dataframe['feature'], dataframe['target']) # plt.scatter('feature', 'target', data = dataframe) plt.show() 수치화 [데이터 분석] 이변량 분석 - 수치 데이터와 수치 데이터 1 import scipy.stats as spst spst.pearsonr(dataframe['feature'], dataframe['target']) 수치 → 범주 [데이터 분석] 이변량 분석 - 수치 데이터와 범주 데이터 시각화 kdeplot (밀도함수 그래프) sns.kdeplot(x='feature', data = dataframe, hue ='targ..
시각화 시각화는 히스토그램과 밀도함수 그래프 각각 할 수 있다. 이 때는 범주별로 겹쳐서 출력 후 비교한다. 밀도함수 그래프 sns.kdeplot(x='Age', data = titanic, hue ='Survived', common_norm = False) plt.show() hue 옵션으로 범주를 설정해줘야 한다. 그리고 common_norm 옵션을 False로 해야 정확한 결과를 얻을 수 있다. common_norm이 True면 두 면적의 합이 1이 되게 한다. False를 입력하면 각 면적이 1이 되도록 출력한다. 표 해석은 다음과 같이 할 수 있다. 0세 부터 20세까지는 산 사람이 많고 약 30세부터 40세까지는 죽은 사람이 많다. 40세부터 60세까지는 산 사람이 조금 많고 60세부터 80세..
범주 데이터와 범주 데이터 범주 데이터와 범주 데이터를 비교하는 방법은 교차표를 만들어 각 범주마다 비율을 비교해보면 된다. 만약 비율의 차가 거의 없으면 상관관계가 적고, 차가 클수록 상관관계가 크다고 할 수 있다. 교차표 만들기 pandas의 crosstab함수를 사용해서 쉽게 만들 수 있다. 하지만 이때 normalize 옵션을 'index'로 지정해야한다. normalize 옵션이 'index'이면 행의 합이 1이다. pd.crosstab(titanic['Survived'], titanic['Embarked'], normalize = 'index') 시각화 boxplot 과 mosaic으로 표현할 수 있다. 여기서는 mosaic으로 표현하는 법을 알아보겠다. mosaic은 두 범주 데이터의 비율 ..
범주 데이터와 수치 데이터 비교 범주 데이터와 수치 데이터를 비교하는 방법은 평균을 비교하는 것이다. 하지만 평균은 실제와의 오차가 큰 경우가 존재하기에 무조건 신뢰할 수 있는 데이터는 아니다. 즉, 실제 값과 평균 값의 오차가 작을수록 신뢰할만한 데이터라고 할 수 있다. 표준 편차 한 집단에서 평균을 구할 때, 집단의 값들이 평균으로부터 얼마나 벗어나 있는지를 나타내는 값이다. 표본 평균 표본은 모집단에서 임의의 수 만큼 값을 선정하는 것이다. (Sampling) 표본 평균은 모집단에서부터 임의로 값들을 선정하여 평균을 계산하는 것을 의미한다. 이것은 모집단의 추정치가 된다. 하지만 처음 평균에 대한 신뢰도를 의심할 때와 마찬가지로 표본 평균과 모집단의 평균이 일치하기는 힘들다. 표준 오차 모집단의 평..