Fundamental 12

2022. 1. 7. 11:05

1. 다양한 머신러닝 알고리즘

머신러닝의 알고리즘 종류

  • 지도학습 (Supervises Learning)
  • 비지도학습 (Unsupervised Learning)
  • 강화학습 (Reinforcement Learning)

상황이나 구현하고자 하는 Application에 따라 합쳐서 사용될 수 있다.

ex) 알파고의 경우 지도학습을 톨해 바둑 기보를 학습하고 강화학습으로 최적화하였다.

 

<머신러닝 알고리즘 치트 시트>


2. 사이킷런에서 가이드하는 머신러닝 알고리즘


3. Hello Scikit-learn

설치

$ pip install scikit-learn

버전 확인

import sklearn
print(sklearn.__version__)

4. 사이킷런의 주요 모듈

데이터 표현법

사이킷런의 주요 API

특성 행렬(Feature Matrix)

  • 입력 데이터를 의미합니다.
  • 특성(feature): 데이터에서 수치 값, 이산 값, 불리언 값으로 표현되는 개별 관측치를 의미합니다. 행렬에서는 열에 해당하는 값입니다.
  • 표본(sample): 각 입력 데이터, 특성 행렬에서는 행에 해당하는 값입니다.
  • n_samples: 행의 개수(표본의 개수)
  • n_features: 열의 개수(특성의 개수)
  • X: 통상 특성 행렬은 변수명 X로 표기합니다.
  • [n_samples, n_features]은 [행, 열] 형태의 2차원 배열 구조를 사용하며 이는 NumPy의 ndarray, Pandas의 DataFrame, SciPy의 Sparse Matrix를 사용하여 나타낼 수 있습니다.

타겟 벡터 (Target Vector)

  • 입력 데이터의 라벨(정답) 을 의미합니다.
  • 목표(Target): 라벨, 타겟값, 목표값이라고도 부르며 특성 행렬(Feature Matrix)로부터 예측하고자 하는 것을 말합니다.
  • n_samples: 벡터의 길이(라벨의 개수)
  • 타겟 벡터에서 n_features는 없습니다.
  • y: 통상 타겟 벡터는 변수명 y로 표기합니다.
  • 타겟 벡터는 보통 1차원 벡터로 나타내며, 이는 NumPy의 ndarray, Pandas의 Series를 사용하여 나타낼 수 있습니다.
  • (단, 타겟 벡터는 경우에 따라 1차원으로 나타내지 않을 수도 있습니다. 이 노드에서 사용되는 예제는 모두 1차원 벡터입니다.)

회귀 모델 실습

# 데이터 생성
import numpy as np
import matplotlib.pyplot as plt
r = np.random.RandomState(10)
x = 10 * r.rand(100)
y = 2 * x - 3 * r.rand(100)
plt.scatter(x,y)

# 모델 생성
from sklearn.linear_model import LinearRegression
model = LinearRegression()
X = x.reshape(100,1)
y_new = model.predict(X)

#모델 분석
from sklearn.metrics import mean_squared_error

error = np.sqrt(mean_squared_error(y,y_new))

datasets 모듈

사이킷런에서 제공하는 데이터 셋 살펴보기

from sklearn.datasets import load_wine
data = load_wine()
type(data)
data.keys()
data.data
data.data.shape
data.data.ndim
data.target
data.target.shape
data.feature_names
data.target_names
print(data.DESCR)

사이킷런 데이터셋을 이용한 분류 문제 실습

import pandas as pd

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

X = data.data
y = data.target

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier()

model.fit(X, y)
y_pred = model.predict(X)

from sklearn.metrics import accuracy_score
from sklearn.metrics import classification_report

#타겟 벡터 즉 라벨인 변수명 y와 예측값 y_pred을 각각 인자로 넣습니다. 
print(classification_report(y, y_pred))
#정확도를 출력합니다. 
print("accuracy = ", accuracy_score(y, y_pred))

Estimator

Estimator → 데이터셋을 기반으로 머신러닝 모델의 파라미터를 추정하는 객체

지도 학습 과정

비지도 학습 과정


5. 훈련 데이터와 테스트 데이터 분리하기

훈련데이터와 예측데이터는 다른 것을 사용해야 한다.

from sklearn.model_selection import train_test_split

result = train_test_split(X, y, test_size=0.2, random_state=42)
# X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

'AIFFEL > fundametal' 카테고리의 다른 글

Fundamental 05  (0) 2022.01.10
Fundamental 13  (0) 2022.01.10
Fundamental 11  (0) 2022.01.05
Fundamental 10  (0) 2022.01.04
Fundametal 09  (0) 2022.01.04

BELATED ARTICLES

more