빅데이터 분석기사/작업 유형 2 (ML) 14

빅데이터분석기사 2유형 주의할 점, 실수하기 좋은 점, 많이 뜨는 오류

1. concat concat 시 X, X_submission으로 해야함 -> X,Y 아님 concat() got multiple values for argument 'axis' 인덱싱 관련 오류 -> X, X_submission은 꼭 인덱싱 해야함 dfX = pd.concat([X, X_submission],axis=0,ignore_index=True) 2. Y 분포 확인해보기 Y.value_counts('Segmentation',normalize=True).sort_values(ascending=False) 3. 라벨인코딩 라벨인코딩 사용시 astype('category').cat.codes 사용 !! feature = ['Gender','Ever_Married','Graduated','Profess..

고객 구매 데이터로 성별예측 모형

1. 데이터 불러오기 x_train import pandas as pd X = pd.read_csv('X_train', encoding='cp949') print(X.head(2)) cust_id 총구매액 최대구매액 환불금액 주구매상품 주구매지점 내점일수 내점당구매건수 \ 0 0 68282840 11264000 6860000.0000 기타 강남점 19 3.8947 1 1 2136000 2136000 300000.0000 스포츠 잠실점 2 1.5000 주말방문비율 구매주기 0 0.5270 17 1 0.0000 1 y_train Y = pd.read_csv('y_train.csv') print(Y.hear(2)) cust_id gender 0 0 0 1 1 0 x_test X_submission = pd.r..

이항분류 성능평가, 예측값 저장

성능 좋은 rf, xgb로 모델 생성 data = make_sample(seedno=1234, size=50000) model_rf = RandomForestClassifier(n_estimators=500) ModelTrain(model_rf, data) [(65243, 3), (16311, 3), (65243,), (16311,)] train 성능: 1.0 test 성능: 0.9983446753724481 model_xgb = XGBClassifier(n_estimators=500) ModelTrain(model_xgb, data) train 성능: 1.0 test 성능: 0.9984084231145935 오분류표 sklearn.metrics.confusion_matrix(y_treu, y_pred,..

이항분류 모델링(lr, knn, dt, rf, xgb)

# 학습용 데이터 data = make_sample(seedno=1234, size=20000) # 평가용 데이터 all = make_all() X = all.iloc[:, :3] Y = all['합격여부'] 1. LogisticRegression - 독립 변수의 선형 결합을 이용해 사건 발생 가능성을 예측하는 데 사용되는 통계 기법 - 반복하면서 기울기 값 갱신, 기울기 미분값이 0이 되는 지점 찾음 - max_itst, tol 변경해 성능 개선 - max_iter : 반복 횟수 - tol : 허용오차, 반복을 중단하는 조건으로 사용됨 - panalty : 종류 - C : panalty 세기 - 그 외 파라미터 (penalty='l2', *, dual=False, tol=0.0001, C=1.0, fi..

이항분류 파생변수 생성, 스캐일링

합격/불합격 여부를 결정하는 평균, 과락에 관한 파생변수 추가 # 파생변수 생성/추가 data['평균'] = data[['국어','영어','수학']].mean(axis=1) data['최저'] = data[['국어', '영어', '수학']].min(axis=1) 파생변수 추가시 성능 개 # 파생변수 생성시 성능 개선됨 # 항상 그런 것은 아님 for no in [1234, 1225, 1245] : model5 = LogisticRegression(max_iter=1000) data = make_sample(seedno=no, size=20000) data['평균'] = data[['국어', '영어', '수학']].mean(axis=1) data['최저'] = data[['국어', '영어', '수학']]...

충분한 데이터의 중요성

데이터 성능 비슷함 0.94 정도 # 균형 데이터 # 1234, 1225, 1245 # 3개의 데이터가 비슷한 성능 for no in [1234, 1225, 1245] : model1 = LogisticRegression(max_iter=1000) data = make_sample(seedno=no, size=20000) ModelTrain(model1, data) [(25961, 3), (6491, 3), (25961,), (6491,)] train 성능: 0.9448403374292208 test 성능: 0.9440764134956093 [(26113, 3), (6529, 3), (26113,), (6529,)] train 성능: 0.9466932179374258 test 성능: 0.948384132..

sample 생성 함수 & 모델 학습 및 성능 평가 함수

import # 사용할 라이브러리 import import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression sample 생성 모델 # sample로 사용할 DataSet을 생성하는 함수 작성 # X: 국어, 영어, 수학 점수 # Y: 합격여부 (X의 평균 60이상, 과락 40점 미만) # seedno : 랜덤 수 생성 규칙 # size : 랜덤 수 생성 행의 수 # step=0 (균형), step=다른수 (불균형) def make_sample(seedno, size, step=0): colnames = ['국어..

GridSearchCV

GridSearchCV : 최고의 hyperparameter를 찾기 위해 사용함 - sklearn.model_selection.GridSearchCV - (estimator, param_grid, *, scoring=None, n_jobs=None, refit=True, cv=None, verbose=0, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False) - estimator : 학습 모델 - param_grid : 실행해볼 hyperparameter 목록, dict 객체 - cv : CrossValication에 사용할 나누는 개수, 기본값 = 5 - verbose : 0(default) : 메시지 출력 안함, 1 : 간단한 메시지..

모델 학습, 평가, 예

머신러닝 모델 인터페이스 - 모델의 기반 클래스 모든 머신러닝 모델(Estimator)은 반드시 상속 구현 - 학습/훈련, 예측, 평가/검정 방법 인터페이스 일관성 제공 - BaseEstimator를 상속받아 만들어진 모델들은 개별 알고리즘으로 구현, 동일 interface를 사용 - fit(X_train, y_train) : 모델 학습/훈련 - score(X_test, y_test) : 성능 측정 : 1에 가까울수록 좋은 성능 - predict(X_test) : 예측 값 반환 help(KNeighborsClassifier) # KNN # 기본값! 나타남 # p=2, metric='minkowski' 거리임! 유클리안 거리를 사용함 KNeighborsClassifier(n_neighbors=5, *, w..

scikit-learn libraray 사용, 데이터 분할

데이터 셋 가져오기 라이브러리 import import pandas as pd from sklearn.preprecessing import StandardScaler from sklearn.model_selection imort train_test_split from sklearn.neighbors import KNeighborsClassifier # [1] bigdata/iris_data.csv 를 가져오기 한다 # 어떤 붓꽃인지 맞추기 !! # 3가지 종류가 있음 0,1,2로 맞춰놓음 df = pd.read_csv('iris_data.csv') df.head() sepal length (cm)sepal width (cm)petal length (cm)petal width (cm)target 05.13..