AI/Machine Learning

[Machine Learning] Sklearn을 이용한 머신러닝 데이터 불러오기

byunghyun23 2022. 7. 8. 17:51

Sklearn을 이용하여 머신러닝에 사용할 데이터를 불러오는 예제입니다.

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
from sklearn import datasets

먼저 데이터를 다루기 위한 numpy, pandas와 데이터 시각화를 위한 seaborn, matplotlib.pyplot, 그리고 데이터를 불러오기 위한 sklearn.datasets을 import 합니다.

 

1. 집값 예측하기

raw_boston = datasets.load_boston()
print('type(raw_boston):', type(raw_boston))
print('raw_boston.keys():', raw_boston.keys())
X_boston = pd.DataFrame(raw_boston.data)
y_boston = pd.DataFrame(raw_boston.target)
print('type(X_boston):', type(X_boston))
print('type(y_boston):', type(y_boston))
print('X_boston.shape:', X_boston.shape)
print('y_boston.shape:', y_boston.shape)
df_boston = pd.concat([X_boston, y_boston], axis=1)

print(df_boston.head())

보스턴 집값 데이터 (Boston Housing)는 13가지의 features를 가지고 있으며, 데이터를 불러오기 위해 datasets.load_boston()을 사용합니다.

불러온 데이터 raw_boston은 sklearn.utils.Bunch 타입이며 dictionary와 같이 key, value로 구성되어 있습니다.

raw_boston은 key로 data와 target 등을 가지고 있으며 타입은 pandas.core.frame.DataFrame 입니다.

 

학습을 위해 data와 target의 shape를 살펴보면 (506, 13), (506, 1)로, data는 13개의 features를 가지는 506개의 데이터이며 target은 1개의 예측값을 가지는 506개의 데이터입니다.

df_boston.head()를 이용하면 데이터 프레임의 첫 5행까지의 데이터를 확인할 수 있습니다.

data와 target을 하나의 프레임으로 만들어줍니다. 맨 우측의 칼럼 0이 target입니다.

보스턴 집값 데이터

위 그림을 보면 칼럼 0~12가 각각 무슨 값을 의미하는지 알 수 없습니다. 따라서 칼럼마다 이름을 붙여줍니다.

각 칼럼의 자세한 설명은 raw_boston.DESCR으로 확인할 수 있습니다.

feature_boston = raw_boston.feature_names
print('feature_boston:', feature_boston)

col_boston = np.append(feature_boston, ['target'])
df_boston.clumns = col_boston
print(df_boston.head())

칼럼 이름 설정된 보스턴 집값 데이터

 

아래 데이터를 불러오는 것은 위 내용과 매우 유사합니다.

따라서, 코드만 첨부해도 충분히 이해할 수 있을 것이라고 생각됩니다.

 

2. 꽃 구분하기

raw_iris = datasets.load_iris()
X_iris = pd.DataFrame(raw_iris.data)
y_iris = pd.DataFrame(raw_iris.target)
df_iris = pd.concat([X_iris, y_iris], axis=1)

feature_iris = raw_iris.feature_names
col_iris = np.append(feature_iris, ['target'])
df_iris.colums = col_iris
print('df_iris.head():', df_iris.head())

칼럼 이름 설정된 아이리스 데이터

 

3. 와인 구분하기

raw_wine = datasets.load_wine()
X_wine = pd.DataFrame(raw_wine.data)
y_wine = pd.DataFrame(raw_wine.target)
df_wine = pd.concat([X_wine, y_wine], axis=1)

feature_wine = raw_wine.feature_names
col_wine = np.append(feature_wine, ['target'])
df_wine.columns = col_wine
print(df_wine.head())

칼럼 이름 설정된 와인 데이터

 

4. 당뇨병 예측하기

raw_diab = datasets.load_diabetes()
X_diab = pd.DataFrame(raw_diab.data)
y_diab = pd.DataFrame(raw_diab.target)
df_diab = pd.concat([X_diab, y_diab], axis=1)

feature_diab = raw_diab.feature_names
col_diab = np.append(feature_diab, ['target'])
df_diab.columns = col_diab
print(df_diab.head())

칼럼 이름 설정된 당뇨병 데이터

 

5. 유방암 예측하기

raw_bc = datasets.load_breast_cancer()
X_bc = pd.DataFrame(raw_bc.data)
y_bc = pd.DataFrame(raw_bc.target)
df_bc = pd.concat([X_bc, y_bc], axis=1)

feature_bc = raw_bc.feature_names
col_bc = np.append(feature_bc, ['target'])
df_bc.columns = col_bc
print(df_bc.head())

칼럼 이름 설정된 유방암 데이터

 

다음 포스팅은 불러온 데이터를 전처리 하는 방법에 대해 알아보겠습니다.