본문 바로가기

전체 글

(216)
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. 결정 트리 - 분류 / 회귀 문제에 널리 사용 - 결정에 다다르기 위해 예 / 아니오 질문을 이어 나가면서 학습 - 과대 적합을 막는 전략 : 사전 가지치기(트리 생성을 일찍 중단) (max_depth, max_leaf_nodes, min_samples_leaf) 사후 가지치기(데이터 포인트가 적은 노드 삭제) scikit-learn은 사전 가지치기만 지원 import pandas as pd # 데이터셋 가져오기 data = pd.read_csv('경로/파일이름.csv', index_col='인덱스로 사용할 컬럼이름') # 데이터셋, X와 y로 나눠주기 y = pd.DataFrame(data['타겟 컬럼이름']) X = data.drop('타겟 컬럼이름', axis=1) # train과 test로 ..
선형모델 1. 선형회귀 - 최소제곱법 (OLS, ordinary least squares) - 가장 간단, 가장 오래된 회귀용 선형 알고리즘 - 훈련 세트의 타깃 y와 예측 사이의 평균제곱오차 (mean squared error)를 최소화하는 파라미터 w와 b를 찾음 import pandas as pd # 데이터셋 가져오기 data = pd.read_csv('경로/파일이름.csv', index_col='인덱스로 사용할 컬럼이름') # 데이터셋, X와 y로 나눠주기 y = pd.DataFrame(data['타겟 컬럼이름']) X = data.drop('타겟 컬럼이름', axis=1) # train과 test로 나눠주기 from sklearn.model_selection import train_test_split X..
K-NN 분류 알고리즘 1. 특징 - 이웃의 수는 3개나 5개 정도로 적을 때 잘 작동 - 유클리디안 거리방식으로 이웃의 거리 측정 2. 장점 - 이해하기 매우 쉬운 모델 - 많이 조저하지 않아도 자주 좋은 성능을 발휘 3. 단점 - 예측이 느림 - 많은 특성을 처리하는 능력이 부족(현업에서 잘 쓰지 않음) import pandas as pd # 데이터셋 가져오기 data = pd.read_csv('경로/파일이름.csv', index_col='인덱스로 사용할 컬럼이름') # 데이터셋, X와 y로 나눠주기 y = pd.DataFrame(data['타겟 컬럼이름']) X = data.drop('타겟 컬럼이름', axis=1) # train과 test로 나눠주기 from sklearn.model_selection import tra..
Data sets 개략적 파악 # value수, 평균, 표준편차, 최대값, 최소값, 사분위 수 출력 print(데이터프레임.describe()) # 데이터프레임 정보 확인하기 print(데이터프레임.info()) # 데이터프레임 크기 확인하기 print(데이터프레임.shape) # 데이터프레임 행 갯수 확인하기 print(데이터프레임.shape[0]) # 데이터프레임 열 갯수 확인하기 print(데이터프레임.shpae[1]) # 히스토그램 컬럼별 그래프 보기 데이터프레임.hist(bins=50, figsize=(20,15)) # 상관관계 수치 보기 데이터프레임.corr()