본문 바로가기
Tech/Python

기계 학습을 위한 무료 데이터셋 Top 3

by Jyubaeng2 2023. 7. 30.

머신러닝 공부를 위한 무료 데이터셋은 무엇이 있을까?

드디어 머신러닝 공부를 시작하기로 마음을 먹었다면 실습을 위한 데이터셋이 필요하다.

 

물론 본인의 필드에서 머신러닝을 위한 데이터셋을 구해서 공부를 하면 금상천화겠지만 그런 경우에 리퍼런스가 없다는 문제가 발생한다.

 

그래서 인터넷에서 쉽게 구할 수 있고, 무료이며, 책이나 블로그들에서 많이 리퍼런스하고 있는 데이터셋을 찾으면 비록 본인이 실제로 하는 업무와는 동떨어진 학습을 하게 되겠지만 한편으로는 빠르고 쉽게 공부를 할 수 있는 장점이 있다.

 

특히, 이미 많은 온라인 책이나 튜토리얼 사이트 등에서 사용되고 있기 때문에 많은 코드들을 참조하여 본인만의 코드를 쉽게 짜집기하여 재사용할 수 있다.

 

그럼 기계 학습을 위한 무료 데이터셋 Top 5를 알아보자.

 

기계 학습을 위한 최고의 공개 데이터셋 Top 3

1. 보스턴 주택 가격 데이터셋 (Boston House Prices)

Boston House Prices Link

 

이 데이터베이스의 각 레코드는 보스턴의 교외 또는 도시를 설명한다. 이 데이터는 1970년에 보스턴 표준 대도시 통계 지역(SMSA)에서 추출되었다. 속성들은 다음과 같이 정의된다 (UCI Machine Learning Repository1에서 가져옴):

 

  • CRIM: 도시당 인구 대비 범죄 발생률
  • ZN: 25,000 평방피트 이상의 토지에 대한 주거지 구역 비율
  • INDUS: 도시당 비소매 사업 땅 비율
  • CHAS: 찰스 강 더미 변수 (= 강 경계일 경우 1, 그렇지 않을 경우 0)
  • NOX: 질산 산화물 농도 (100만 분율)
  • RM: 주거당 평균 방 개수
  • AGE: 1940년 이전에 건립된 소유자 거주 단위 비율
  • DIS: 보스턴 고용 센터 다섯 곳까지의 가중 거리
  • RAD: 방사형 고속도로 접근성 지수
  • TAX: $10,000당 부동산 세율
  • PTRATIO: 도시별 학생 대 교사 비율
  • B: 1000(Bk−0.63)2, 여기서 Bk는 도시별 흑인 비율입니다.
  • LSTAT: 인구의 하위 계층 비율 (%)
  • MEDV: 소유자 거주 주택의 중앙값(1000달러 기준)

입력 속성들은 단위가 혼합되어 있는 것을 볼 수 있으며 파일을 다운로드해서 열어보면 칼럼 헤더가 없는 것을 확인 할 수 있다.

 

따라서 파일을 다운로드 받은 후 칼럼 헤더를 다음과 같이 작성해서 넣어주어야 한다.

 

import pandas as pd
import numpy as np

column_names = ['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV']
df = pd.read_csv('./housing.csv', header=None, delimiter=r"\s+", names=column_names)

df.head()

만약 파일을 직접 로컬 드라이브로 다운로드 하지 않고 sklearn 패키지에서 가져오고 싶다면 다음 코드를 실행하도록 한다.

from sklearn.datasets import load_boston

# 보스턴 주택 가격 데이터셋 불러오기
boston = load_boston()

# 데이터셋 정보 출력
print("Data shape:", boston.data.shape)
print("Feature names:", boston.feature_names)

# 데이터셋의 특징 정보 출력
print("Dataset Description:")
print(boston.DESCR)


2. 아이리스 데이터셋 (Iris)

Iris dataset link


아이리스 데이터셋은 머신 러닝과 패턴 인식 분야에서 널리 사용되는 유명한 데이터셋 중 하나이다. 이 데이터셋은 붓꽃(iris)의 꽃받침(sepal)과 꽃잎(petal)의 길이와 너비를 측정한 데이터를 포함하고 있다. 세 가지 종류의 붓꽃(Iris setosa, Iris versicolor, Iris virginica) 각각 50개씩 총 150개의 데이터 샘플로 구성되어 있다.

아이리스 데이터셋은 머신 러닝 알고리즘을 학습하고 평가하는 데 사용되며, 주로 분류 문제에 적용된다. 데이터셋의 특성을 바탕으로 붓꽃의 종류를 분류하는 작업은 매우 유명한 기계 학습 문제로서, 처음으로 통계학자인 Ronald Fisher에 의해 1936년에 소개되었다.

데이터셋 구성:

 

  • 꽃받침 길이(Sepal Length)
  • 꽃받침 너비(Sepal Width)
  • 꽃잎 길이(Petal Length)
  • 꽃잎 너비(Petal Width)
  • 붓꽃의 종류(Iris Setosa, Iris Versicolor, Iris Virginica)


아이리스 데이터셋은 데이터 과학과 머신 러닝을 공부하는데 있어서 학습용으로 자주 활용되는 데이터셋이며, 다양한 프로그래밍 언어와 머신 러닝 라이브러리에서 제공되기 때문에 쉽게 접근하고 사용할 수 있다.

데이터셋에 대한 자세한 설명과 더 많은 정보는 아래 링크를 참조하시면 됩니다:

UCI Machine Learning Repository - Iris Dataset
Wikipedia - Iris Flower Data Set

 

Iris flower data set - Wikipedia

From Wikipedia, the free encyclopedia Statistics dataset Scatterplot of the data set The Iris flower data set or Fisher's Iris data set is a multivariate data set used and made famous by the British statistician and biologist Ronald Fisher in his 1936 pape

en.wikipedia.org

 

데이터셋을 다운로드 할 필요없이 웹에서 바로 가져오는 코드는 다음과 같다.

 

# URL for the Iris dataset
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"

# Column names for the dataset
column_names = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']

# Read the dataset from the web URL
iris_data = pd.read_csv(url, header=None, names=column_names)

# Print the first few rows of the dataset to verify if it's loaded correctly
print(iris_data.head())

 

3. MNIST dataset

MNIST(Mixed National Institute of Standards and Technology) 데이터셋은 손으로 쓴 숫자(0부터 9까지)로 이루어진 이미지 데이터셋이다. 이 데이터셋은 머신 러닝 분야에서 자주 사용되며, 특히 숫자 인식(Numerical Digit Recognition)과 같은 이미지 분류 작업에 적합하다.

MNIST 데이터셋은 총 70,000개의 이미지로 구성되어 있으며, 60,000개의 훈련 이미지와 10,000개의 테스트 이미지로 나뉘어져 있다. 각 이미지는 28x28 픽셀의 흑백 이미지로, 각 픽셀은 0부터 255 사이의 정수값을 가진다.

 

MNIST 데이터셋은 tensorflow나 keras 라이브러리를 통해 쉽게 가져올 수 있습니다. tensorflow.keras.datasets를 사용하여 데이터셋을 불러오는 코드는 다음과 같다. 코드 실행전에 tensorflow와 numpy도 함께 설치되어 있어야 한다.

 

import tensorflow as tf
import numpy as np

# MNIST 데이터셋 불러오기
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()

데이터셋의 이미지를 출력해 보는 방법은 다음과 같다.

# 훈련 데이터의 첫 번째 이미지 출력
plt.imshow(x_train[0], cmap='gray')
plt.title("Label: {}".format(y_train[0]))
plt.axis('off')
plt.show()

 

그 외의 유용한 데이터셋

CIFAR-10: 10개의 다양한 클래스에 속하는 32x32 크기의 컬러 이미지 데이터셋.

from tensorflow.keras.datasets import cifar10

(X_cifar_train, y_cifar_train), (X_cifar_test, y_cifar_test) = cifar10.load_data()


Titanic Dataset: 타이타닉 호의 탑승자들의 정보와 생존 여부를 포함하는 데이터셋.

import pandas as pd

# Titanic 데이터셋 CSV 파일을 pandas DataFrame으로 불러오기
titanic_df = pd.read_csv(url)

# 데이터셋에서 필요한 열 선택
X_titanic = titanic_df[['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare']]
y_titanic = titanic_df['Survived']

 

Wine Dataset: 세 가지 다른 종류의 와인에 대한 화학적 분석 결과를 기반으로 와인의 종류를 분류하는 데이터셋.

from sklearn.datasets import load_wine

wine = load_wine()
X_wine = wine.data
y_wine = wine.target


Breast Cancer Wisconsin (Diagnostic) Dataset: 유방암 종양의 특징을 기반으로 종양이 양성인지 악성인지 분류하는 데이터셋.

from sklearn.datasets import load_breast_cancer

cancer = load_breast_cancer()
X_cancer = cancer.data
y_cancer = cancer.target


Diabetes Dataset: 당뇨병 환자들의 당뇨병 진행 상태와 다양한 특징들을 포함하는 데이터셋.

from sklearn.datasets import load_diabetes

diabetes = load_diabetes()
X_diabetes = diabetes.data
y_diabetes = diabetes.target


Fashion MNIST: 의류 관련 이미지로 이루어진 28x28 크기의 흑백 이미지 데이터셋. MNIST와 유사하지만 더 복잡한 이미지 분류 작업에 활용됩니다.

from tensorflow.keras.datasets import fashion_mnist

(X_fashion_train, y_fashion_train), (X_fashion_test, y_fashion_test) = fashion_mnist.load_data()

 

pandas Tutorials:

https://ai-fin-tech.tistory.com/entry/Data-Import-with-pandas

 

Data Import with pandas

Data Import with pandas To import the Boston Housing Prices dataset and build a DataFrame with column names for the target and features, you can use the load_boston() function from sklearn.datasets and then create the DataFrame using pandas. Here's the cod

ai-fin-tech.tistory.com

https://ai-fin-tech.tistory.com/entry/Basic-DataFrame-Inspection

 

Basic DataFrame Inspection

Data Import import pandas as pd from sklearn.datasets import load_boston # Load the Boston Housing Prices dataset boston = load_boston() boston_df = pd.DataFrame(boston.data, columns=boston.feature_names) boston_df['PRICE'] = boston.target Inspect DataFram

ai-fin-tech.tistory.com

https://ai-fin-tech.tistory.com/entry/Sorting-DataFrame-with-pandas

 

Sorting DataFrame with pandas

Data Import import pandas as pd from sklearn.datasets import load_boston # Load the Boston Housing Prices dataset boston = load_boston() boston_df = pd.DataFrame(boston.data, columns=boston.feature_names) boston_df['PRICE'] = boston.target Sorting DataFram

ai-fin-tech.tistory.com

 

'Tech > Python' 카테고리의 다른 글

pandas - Complete Usage of loc and iloc  (1) 2023.07.30
pandas - Subsetting Columns and Rows  (1) 2023.07.30
pandas - Sorting DataFrame  (1) 2023.07.30
pandas - Basic DataFrame Inspection  (1) 2023.07.30
pandas - Data Import  (1) 2023.07.30

댓글