데이터 한 그릇

머신러닝 기초(1) 본문

머신러닝/머신러닝기초

머신러닝 기초(1)

장사이언스 2021. 7. 21. 17:11

머신러닝(1)

 

머신러닝 개요

 

머신러닝의 종류는 크게 3가지로 구분이 된다.

 

  • 지도학습
  • 비지도학습
  • 강화학습

 


판다스를 이용하여 머신러닝 할 데이터를 불러오기

 

from sklearn.datasets import load_breast_cancer 를 해주고 데이터 셋을 불러온다.

 

 

from sklearn.neighbors import KNeighborsClassifier 를 하여 알고리즘 하나를 불러온다.

 

 

모델을 생성하고 -> train 데이터를 통해서 모델에 학습시키고 -> 학습된 모델에 결과값을 예측할 데이터를 넣어서 결과값을 반환한다.

 


사이킷런 데이터셋을 조작하고 확인하는 방법

 

 

.DESCR 을 하면 사이킷런 데이터셋에 대한 정보를 깔끔하게 확인 가능하다.

feature_names 같은 경우에는 칼럼명을 의미한다.

target_names 같은 경우에는 타겟 데이터의 레이블명을 의미한다.

data 같은 경우에는 train 에 사용될 데이터를 의미한다.

 

 

관례적으로 학습에 사용되는 데이터는 대문자로 사용하고 결과 데이터는 소문자로 사용한다.

 

왜냐하면 훈련으로 사용되는 데이터는 행렬로 되어 있고 타겟은 벡터 데이터로 되어 있는데,

벡터는 소문자로 주로 사용하는 관례 때문에 타겟을 소문자로 사용하는 것.

(벡터 : 소문자)

 

 

 

사이킷런으로 불러온 데이터를 분석할 데이터셋으로 만들때 위와 같은 코드를 사용함.

 

 

pd.concat([]) 을 통해서 데이터셋의 훈련 데이터와 타겟 데이터를 합치는 두 번째 방법이다.

위쪽의 다른 코드를 보면 concat 을 사용하지 않고 바로 인덱싱 처리로 생성했었다.

 

 

사이킷런 아이리스 데이터 말고 다른 데이터를 정제해보겠다.

이때 사용되는 보스턴 주택가격 데이터 같은 경우에는 타겟 데이터의 이름들이 없다.

왜냐하면 타겟 데이터가 범주데이터가 아니라 구간데이터이기 때문이다.

타겟이 구간데이터일 경우 분류를 사용하지 않고 회귀를 사용한다.

 

모든 회귀는 분류로 환원 가능

타겟이 구간데이터이지만 함수를 사용해서 구간데이터를 범주화 가능

 

 

타겟이 구간데이터인 경우, 구간 데이터를 일정한 간격으로 나누어서 이를 범주화할 수 있다.

 

pd.cut() 같은 경우에는 구간의 개수를 지정한다.

pd.qcut() 같은 경우에는 한 구간의 개수를 지정한다. 따라서 구간의 개수는 계산을 해야 도출이 된다.

 

 

pd.qcut() 을 사용해서 구간데이터를 범주화 해봄.

이때 구간 안에 들어갈 데이터 개수를 10개로 지정.

그룹바이로 확인해보니 개수가 같은 것도 있고 다르게도 나오지만, 거의 차이가 없다.

 

알고리즘의 정의와 구성요소들

 

 

  1. 분류와 회귀 구분

    => classifier 는 분류

    => Regression 은 회귀

     

  1. 하이퍼 파라미터값

vars() 안의 매개변수 값에 알고리즘 변수를 적어주면, 그 알고리즘에서 사용하는 하이퍼 파라미터 값의 목록을 확인할 수 있다.

 

하이퍼 파라미터 => 사용자가 직접 지정해줘야 하는 값, 인공지능으로 자동 x

 

  1. 학습 메서드

    통계에서는 학습을 적합(fit) 이라고 부른다.

    컴퓨터 과학에서는 훈련(train) 이라고 부른다.

     

    학습데이터와 타겟 데이터를 분리해서 가져오는 방법

     

    데이터만 가져오는 경우

    iloc 인덱싱을 사용하여 가져오는 방법과

    columns[] 함수를 사용하여 인덱싱한 후 가져오는 방법

     

    타겟값만 가져오는 경우

    target 칼럼만 인덱스로 지정하여 변수에 담기

     

  2. 예측 메서드

    predict() 함수를 이용해서 새로운 데이터가 들어오면 알맞은 값으로 결과값을 반환한다.

    하지만 안에 매개변수를 일차원으로 넣어주면 에러가 생긴다.

    2D array 를 기대한다는 오류가 뜨기 때문에 2차원으로 매개변수 값을 맞춰준다.

     

     

    predict() 로 결과 값이 나오면 그 결과값이 어떤 label 인지 확인하기 위해서 위와 같이 인덱스 값을 집어 넣는다.

     

     

    예측해야될 데이터가 여러 개일때 여러개를 집어넣을 수 있다.

     

 

Comments