본문 바로가기

BLOG/머신러닝

[머신러닝] 사이킷런(Scikit-learn) 데이터의 특성 / 클래스 별 데이터 개수 / 크기 확인하기

 

사이킷런(Scikit-learn) 라이브러리는 의사결정 트리, 분류, 회귀 등의 알고리즘에 사용하기 적합한 함수 및 데이터를 제공하는 라이브러리로, 이번 글에서는 사이킷런에서 제공하는 데이터를 불러와 데이터의 특성, 클래스 별 데이터의 개수, 크기를 확인하는 방법에 대해서 살펴보도록 하겠습니다.

 

 

1. 데이터 불러오기 - iris_data

먼저, 사용할 사이킷런 데이터를 불러와야 하는데요, 그중 대표적인 iris_data 를 불러오도록 하겠습니다.

 

from sklearn.datasets import load_iris
iris = load_iris()

 

데이터를 불러와 iris 라는 변수에 저장해주었습니다.

 

 

2. 데이터의 특성 살펴보기

그 다음에, 데이터에 어떠한 특성(keys)이 있는지 살펴보려면 .keys() 함수를 이용하여 알 수 있는데요, 다음과 같이 입력해주었습니다.

 

print("iris.keys() : {}".format(iris.keys()))

# output :
iris.keys() : dict_keys(['data', 'target', 'target_names', 'DESCR', 'feature_names', 'filename'])

 

특성값을 출력한 결과, 위와 같이 6개의 특성이 있는 것을 확인할 수 있습니다. 한편, 위 특성 중 'data'는 데이터에 대한 값들이 있고, 'target'에는 해당 데이터가 어느 class에 있는지에 대한 데이터를 갖고 있습니다.

 

 

3. 클래스 별 데이터 개수 출력하기

한편, 한 특성에 대해서 클래스별로 데이터의 개수를 알고 싶다면 아래와 같이 numpy 라이브러리를 사용해 코드를 작성하면 됩니다.

 

import numpy as np
print("클래스별 데이터의 개수 : {}".format({n: v for n,v in zip(iris.target_names, np.bincount(iris.target))}))

# output :
클래스별 데이터의 개수 : {'setosa': 50, 'versicolor': 50, 'virginica': 50}

 

실행결과, 데이터의 개수가 'setosa' 클래스에는 50개, 'versicolor' 클래스에는 50개, 'virginica' 클래스에 50개의 데이터가 각각 있는 것을 확인할 수 있습니다.

 

 

4. 데이터의 크기 확인하기

마지막으로, 'data' 라는 특성값에서 데이터의 크기를 확인해보는 것이 좋은데요, 데이터의 전체 개수와 한 데이터 당 몇 개의 특성값을 가지고 있는지 아는 것이 중요하기 때문입니다. 데이터의 크기는 shape 모듈을 사용하여 다음과 같이 입력하면 됩니다.

 

print("iris data의 크기: {}".format(iris.data.shape))

# output :
iris data의 크기: (150, 4)

 

출력 결과, iris data는 총 150개가 있고(3번에서 확인했듯이 3개의 클래스에 50개의 데이터가 있음), 한 데이터 당 4개의 특성값(칼럼)을 갖고 있음을 확인할 수 있습니다.

 

 

이렇게 사이킷런 데이터가 어떻게 이루어졌는지 확인해봤는데요, 다른 사이킷 런 데이터에서도 적용이 가능하니 이 점 참고해주시기 바랍니다!