1. ๋ฌธ์ ์ ์
- ๋จธ์ ๋ฌ๋์ ์ฌ์ฉํด์ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๊ฒ์ธ์ง
- ์์ฉ๋ฒ์ฏ๊ณผ ๋
๋ฒ์ฏ์ ๊ตฌ๋ถํ์
2. ๋ฐ์ดํฐ์์ง
- ์ ์๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ์ํ ๋ฐ์ดํฐ ์์ง
- ์ฌ์ดํธ์์ ๋ค์ด๋ก๋๋ฐ๊ธฐ, ํฌ๋กค๋งํด์ ์ฐพ๊ธฐ, DB์์ ๊ฐ์ ธ์ค๊ธฐ
3. ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ
- ๋ฐ์ดํฐ ํฌ๊ธฐํ์ธ
- ๊ฒฐ์ธก์น ํ์ธ
- ๋ฌธ์ ์ ์ ๋ต์ผ๋ก ๋๋๊ธฐ
- ํต๊ณ์น ํ์ธํ๊ธฐ
- ๊ฐ์ ์ซ์๋ก ๋ณ๊ฒฝ
> ๋ ์ด๋ธ ์ธ์ฝ๋ฉ, ์ํซ์ธ์ฝ๋ฉ(๋ง์ด ์ฌ์ฉ)
4. ํ์์ ๋ฐ์ดํฐ ๋ถ์(์๋ต ๊ฐ๋ฅ)
- ๋ฐ์ดํฐ๋ฅผ ๋ ์์ธํ๊ฒ ๋ฐ๋ผ๋ณด์
- ํต๊ณ๊ธฐ๋ฒ ์ฌ์ฉํ๊ธฐ
- ๊ทธ๋ํ๋ก ๊ทธ๋ฆฌ๊ธฐ
5. ๋ชจ๋ธ ์ ํ ๋ฐ ํ์ดํผ ํ๋ผ๋ฏธํฐ ํ๋
- ๋ชจ๋ธ ์ ํ : ๋ชฉ์ ๊ณผ ๋ฐ์ดํฐ์ ๋ง๋ ๋ชจ๋ธ ๊ณ ๋ฅด๊ธฐ
- ํ์ดํผ ํ๋ผ๋ฏธํฐ ํ๋ : ๋ชจ๋ธ ์ ํฉํ๊ฒ ์์ ํ๊ธฐ
- train_test_split > ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋ ํ์ ์งํ > 5๋จ๊ณ๋ ๋ฐ์ดํฐ ์ ์ฒ๋ฆฌ๊ฐ ์๋ฃ๋์์
- DecisionTree ๋ชจ๋ธ ๋ถ๋ฌ์ค๊ธฐ
6. ํ์ต
- 5๋จ๊ณ์์ ๋ง๋ ๋ชจ๋ธ์ ์ ์ฒ๋ฆฌ ์๋ฃ๋ ๋ฐ์ดํฐ๋ก ํ์ตํ๊ธฐ
7. ์์ธก ๋ฐ ํ๊ฐ
- ๋ชจ๋ธ์ ์ฑ๋ฅ์ ํ๊ฐ
- ํ
์คํธ ๋ฐ์ดํฐ๋ก ์์ธกํ๊ธฐ
from character โ to number
โ separate into embarked โ then just one-hot encoding 0 or 1
but weakness is need to use many columns
# ํ์ํ library ๋ถ์ด์ค๊ธฐ
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split #ํ๋ จ๊ณผ ํ
์คํธ์ฉ ์
ํธ ๋ถ๋ฆฌ
from sklearn.metrics import accuracy_score #ํ๊ฐ๋ฅผ ์งํํ ๋ ์ ํ๋ ์ธก์
from sklearn.tree import DecisionTreeClassifier #๊ฒฐ์ ํธ๋ฆฌ๋ชจ๋ธ ๊ฐ์ ธ์ค๊ธฐ
#1. data๋ฅผ ๋ก๋ํ๊ธฐ
data = pd.read_csv('./data/mushroom.csv')
data
# dataํฌ๊ธฐ ํ์ธ
data.shape
#๊ฒฐ์ธก์น ์ฌ๋ถ, ํ์
ํ์ธ
#๊ฒฐ์ธก์น > ์ญ์ or ์ฑ์ฐ๊ธฐ
# ํ์
> ์ซ์ํ์๋ก ๋ณํ (๊ธ์๋ ์๋๋ค)
data.info()
#๋ฌธ์์ ๋ต๋ฐ์ดํฐ๋ก ๋ถ๋ฆฌ
y = data['poisonous'] #๋ต์
x = data.iloc[0:,1:] #๋ฌธ์
print(x)
print(y)
print(x.shape)
print(y.shape)
#ํต๊ณ์นํ์ธํ๊ธฐ
#ํ๊ท , ๋ถ์ฐ, 4๋ถ์์ > ์ซ์ํ ๊ฐ์์ ํ์ธ ๊ฐ๋ฅ
data.describe()
# ๋ต ๋ฐ์ดํฐ์ ๊ฐ์ ๊ตฌํ๊ธฐ
# e(edible):์์ฉ๋ฒ์ฏ
#p(poison):๋
๋ฒ์ฏ
y.value_counts()
x['habitat'].unique()
#๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฝํ dictionary์์ฑ
habitat_dic = {
'u':0,
'g':1,
'm':2,
'd':3,
'p':4,
'w':5,
'l':6
}
x['habitat']=x['habitat'].map(habitat_dic)
x['habitat']
# get_dummies()๋ฉ์๋ ํ์ฉ
x_one_hot = pd.get_dummies(x)
x_one_hot.head()
print("์๋ณธํน์", list(x.columns))
print("์ํซ์ธ์ฝ๋ฉ ์ดํ ํน์ฑ: ",list(x_one_hot.columns))
#ํ๋ จ์ฉ ์ธํธ์ ํ๊ฐ ์ธํธ๋ก ๋ถ๋ฆฌ
#x_one_hot, y
#train_test_splitํจ์ ์ฌ์ฉ
x_train,x_test,y_train,y_test=train_test_split(x_one_hot,y,
test_size = 0.3)
print(x_train.shape)
print(y_train.shape)
print(x_test.shape)
print(y_test.shape)
#decisionTree ๋ชจ๋ธ ๋ถ๋ฌ์ค๊ธฐ
tree = DecisionTreeClassifier(max_depth = 3)
tree.fit(x_train,y_train)
pre = tree.predict(x_test)
pre
accuracy_score(pre,y_test)
print("์์ธก ์ ํ๋: {0: .4f}".format(accuracy_score(pre,y_test)))