Programming/Machine Learning (36) 썸네일형 리스트형 DataFrame 실습 import pandas as pd data= pd.read_csv("data/population_number.csv", encoding = "euc-kr") # 한글로 써지면 오류가 생겨 인코딩을 해주어야함 data data[data['2000'] 데이터 전처리 1. 결측치 처리 전략 NaN 데이터 모두 삭제 (complete drop) 데이터가 없는 최소의 개수 등의 규칙을 정해 삭제 데이터가 거의 없는 feature는 feature 자체를 삭제 최빈값, 평균값으로 NaN을 보간 KNN 같은 방법을 사용하여 근사 instance의 값으로 보간 # 결측치 확인하기 # nan 값이 얼마나 있는지 column별로 확인 df.isnull().sum() # 전체 data 개수 대비 NaN의 비율 df.isnull().sum() / len(df) # 결측치가 있는 row 삭제 # 튜플에서 데이터가 하나라도 없으면 삭제 df = df.dropna() # 모든 데이터가 NaN일 때만 삭제 df = df.dropna(how='all') # column을 기준으로 nan 값이 .. 파이프라인 Pipeline - 여러 처리 단계를 하나의 scikit-learn 추정기 형태로 묶어주는 파이썬 클래스 - fit, predict, score 메서드르 제공. - 분류기 같은 지도 학습 모델과 (데이터 스케일 조정 같은) 전처리 단계를 연결. import pandas as pd # 데이터셋 가져오기 data = pd.read_csv('경로/파일이름.csv', index_col='인덱스로 사용할 컬럼이름') # 데이터셋, X와 y로 나눠주기 y = pd.DataFrame(data['타겟 컬럼이름']) X = data.drop('타겟 컬럼이름', axis=1) from sklearn.pipeline import make_pipeline # StandardScaling과 LinearRegression을 동시.. 이진 분류 용어 - 이진 클래스 : 양성 클래스(관심 클래스), 음성 클래스 - 거짓 양성 ; false positive, type I error : 잘못된 양성 예측 오류 - 거짓 음성 ; false negative, type II error : 잘못된 음성 예측 오류 이진 분류의 오차 행렬 정밀도는 거짓 양성의 수를 줄이는 것이 목표 재현율은 거짓 음성을 피하는 것이 목표 F1 Score는 정밀도와 재현율을 결합한 지표 import pandas as pd # 데이터셋 가져오기 data = pd.read_csv('경로/파일이름.csv', index_col='인덱스로 사용할 컬럼이름') # 데이터셋, X와 y로 나눠주기 y = pd.DataFrame(data['타겟 컬럼이름']) X = data.drop('타겟 컬.. 그리드 서치 관심 있는 매개변수들을 대상으로 가능한 모든 조합을 시도. 일반화 성능을 최대로 높여주는 값을 찾는 것. GirdSearchCV는 교차검증을 사용. - 분류 : 기본값 StratifiedKFold - 회귀 : 기본값 KFold 교차 검증은 어떤 데이터셋에 대해 주어진 알고리즘을 평가하는 방법. 하지만 그리드 서치와 같은 매개변수 탐색 방법과 합쳐서 많이 사용. 많은 사람이 교차검증이라는 용어를 교차검증을 사용한 그리드 서치라는 의미로 주로 사용. GridSearchCV는 메타추정기 (meta-estimator, 다른 추정기를 사용해서 만든 추정기)이다. - fit : 최적의 매개변수를 찾아준다. 교차 검증 성능이 가장 좋은 매개변수로 전체 훈련 데이터셋에 대해 새로운 모델을 자동으로 만든다. - pred.. k-겹 교차검증 train, test 나누는 이유 - 지금까지 본 적 없는 새로운 데이터에 모델이 얼마나 잘 일반화되는지 측정하기 위함 교차 검증 - trina, test로 한 번 나누는 것보다 더 안정적이고 뛰어난 통계적 평가 방법 - 모델의 훈련 데이터에 대한 민감 정도를 알 수 있음. k-겹 교차검증 import pandas as pd # 데이터셋 가져오기 data = pd.read_csv('경로/파일이름.csv', index_col='인덱스로 사용할 컬럼이름') # 데이터셋, X와 y로 나눠주기 y = pd.DataFrame(data['타겟 컬럼이름']) X = data.drop('타겟 컬럼이름', axis=1) # 선형 회귀 from sklearn.linear_model import LogisticRegress.. 특성 자동 선택 새로운 특성을 추가할 때나 고차원 데이터셋을 사용할 때. 가장 유용한 특성만 선택하고 나머지는 무시해서 특성의 수를 줄이는 것이 좋다. 모델이 간단해지고 일반화 성능이 올라간다. 지도 학습 방법만 가능. train, test로 나눈 다음 train만 특성 선택에 사용. 1. 일변량 통계 - 개개의 특성과 타깃 사이에 중요한 통계적 관계가 있는지를 계산 - 각 특성이 독립적으로 분산분석을 실시 import pandas as pd # 데이터셋 가져오기 data = pd.read_csv('경로/파일이름.csv', index_col='인덱스로 사용할 컬럼이름') # 데이터셋, X와 y로 나눠주기 y = pd.DataFrame(data['타겟 컬럼이름']) X = data.drop('타겟 컬럼이름', axis=1.. 스케일 조정 데이터 전처리 과정 신경망, SVM 같은 알고리즘은 데이터 스케일에 매우 민감하다. 알고리즘들에 맞게 데이터의 특성 값을 조정 스케일의 조정효과는 크다. 1. StandardScaler - z-score 구하기 (평균=0, 분산=1) from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_train_scaled = scaler.fit_transform(X_train) 2. MinMaxScaler - 모든 특성이 정확하게 0과 1 사이로 위치 from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() X_train_scaled = scaler.fit_tran.. 이전 1 2 3 4 5 다음