아이펠 10일차

조경모·2022년 1월 7일
0

AIFFEL

목록 보기
8/14

LMS : sklearn

sklearn이 제공하는 와인 데이터셋 불러오기

from sklearn.datasets import load_wine
data = load_wine()

data의 type은 sklearn.utils.Bunch.
Bunch는 딕셔너리와 유사한 형태의 데이터 타입이다.

  • 특성 행렬
data.data

data메소드가 data의 특성 행렬을 반환한다.
데이터의 shape을 확인하고 싶다면?

data.data.shape
  • target
    기본 데이터는 특성 행렬 + 타겟 행렬로 이루어져 있다.
    타겟 행렬은 흔히 말하는 label이 담겨있는 행렬로,
    아래 코드로 확인할 수 있다.
data.target

타겟 행렬의 길이(행)은 특성행렬의 길이(행)과 일치해야한다.

  • 특성 이름과 타겟 이름 확인
data.feature_names #특성 이름 확인 (column값)

data.target_names # 타겟 이름 확인 (타겟이 무엇으로 라벨링 되는지)
  • DataFrame으로 특성행렬 나타내기
import pandas as pd

pd.DataFrame(data.data, columns=data.feature_names)

pd.DataFrame를 이용하여 특성행렬을 판다스 데이터프레임으로 나타낼 수 있다. 이때 인자로 특성행렬 값, 특성의 이름을 받아온다.

  • Train set과 Test set 분리하기
    sklearn의 train_test_split()을 사용해서 분리할 수 있다.
from sklearn.model_selection import train_test_split

result = train_test_split(X, y, test_size=0.2, random_state=123)

train_test_split()은 4개의 list값을 반환한다.
순서대로 훈련 데이터용 특성 행렬, 테스트 데이터용 특성 행렬, 훈련 데이터용 타겟 벡터, 테스트 데이터용 타겟 벡터이다.

  • 정리
    sklearn을 이용하여 데이터셋 로드, 데이터셋 분리, estimator객체(이 코드에서는 랜덤포레스트)를 이용한 예측, 평가 방법은 다음과 같이 코드로 나타낼 수 있다.
# 데이터셋 로드하기
data = load_wine()
X = data.data
y = data.target

# 훈련용 데이터셋 나누기
X_train, X_test, y_train, y_test = train_test_split(X, y , 
                                                    test_size = 0.2,
                                                    random_state = 456)

# 훈련하기
model = RandomForestClassifier()
model.fit(X_train, y_train)

# 예측하기
y_pred = model.predict(X_test)

# 정답률 출력하기
print(accuracy_score(y_test, y_pred))

회고

사이킷런은 exploration노드에서도 했고, 저번학기에 배운 경험이 있기에 오늘 내용은 복습하듯이 수강했다.
오늘 나온 다양한 기계학습 알고리즘(logistic , svm ...)
에 대한 이론적 배경도 한 번 복습해봐야겠다는 생각이 들었다.
이번주 주말동안 공부했던 내용 잘 복습하고 이번달에 어떤걸 중점으로 할지 잘 생각해보자.

0개의 댓글