Statistics/ML | Python 14

pandas_profiling 안될 땐 ?

문제 EDA를 급하게 해야되는데 pandas_profiling 이 작동을 안했다. 이런 일은 왜 급할 때 터지는 가... 패키지 이닛들 다뜯어보고 스텍오버플로우를 뒤젹여도 안나왔음. 에러 문구 는 아래와 같은 것들이 출몰. --------------------- --------------------- --------------------- --------------------- --------------------- --------------------- 1. TypeError: concat() got an unexpected keyword argument 'join_axes' 2. OSError: '......\\lib\\site-packages\\pandas_profiling\\pandas_profi..

Gradient Boosting Regressor

앙상블(ensemble) 여러 머신러닝 모델을 연결하여 더 강력한 모델을 만드는 기법 분류와 회귀 문제의 다양한 데이터셋에서 효과적인 앙상블 모델 예시 랜덤 포레스트(random forest) 그래디언트 부스팅(gradient boosting) 부스팅(Boosting) Boosting은 약한 학습기(Weak Learner)를 여러 개 결합하여 강한 학습기(Strong Learner)를 만드는 방법이다. 약한 학습기란, 예측 성능이 랜덤 추측 수준이거나 그 이하인 모델을 말하며, 결정 트리가 대표적인 예이다. 그래디언트 부스팅(Gradient Boosting) 고객의 구매 이력 데이터를 통하여 다음 구매를 예측한다고 가정해보자. 이를 예측하기 위해 어떤 방법을 사용할 수 있을까? 그래디언트 부스팅은 Boo..

딥러닝 기초 AI Modeling (1)

ML? 머신러닝의 Linear 계열 모델은 선형방정식의 형태로 Data를 근사화, 근사화된 값을 실제 값과 비교해 Loss 계산. 이 후, Loss 값을 줄여나가는 형태로 학습을 진행. 기울기가 최소가 되는 지점을 찾아나가면 Loss 가 최저점인 부분과 일치(미분계수 = 0) 범주형인 경우는 아래처럼 sigmoid 함수 사용하여 Data 변환. 딥러닝? Node 들은 개별 ML modeling Unit(ex. 머신러닝의 linear model들) 이며 (특징 값 추출), 각 노드에서 더 다양한 특징 값을 추출, 더 깊은 Layer를 쌓아 모델링하는 알고리즘이다. Vanishing Gradient 문제 Sigmoid function은 미분할 경우, 0 부분에서는 0.25, 이외의 범위에서는 0인 값을 갖아..

wine 데이터 분석

Intro 와인데이터 셋을 분석해보기. EDA 데이터 불러오기 분석 목표는 와인의 구성 요소(input)가 주어졌을 때 '레드'와 '화이트'를 예측(output)하는 것. 데이터 split 머신러닝 모델을 만들 때는 '학습 데이터'로 모델을 학습한 후, 모델 성능을 평가할 때는 '평가 데이터'로 성능을 평가하기 때문에 전체 데이터를 나눠야한다. 보통 7:3이나 8:2로 나눈다. 데이터에 대한 선연구가 있다면, 그 연구에서는 어떻게 스플릿했는지 참고하는 것도 바람직하다. 데이터 규모가 매ㅐㅐ우 큰 경우는 99:1 비율로 나누기도 한다. 파이썬 sklearn.model_selection 모듈에서 train_test_split 기능을 불러와 사용 from sklearn.model_selection import..

머신러닝이 뭐여 9탄 (feat. k-means 군집분석, 연관규칙분석, 신경망)

Intro K-means 군집분석 군집분석 k-means 군집분석 k-means 군집분석 실습 연관규칙분석 연관규칙분석이란? 연관규칙분석의 측정지표 실습 신경망 신경망 모형이란? 신경망 작동방식 신경망 실습 K-means 군집분석 군집분석 군집분석(Clustering Analysis)은 전체 데이터들을 특성에 따라 비슷한 집단으로 묶어주는 분석 모델 정답이 없음, 비지도학습의 일종 전체 데이터를 훑고 비슷한 아이들끼리 묶어줌 군집분석 결과로 묶인 집단을 클러스터(Cluster) 데이터들의 거리(유사성)을 기반으로 데이터를 묶는다는 점에서 K-최근접 이웃법(K-NN)과 비슷하게 보일 수 있지만, K-최근접 이웃법(K-NN)은 정답을 기준으로 하는 지도 학습이고, 군집분석은 정답이 없는 비지도 학습임 군집분..

머신러닝이 뭐여 8탄 (feat. 의사결정나무, 앙상블, 랜덤포레스트)

Intro 의사결정나무 의사결정나무의 개념 지니계수 의사결정나무의 실습 앙상블과 랜덤포레스트 앙상블 모델 랜덤포레스트 랜덤포레스트 실습 의사결정나무 의사결정나무의 개념 의사결정나무(DecisionTree)는 지도학습의 일종으로 데이터에 있는 패턴을 찾아내고 조건을 통해 데이터를 분할하며 예측하는 모델 조건을 통해 데이터를 분리하여 데이터를 나눌 수 있는 기준이 확립되면 새로운 데이터가 들어왔을 때도 조건을 활용해 데이터를 예측할 수 ▶ PetalWidth가 0.8보다 작거나 같지 않으면서, ▶ PetalWidth가 1.75보다 작거나 같지 않으면서, ▶ PetalLegnth가 4.85보다 작거나 같지 않은 데이터 ▶ 조건이 충족된 데이터에 virginica가 많다면 모델은 앞으로 해당 조건을 가진 데이터..

머신러닝이 뭐야 7탄 (feat. 그래프 그리기, KNN)

Intro - 그래프그리기 - KNN - 유클리디안 거리 그래프 제목 pyplot 모듈의 title 함수를 사용하여 그래프에 제목을 붙일 수 있음 title함수 안에 문자열로 제목을 입력하고, fontsize 옵션에 제목의 폰트 사이즈를 지정가능 그래프를 그리는 함수와 이름을 붙이는 함수는 하나의 코드 블럭 안에 작성하여 한 번에 실행해야함 x = data['특성이름'].value_counts().index y = data['특성이름'].value_counts() plt.bar(x, y) plt.title('그래프이름', fontsize = 폰트크기) 축이름 추가 plt.xlabel('x축이름', fontsize = 폰트크기) plt.ylabel('y축이름', fontsize = 폰트크기) 가로로 그리기..

머신러닝이 뭐여 6탄 (feat. EDA !! )

Intro - EDA, 탐색적 데이터 분석개념과 하는 법 범주형 데이터 탐색 (categorical) info() object : string 형태 float, int : numeric 형태 value_counts() levels() in R data['특성이름'].value_counts() 수치형 데이터 탐색 (int64, float64) describe() 기초 통계 값을 확인 data.describe() 시각화를 통한 데이터 탐색 막대그래프 주로 범주형 데이터의 빈도 분석 x = data['특성이름'].value_counts().index → 범주의 이름이 할당됨plt.bar(x, y) y = data['특성이름'].value_counts() → 빈도수가 할당됨 x = data['gender'].v..

머신러닝이 뭐여 5탄 (feat. 데이터 종류, 조건을 이용한 추출, 결측치, 이상치)

Intro - 데이터 종류 - Numpy 와 Pandas - 데이터 불러오기 - 데이터 살펴보기 - 새로운 열 만들기 - 특정 조건으로 검색 - 결측치 - 이상치 데이터 사이언스란? 데이터로부터 원하는 내용을 얻기 위해 과학적인 방법을 사용하는 모든 분야를 통틀어서 부르는 용어 데이터를 통해 얻은 지식과 인사이트를 신제품 개발이나 마케팅 등 여러가지 필요한 목적에 따라 활용 여러가지 분석방법을 알고 있을 수록 데이터가 가지고 있는 숨은 가치를 발견할 확률이 높아짐 데이터의 종류 데이터의 구성 형태에 따른 분류 정형 데이터 규칙에 따라 정리된 데이터 정해 놓은 형식과 구조에 맞게 저장 데이터에 대한 부분 검색이나 갱신, 삭제, 연산, 분석 작업이 편리 학교의 성적 데이터, 회사의 매출 데이터 비정형 데이터..

머신러닝이 뭐여 4탄 (feat. 반복문, 모듈)

Intro - 조건문 IF - 여러개 조건 elif - 반복문 while - 반복문 for - 함수의 종류 조건에 따른 함수 조건문 if 조건문 if는 상황에 따라 다른 결과를 출력하는 기능을 가지고 있음 if 뒤에 True/False가 구분될 수 있는 조건을 작성하고 콜론(:)으로 마무리 두 번째 줄에는 띄어쓰기 네 칸을 하고 난 후 조건이 True 일 때 실행될 행동을 작성 세 번째 줄에는 else를 작성하고 콜론(:)으로 마무리 네 번째 줄에는 띄어쓰기 네 칸을 하고 난 후 조건이 False 일 때 실행될 행동을 작성 if 조건 :else : 행동2 행동1 # number 변수에 1을 할당(=) 해보세요. # 만약 number가 3보다 작다면 'number는 3보다 작습니다.' 를 출력하고, # 그..