반응형

자기계발 53

[빅데이터분석기사] 17 서포트 벡터머신

서포트 벡터머신(Support Vector Machine) 일반적으로 성능이 뛰어난 알고리즘이다. 데이터 크기가 중간크기 이하, 여러 변수를 기준으로 분류하는 다소 복잡한 과제에 적합한 머신러닝 기법이다. 레이블 법주를 선형적으로 구분하거나 비선형적으로 분류하는 선 혹은 초평면을 찾는 것이 핵심 과제이다. 두 집단을 가장 멀리 떨어뜨리는 최적선을 찾는다. scikit-learn 서포트 벡터머신은 사이킷런의 svm안에 있다. 분류 알고리즘으로 SVC(Support Vector Classification) 회귀 알고리즘으로 SVR(Support Vector Regression)을 대표적으로 사용한다. SVC에서는 C가 가장 중요한 하이퍼파라미터이며, 'kernel'도 중요하다. kernel은 'kernel=..

자기계발/Python 2022.06.22

[빅데이터분석기사] 16 인공신경망

인공신경망 인간의 뉴런구조와 활성화 작동원리를 근간으로 input(자극)과 ouput(반응)과의 연관을 구현한 알고리즘이다. 중간에 은닉층(hidden layers)과 노드(nodes)들을 깊고(deep) 넓게(wide) 두어 특성치로부터 분류와 회귀를 더 잘할 수 있도록 특징추출 및 분류 단계를 확장하는 역할을 할 수 있도록 한 모델이다. 입력층과 출력층 사이에 은닉층을 몇 개를 둘 건지, 은닉층에 노드를 얼마나 둘 것인지, 학습률 등 많은 파라미터가 있다. 양이 굉장히 방대하기 때문에 모두 다루지 못하고 결과 돌려보면서 간단히 실습하는데 의의를 둔다. scikit-learn 인공신경망은 사이킷런의 neural_ntework 안에 있다. 이 중 분류 알고리즘은 MLPClassifier, 회귀 알고리즘은..

자기계발/Python 2022.06.21

[빅데이터분석기사] 15 나이브 베이즈

나이브베이즈(Naive Bayes) 사건 B가 주어졌을 때 사건 A가 일어날 확률인 P(A|B), 조건부 확률과 베이즈 정리를 이용한 알고리즘 나이브(Naive)는 예측에 사용되는 특성치(X)가 상호 독립적이라는 가정하에 확률 계산을 단순화하기 위해 나이브(단순/순진한 가정)이라고 이름이 붙은 것이다. (모든 특성치들이 동등한 역할) 베이즈(Bayes)는 특성치(X)가 클래스 전체의 확률 분포에 대비하여 특정 클래스에 속할 확률을 베이즈 정리를 기반으로 계산한 것이다. 설명이 어려워서 그냥 그러려니 하고 넘어감 scikit-learn 분류문제에 사용되는 나이브베이즈는 사이킷런의 naive_bayes에 있다. 그 중 분류 문제에서는 가우시안 나이브베이즈(GaussianNB) 알고리즘을 주로 사용한다. Ga..

자기계발/Python 2022.06.21

[빅데이터분석기사] 14 K-최근접이웃법(KNN)

K-최근접 이웃법(K-Nearest Neighbor) 데이터들 간의 거리를 측정하여 가까운 k개의 다른 데이터의 레이블을 참조하여 분류하는 방법 주로 유클리디안 거리 계산법 또는 민코브스키 방법을 사용한다. (민코브스키 방법이 디폴트) 최적의 K수는 일반적으로 3에서 10 범위 내에서 찾으며, K값이 작을수록 정교한 분류와 예측이 가능하다. K값이 너무 작으면 과대적합 문제가 발생할 수 있으며, 너무 커도 과소적합 문제가 발생할 수 있기 때문에 적절한 K값을 찾는 것이 중요하다. (K값을 찾기 위해 그리드탐색 혹은 랜덤탐색을 적용한다) KNN은 모델기반 알고리즘이 아닌 케이스기반 알고리즘이다. 입력되는 데이터에 따라 결과와 성능이 크게 달라지며, 새로운 데이터를 학습하는 시간이 오래 걸려 실시간 머신러닝..

자기계발/Python 2022.06.21

[빅데이터분석기사] 13 로지스틱 회귀모델

로지스틱 회귀분석 종속변수가 범주형 자료일 때 적용하는 회귀모델 주택소유여부같은 범주형 레이블은 예측함수를 만들기 어렵기 때문에 평균 소유 비율로 변환한다. 본래의 자료를 확률-> 오즈(odds) -> 로그(log)로 변환하여 선형회귀모델을 적용한 모델이라고 할 수 있다. 1) scikit-learn LogisticRegression은 sklearn.linear_model 안에서 불러온다. LogisticRegression의 하이퍼파라미터는 'C', 디폴트 값은 'C=1'이다. 하위 옵션 중 solver라는 옵션은 연산 속도와 관련된 주요 하이퍼파라미터이다. 데이터양이 수백~수십만 건인 경우 solver='sag'로 설정하면 평균경사하강법을 적용하여 속도를 향상시킬 수 있다. 2) 데이터 준비 impor..

자기계발/Python 2022.06.20

[빅데이터분석기사] 12 다중분류

다중분류는 분류되는 범주가 3개 이상인 것을 말한다. import warnings warnings.filterwarnings("ignore") import pandas as pd data=pd.read_csv('Fvote.csv', encoding='utf-8') X=data[data.columns[1:13]] y=data[['parties']] 이번 장에서는 4개의 범주로 구분되는 지지정당(paries)으로 코드 작성을 해보겠다. 이전 장에서 타이핑했던 코드들 다시 활용하는거라 복습하는 느낌으로 작성 from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, str..

자기계발/Python 2022.06.20

[빅데이터분석기사] 11 모델평가

Final_model = LogisticRegression(C=10) Final_model.fit(X_train, y_train) pred_train = Final_model.predict(X_train) Final_model.score(X_train, y_train) pred_test = Final_model.predict(X_test) Final_model.score(X_test, y_test) 이번 장에서는 LogisticRegression(C=10)을 최종 모델로 하여 모델 평가를 진행할 것이다. 데이터불러오기 등 이전 단계와 동일하여 이전 섹션에 코드 이어서 작성했다. 1) 혼동행렬 얼마나 정분류 되었는지, 무엇이 오분류되었는지 확인하기 #혼동행렬로 정분류, 오분류 비율 확인 from sklea..

자기계발/Python 2022.06.20

[빅데이터분석기사] 10 하이퍼파라미터(Grid Search, Random Search)

LogisticRegression의 핵심 하이퍼파라미터는 'C'이며, 디폴트는 'C=1'이다. 하이퍼파라미터를 찾는 두 가지 방법(그리드탐색, 랜덤탐색)을 실습해 볼 것이다. 그리드탐색과 랜덤탐색은 실제로 머신러닝에서 많이 사용된다. 그리트탐색은 분석자가 모델, 하이퍼파라미터에 대한 경험과 직관이 있어야 좋은 결과를 보이며, 랜덤탐색은 무작위로 많이 찾아 돌려보는 탐욕적(greedy) 방법이고, 일반적으로 매우 효과적이다. (물리적 연산장치가 뒷받침되어야 한다는 조건도 있음) 1) 데이터 불러오기 #분석결과 외에 불필요한 내용이 나오지 않도록 하는 옵션 import warnings warnings.filterwarnings("ignore") import pandas as pd data=pd.read_cs..

자기계발/Python 2022.06.19

[빅데이터분석기사] 09 데이터 정규화

이전에 데이터 정규화 간단히 진행했던거랑 내용 거의 비슷하다. 복습하는 느낌으로 기록해본다. 1) 데이터 불러오기 및 확인 import pandas as pd data=pd.read_csv('Fvote.csv', encoding='utf-8') data.head() 역시나 이전에 만들어놨던 선거행동 Fvote.csv 데이터 불러온다. head()로 기술통계 살펴보면 평균, 편차 수준이 다르기 때문에 데이터 정규화가 필요하다. data.hist(figsize=(20,10)) 히스토그램을 봐도 변수들 분포가 연속성이 떨어지는 것을 볼 수 있다. 2) 특성(x)과 레이블(y) 나누기 #특성(x)과 레이블(y) 나누기 X=data.loc[:, 'gender_female':'score_intention'] y=d..

자기계발/Python 2022.06.19

[빅데이터분석기사] 08 데이터셋 분할과 모델검증

일반적으로 train 데이터셋과 test 데이터셋으로 구분하여 분석하지만, 모델 성능을 일반화하기 위해 교차검증과 검증데이터(valid data)를 추가로 두기도 한다. 1) 특성치(x), 레이블(y) 나누기 import warnings warnings.filterwarnings("ignore") import pandas as pd data=pd.read_csv('Fvote.csv', encoding='utf-8') data.head() 이전에 원핫인코딩을 했던 Fvote.csv 데이터셋을 불러와 데이터를 확인하는 작업이다. #특성변수(X) 데이터셋 따로 분리 X=data[data.columns[0:13]] #레이블(y) 변수 따로 분리 y=data[["vote"]] 특성변수(X)를 편한 방법으로 나눠주..

자기계발/Python 2022.06.18
반응형