본문 바로가기
공부 목록/IT & 프로그래밍

데이터 셋을 얻을 수 있는 파이썬 라이브러리들

by 독학박사 2023. 5. 27.

목차


     파이썬 프로그래밍은 데이터 분석이나 머신러닝, 또는 딥러닝을 쉽게 다룰  있는 언어입니다. 복잡한 로직을 만들기 위해 프로그래밍 언어를 공부하거나 연습해야 하는데, 이때의 문제가 분석 또는 학습할  있는 데이터셋이 없다는 겁니다. 몇몇 라이브러리들이 이러한 문제를 해결하고자 데이터 셋을 제공해 줍니다. 오늘은 어떤 라이브러리가 데이터 셋을 제공하는지와  데이터 셋을 이용하는 방법에 대해 정리해 보고자 합니다.

     

     

    파이썬 데이터셋 라이브러리 정리
    파이썬 데이터셋 라이브러리 정리

     

     1. scikit-learn or sklearn

    scikit-learn 라이브러리(sklearn)는 머신러닝 작업을 위한 다양한 내장 데이터셋을 제공합니다. 예를 들면 분류, 회귀, 클러스터링, 데이터 변환 등의 작업을 위한 데이터셋을 포함하고 있습니다. 위에서 언급한 iris, digits, boston 등이 그중 일부입니다. scikit-learn에서 제공하는 데이터셋을 확인하기 위한 방법이 있는데 datasets 모듈을 임포트 하고 해당 모듈의 함수를 사용하여 데이터셋 목록을 확인하는 것입니다.

     

    from sklearn import datasets
    
    dataset_list = datasets.__all__
    print(dataset_list)

     

    # 출력 결과
    ['clear_data_home', 'dump_svmlight_file', 'fetch_20newsgroups', 'fetch_20newsgroups_vectorized', 'fetch_lfw_pairs', 'fetch_lfw_people', 'fetch_olivetti_faces', 'fetch_species_distributions', 'fetch_california_housing', 'fetch_covtype', 'fetch_rcv1', 'fetch_kddcup99', 'fetch_openml', 'get_data_home', 'load_diabetes', 'load_digits', 'load_files', 'load_iris', 'load_breast_cancer', 'load_linnerud', 'load_sample_image', 'load_sample_images', 'load_svmlight_file', 'load_svmlight_files', 'load_wine', 'make_biclusters', 'make_blobs', 'make_circles', 'make_classification', 'make_checkerboard', 'make_friedman1', 'make_friedman2', 'make_friedman3', 'make_gaussian_quantiles', 'make_hastie_10_2', 'make_low_rank_matrix', 'make_moons', 'make_multilabel_classification', 'make_regression', 'make_s_curve', 'make_sparse_coded_signal', 'make_sparse_spd_matrix', 'make_sparse_uncorrelated', 'make_spd_matrix', 'make_swiss_roll']

     

    scikit-learn에서 제공하는 데이터셋의 예제를 확인하려면 datasets 모듈의 load_* 함수를 사용하여 데이터셋을 로드하고 해당 데이터셋에 대한 정보를 살펴볼 수 있습니다. 예를 들어, load_iris 함수를 사용하여 Iris 데이터셋을 로드하고 데이터셋에 대한 정보를 출력하는 코드는 다음과 같습니다

     

     

    from sklearn import datasets
    
    iris = datsets.load_iris()
    print(iris.DESCR)

     

    출력 결과를 보면 아래와 같이 매우 자세하게 데이터에 대한 설명이 기술됩니다.

     

    .. _iris_dataset:
    Iris plants dataset
    --------------------

    **Data Set Characteristics:**

        :Number of Instances: 150 (50 in each of three classes)
        :Number of Attributes: 4 numeric, predictive attributes and the class
        :Attribute Information:
            - sepal length in cm
            - sepal width in cm
            - petal length in cm
            - petal width in cm
            - class:
                    - Iris-Setosa
                    - Iris-Versicolour
                    - Iris-Virginica

         :Summary Statistics:
        ============== ==== ==== ======= ===== ====================
                                           Min    Max     Mean        SD      Class Correlation
        ============== ==== ==== ======= ===== ====================
                  sepal length:   4.3      7.9       5.84       0.83      0.7826
    ...
         on Information Theory, May 1972, 431-433.
       - See also: 1988 MLC Proceedings, 54-64.  Cheeseman et al"s AUTOCLASS II     conceptual clustering system finds 3 classes in the data.
       - Many, many more ...
    Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...

     

     

    2. seaborn

    seaborn 라이브러리는 데이터 시각화를 위한 통계 그래픽스를 제공합니다. seaborn은 일부 데이터셋을 내장하고 있어 데이터 시각화 예제나 튜토리얼에 활용될 수 있습니다. 예를 들면 tips, flights, titanic 등이 있습니다. seaborn에서 제공하는 데이터셋을 확인하는 방법은 get_dataset_names() 함수를 사용하는 것입니다.

     

    import seaborn as sns
    
    dataset_list = sns.get_dataset_names()
    print(dataset_list)

     

    ['anagrams', 'anscombe', 'attention', 'brain_networks', 'car_crashes', 'diamonds', 'dots', 'dowjones', 'exercise', 'flights', 'fmri', 'geyser', 'glue', 'healthexp', 'iris', 'mpg', 'penguins', 'planets', 'seaice', 'taxis', 'tips', 'titanic']

     

    데이터셋의 이름을 확인한 후에는 해당 데이터셋을 로드하여 사용할 수 있습니다. 예를 들어, "tips" 데이터셋을 로드하고 데이터를 살펴보려면 다음과 같이 코드를 작성할 수 있습니다. seaborn의 데이터 로드는 dataframe 형식으로 반환해 줍니다. 데이터에 대한 설명 자료는 별도로 제공되지 않습니다.

     

    import seaborn as sns
    
    tips = sns.load_dataset("tips")
    print(tips.head())

     

    seaborn의 tips 데이터 셋
    seaborn의 tips 데이터 셋

     

    3. Keras

    keras는 딥러닝 모델을 구축하기 위한 인기 있는 라이브러리입니다. keras는 이미지 분류, 객체 감지 등 다양한 작업을 위한 데이터셋을 제공합니다. Keras의 데이터셋은 주로 이미지, 텍스트, 숫자 등 다양한 유형과 분야의 데이터셋을 포함하고 있으며, 딥러닝 모델을 학습하고 평가하는 데 사용됩니다. 몇몇 예를 아래와 같이 정리하였습니다.

     

    MNIST 숫자 손글씨 데이터셋: mnist
    CIFAR-10 이미지 데이터셋: cifar10
    CIFAR-100 이미지 데이터셋: cifar100
    IMDB 영화 리뷰 데이터셋: imdb
    Fashion-MNIST 의류 이미지 데이터셋: fashion_mnist
    Boston Housing 주택 가격 데이터셋: boston_housing

     

    MNIST 데이터셋은 Keras에서 제공하는 숫자 손글씨 이미지 데이터셋으로, 딥러닝 모델을 학습하고 평가하는 데 많이 사용됩니다. 불러온 데이터는 이미지를 나타내는 데이터들의 집합입니다. MNIST 데이터셋을 로드하고 데이터를 확인하는 방법은 다음과 같습니다

     

    import tensorflow.keras as keras
    
    # MNIST 데이터셋 로드
    (train_images, train_labels), (test_images, test_labels) = keras.datasets.mnist.load_data()
    
    # 학습 데이터의 크기와 레이블 개수 확인
    print("Train images shape:", train_images.shape)
    print("Train labels shape:", train_labels.shape)
    
    # 테스트 데이터의 크기와 레이블 개수 확인
    print("Test images shape:", test_images.shape)
    print("Test labels shape:", test_labels.shape)
    
    # 데이터 예시 출력
    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(10, 10))
    for i in range(25):
        plt.subplot(5, 5, i+1)
        plt.imshow(train_images[i], cmap='gray')
        plt.title(str(train_labels[i]))
        plt.axis('off')
    plt.show()

     

     위 코드를 실행하면 MNIST 데이터셋의 학습 이미지와 레이블, 테스트 이미지와 레이블의 크기를 확인할 수 있습니다. 또한 첫 25개의 학습 이미지와 해당 레이블이 시각화되어 출력됩니다.

     

    MNIST 데이터셋은 28x28 크기의 흑백 이미지로 구성되어 있으며, 각 이미지는 0부터 9까지의 숫자를 나타내는 손글씨입니다. 따라서 train_images와 test_images는 이미지 배열, train_labels와 test_labels는 해당 이미지의 숫자 레이블로 구성됩니다.

     

    mnist 출력 결과물
    mnist 출력 결과물

     

     

    4. 마치며

     지금까지 파이썬에서 데이터를 얻을 수 있는 라이브러리에 대해 알아보았습니다. 물론 이외에도 자연어 처리를 위한 nltk 라이브러리는 텍스트 데이터를 포함하고 있고, torchvision은 PyTorch의 컴퓨터 비전 작업을 위한 패키지로, 이미지 분류, 객체 감지, 세분화 등에 사용할 수 있는 데이터셋을 제공합니다. pandas_datareader는 주식, 환율, 암호화폐 등의 금융 데이터를 가져오는 데 사용됩니다. 추후 관련 내용은 하나씩 세세하게 다룰 예정입니다.