일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- 내일배움카드
- 오블완
- 파이썬
- 내일배움캠프
- harkerrank
- 프로그래머스
- 프로젝트
- 웹 스크랩핑
- hackerrank
- SQL
- 회귀분석
- 어쩌다 마케팅
- Cluster
- 스파르타 코딩
- 실전 데이터 분석 프로젝트
- 중회귀모형
- 스파르타
- TiL
- 파이썬 철저입문
- 스파르타코딩
- R
- 파이썬 철저 입문
- MySQL
- 파이썬 머신러닝 완벽 가이드
- 텍스트 분석
- 티스토리챌린지
- 미세먼지
- 내일배움
- wil
- 파이썬 머신러닝 완벽가이드
- Today
- Total
OkBublewrap
Wine_EDA 본문
# Package
import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
# Visulization
import matplotlib.pyplot as plt
import seaborn as sns
# Data Set
from sklearn.datasets import load_wine
wine = load_wine()
wine_df = pd.DataFrame(data = wine.data, columns = wine.feature_names)
wine_df_y = wine.target
wine_df['target'] = winde_df_y
Columns
- 알콜(Alcohol)
- 말산(Malic acid)
- 회분(Ash)
- 회분의 알칼리도(Alcalinity of ash)
- 마그네슘(Magnesium)
- 총 폴리페놀(Total phenols)
- 플라보노이드 폴리페놀(Flavanoids)
- 비 플라보노이드 폴리페놀(Nonflavanoid phenols)
- 프로안토시아닌(Proanthocyanins)
- 색상의 강도(Color intensity)
- 색상(Hue)
- 희석 와인의 OD280/OD315 비율 (OD280/OD315 of diluted wines)
- 프롤린(Proline)
결측치 유무확인
import missingno as miss
miss.matrix(wine_df);
결측치는 없어 보인다.
Target
np.unique(wine_df_y,
return_counts=True)
[out]
(array([0, 1, 2), array([59, 71, 48]))
Target 값은 0,1,2로 이루어진 범주형으로 갯수는 동일 하지 않았다.
# Descirbe
winde_df.describe()
변수 종류가 다 연속형으로 되어 있는 것으로 보인다.
# Boxplot 시각화
plt.figure(figsize=(15, 15))
for idx, col in enumerate(list(wine_df)):
plt.subplot(4, 4, idx+1)
sns.boxplot(wine_df[col], color = 'g')
alchole : 11 ~ 15
mailc_acid : 0 ~ 6
ash : 1 ~ 3
alcalinity_of_ash : 10 ~ 30
magnesusum : 60 ~ 170
total_phenols : 1 ~ 4
flavanolds : 0 ~ 5
nonflavanoid_phenols : 0 ~ 0.7
proanthocyanins : 0 ~ 4
color_intensity : 2 ~ 13
hue : 0.5 ~ 1.75
od280/od315_of_duluted_wines : 1 ~ 4
proline : 300 ~ 1700
target : 0, 1, 2
분포가 이렇게 이루어진 것으로 볼 수 가 있다. 박스 플롯을 보면 이상치가 존재하는데
malic_acid, ash, alcalinity_of_ash, magnesium, proanthoyanins, color_intensity, hue에 개별적으로 보기로 하자
말산은 포도주의 시큼한 맛에 기여를 한다.
wine_df['malic_acid'].sort_values(ascending = False).head(3)
# 123 5.80
# 173 5.65
# 137 5.51
# Name: malic_acid, dtype: float64
인덱스로 출력을 해보면 target 값은 1, 2, 2로 나온다 품질이 높게 나온 것을 볼 수 있다.
상관계수를 확인해보자
<상관계수>
plt.figure(figsize=(18,8))
corr= wine_df.corr()
sns.heatmap(corr, annot=True, square=False, vmin=-.6, vmax=1.0);
상관계수는 0.44으로 약간의 양의 상관관계를 가지는 것을 확인 할 수 있다. target에 유의미한 상관계수는 0.52인 alcalinity_of_ash, -0.85 favanoids, 0.49 noflavanoid_phenols. -0.5 proanthocyanins -0.62 hue, -0.79 wines, -0.63 proline이라고 볼수 있다. 음에 상관관계인 flavanoids는 플라보노이드 폴리페놀(Flavanoids)이다. 이게 무엇인지 찾아봤는데 화학적 물질이라고 한다. 맛에 관련된 화학성분으로 보인다.
<PairPlot>
전체적인 분포도를 보기 위해서 목표별로 시각화를 진행
sns.pairplot(wine_df, hue = 'target', palette = 'deep' )
분포를 봤을때 고루게 잘 나눠진것을 보면 alchole , flavanolds, proline 정도가 보인다. 변수의 양이 너무 많아서 보기가 힘드므로 변수를 추출할 필요성이 있어 보인다.
<의사결정나무>
# 패키지
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz
from sklearn.tree import plot_tree
from IPython.display import Image
import pydotplus
# 데이터 나누기
X = wine_df.drop('target', axis = 1)
y = wine_df['target']
# 시각화
dt_clf = DecisionTreeClassifier(random_state= 2023).fit(X,y)
dot_data = export_graphviz(dt_clf, out_file=None, feature_names=X.columns,
class_names= str(y.unique()), filled=True, rounded=True, special_characters=True)
graph = pydotplus.graph_from_dot_data(dot_data)
Image(graph.create_png())
# 변수중요도
clf_importance = pd.Series(dt_clf.feature_importances_, index = wine["feature_names"]).sort_values()
clf_importance.plot(kind = "barh", title = "tree feature importance")
plt.show()
변수 중요도는 proline, od280/od315_odf_diluted_wines, flavanoids, hue, color_intensity, alcohol, malic_acid가 중요 변수로 나왔다. 이 변수들만 가지고 모델링을 진행을 해보기로 했다. 추출된 변수의 분포확인
# data seting
X = X[['proline', 'od280/od315_of_diluted_wines', 'flavanoids', 'hue', 'color_intensity', 'alcohol', 'malic_acid']]
dt_new = X
dt_new['target'] = y
sns.pairplot(dt_new, hue = 'target', palette = 'deep')
'Python > 프로젝트' 카테고리의 다른 글
실전 데이터 분석 프로젝트(3) (0) | 2023.03.24 |
---|---|
실전 데이터 분석 프로젝트(2) (0) | 2023.03.22 |
실전 데이터 분석 프로젝트(1) (0) | 2023.03.21 |
wine_modeling(1) (0) | 2023.03.05 |
Human Activity Recognition (1) | 2022.10.06 |