파이썬 머신러닝 라이브러리 중 가장 많이 사용되는 라이브러리이다.
특징으로는 다음과 같다.
dataset 모듈은 scikit-learn이 제공하는 다양한 데이터 샘플을 모아둔 모듈이다.
데이터 샘플은 다음과 같다.
대표적인 Load 데이터셋으로 iris 데이터셋이 있다. 이 데이터셋은 다음과 같이 불러올 수 있다.
from sklearn.datasets import load_iris
iris = load_iris()
(1) 불필요한 열 제거
drop함수를 이용하여 피쳐로 사용하기 부적절한 열을 제거한다.
해당 데이터에서는 PassengerId 열이 피쳐로 사용하기 부적합하므로 제거한다.
axis인자의 값이 0이면 행 단위 수정, 1이면 열 단위 수정이다. 데이터프레임에서 특정 열을 제거해주기 위해서 axis = 1을 꼭 써주어야 하는데 이는 디폴트가 axis = 0이기 때문이다.
titanic_df.drop(['PassengerId'], axis = 1)
(2) 결측값 처리
scikit-learn 알고리즘은 null 값을 허용하지 않기 때문에 데이터 클렌징 과정에서 null 값을 반드시 처리해야 한다.
Age 열의 결측치는 평균값으로 대체한다.
mean_of_age = round(titanic_df['Age'].mean(),0)
titanic_df['Age'].fillna(mean_of_age, inplace = True)
scikit-learn의 preprocessing 모듈을 사용하여 인코딩 을 한다.
LabelEncoder(): 레이블 인코딩을 구현
Fit(): 인코딩 학습 -> Fit() 실행 후 문자열을 숫자값으로 학습
transform(): 학습한 숫자값을 실제로 변환
import numpy as np
from sklearn import preprocessing
# 샘플 데이터 입력
input_labels = ['red','black','red','green']
#레이블 인코더 생성후 앞에서 정의한 레이블로 학습시키기.
encoder = preprocessing.LabelEncoder()
encoder.fit(input_labels)
labels = encoder.transform(input_labels)
#(4,) -> (4,1) 이차원 변환
labels = labels.reshape(-1,1)
encoder2 = preprocessing.OneHotEncoder()
encoder2.fit(labels)
labels2 = encoder2.transform(labels)
print(labels2)
out[]:
<4x3 sparse matrix of type '<class 'numpy.float64'>'
with 4 stored elements in Compressed Sparse Row format>
train_test_split()은 훈련용, 시험용 데이터를 분리하는 함수이며 주요 파라미터는 다음과 같다.
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
iris = load_iris()
iris_data = iris.data
iris_label = iris.target
X_train, X_test, y_train, y_test = train_test_split(iris_data, iris_label, test_size = 0.2, random_state=11)