본문 바로가기
머신러닝/Preprocessing

Decision Tree를 이용한 Wine 데이터 분석_데이터 확인

by 미생22 2024. 2. 29.
728x90

분류 문제에서 많이 사용하는 iris 꽃 데이터만큼 알려지진 않았지만, 와인 데이터도 많이 사용됩니다.

와인은 인류 역사의 최초의 술로 알려져있는, 기원전 7000년 무렵에 조지아-아르메이나-터키 동북부 (코카서스)에서 흔적이 발견되었다고 합니다. 지금 테러로 유명한 지역인데 말이죠...ㅎㅎ

 

와인의 맛은 분류되는 부분이 많습니다.

 

당도, 탄닌, 산도, 알콜, 향기, 풍미, 바디감, 맛에 따라 다양한 분류로 나뉩니다. 와인 데이터는 UCI에서 받을 수 있지만, 강사님 블로그에서도 쉽게 받을 수 있습니다. 저는 레드와인과 화이트와인으로밖에 분류를 못하는데 말이죠...

뭐, 이렇게 다양한 분류를 가지고 레드 와인과 화이트 와인으로 분류하는 것이 이번 공부의 목적입니다.

 

1. 데이터 불러오기

 

먼저 wine 데이터를 불러오겠습니다. 데이터가 하필 레드와인과 화이트와인이 나누어져있습니다. 두 파일을 각각 불러오고 차이점이 있는지 비교해보겠습니다.

import pandas as pd

red_url = 'https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/winequality-red.csv'
white_url = 'https://raw.githubusercontent.com/PinkWink/ML_tutorial/master/dataset/winequality-white.csv'

#데이터를 확인해보니 ;으로 tab이 나누어져 있었으므로 sep옵션을 줍니다.
red_wine = pd.read_csv(red_url, sep=';')
white_wine = pd.read_csv(white_url, sep=';')

#각 데이터를 확인해보겠습니다.
red_wine.head()

white_wine.head()

 

wine column의 종류와 각각이 나타내는 뜻은 아래와 같습니다.

엄청나게 많네요...  우선 이렇게 봐서는 차이점을 잘 모르겠습니다. 대충 total sulfur dioxide가 많으면 white wine 같아보이기는 합니다.

column의 구조와 순서가 동일해보이네요, white_wine.columns로 봐도 많으니, 동일한지 제대로 확인해보겠습니다.

white_wine.columns == red_wine.columns

 

이제 두 데이터를 합칠건데, 합치고 구분할 수 있도록 red인지 white인지 표기를 해줄겁니다.
1이 red, 2가 white로 머신러닝을 위해 숫자로 구분하겠습니다. 그리고 구조가 같으므로 concat을 통해 한번에 합쳐보겠습니다.

 

red_wine['color'] = 1.
white_wine['color'] = 0.

wine = pd.concat([red_wine, white_wine])
wine.info()

 

concat 시켰으니 데이터 누락이 없는지 확인해보겠습니다. info()함수를 통해 확인해봅니다.

 

 

color 컬럼까지 잘들어간 것을 확인했습니다.

wine.head()

 

2. 데이터 확인하기

quality에 무슨 데이터가 들어있는지 한번 보겠습니다.

wine['quality'].unique()

 

3부터 9까지인걸로 보아 등급으로 보입니다. 한번 quality 컬럼을 histogram으로 그려보겠습니다. 저번에 그렸던 plotly.express를 사용해보겠습니다.

import plotly.express as px

fig = px.histogram(wine, x='quality') #x값을 줘야 quality만 그립니다.
fig.show()

전체 데이터가 6500개 정도인데 3, 9등급은 상당히 적고, 6등급이 많다는걸 알 수 있습니다. 그리고 9등급이 마우스를 올려도 안보이네요. 이럴 땐 pandas 데이터인 경우 value_counts()를 쓰면 알 수 있습니다.

 

wine['quality'].value_counts()

 

이번엔 레드와 화이트 별로 color를 구분지어보겠습니다. color 옵션을 줘서 색으로 구분지을 수 있습니다.

fig = px.histogram(wine, x='quality', color='color')
fig.show()

우선, 레드와인보다 화이트와인 갯수가 많아보입니다. 레드와인은 5등급이, 화이트와인은 6등급이 많네요.

728x90