๐ค ๋ฅ๋ฌ๋ ์ฝ๋ ์ ๋ฆฌ
28037 ๋จ์ด ์ธ๊ณต์ง๋ฅAIAI
1. ํ๋ค์ค import
import pandas as pd
2. Matplotlib์ pyplot import
import matplotlib.pyplot as plt
3. ๋ฐ์ดํฐ ํ๋ ์์ ์, ๋ค ์กฐํํ๋ ๋ฒ
data = DataFrame()
data.head() ## ์ฒ์ 5๊ฐ์ ํ์ ๋ณด์ฌ์ค.
data.tail() ## ๋ง์ง๋ง 5๊ฐ์ ํ์ ๋ณด์ฌ์ค.
4. ํ์คํ ๊ทธ๋จ ๊ทธ๋ฆฌ๊ธฐ
petal = iris['petal.width']
plt.hist(petal, bins=5) ## 5๊ฐ์ ๊ตฌ๊ฐ์ ๋๋ ์ ๋ณด์ฌ์ค๋ค.
5. ์ฐ์ ๋ ์๊ฐํ
iris.plot.scatter(x='sepal.width',
y='petal.width',
s=100, # marker size
c='blue',
alpha=0.5)
plt.title('Scatter Plot of iris by pandas', fontsize=20)
plt.xlabel('Petal Length', fontsize=14)
plt.ylabel('Petal Width', fontsize=14)
plt.show()
- seaborn์ ์ด์ฉํ ์ฐ์ ๋ ๊ทธ๋ฆฌ๊ธฐ
import seaborn as sns
sns.scatterplot(x="sepal.length", y="petal.length", hue="variety", s=100, data=iris)
=> hue
๋ ๊ทธ๋ฃน์ ๋ฐ๋ผ ์์์ ๋ค๋ฅด๊ฒ ํด์ฃผ๋ ์ค์ ๊ฐ
6. Label Encoding ํ๋ ๋ฒ
from sklearn.preprocessing import LabelEncoder
encoder = LabelEncoder()
iris['variety'] = encoder.fit_transform(iris['variety'])
7. ํธ๋ ์ด๋ ์ ๊ณผ ํ ์คํธ ์ ๋ถ๋ฆฌํ๊ธฐ
from sklearn.model_selection import train_test_split
X= iris.loc[:, iris.columns!= "variety"]
Y= iris['variety']
x_train, x_test, y_train, y_test = train_test_split(X, Y, test_size= 0.1, random_state = 2021, stratify = Y)
## train:test = 9:1
print(x_train, x_test)
8. Random Forest ๋ชจ๋ธ ํ์ตํ๊ธฐ
- ํ์ดํผํ๋ผ๋ฏธํฐ ์ค์ : n_estimators=50, max_depth=13, random_state=30, min_samples_leaf=5
- n_estimators ์ข ํฉํ ์ ์ฒด ํธ๋ฆฌ์ ๊ฐ์ง์, max_depth : ๊ฐ Tree์ ๊ฐ์ฅ ๊น์ ๋์ด, min_samples_leaf: ๊ฐ ๋์ ๋ ธ๋์๋ ์ต์ 5๊ฐ์ ํธ๋ ์ด๋ ์ํ์ด ์์ด์ผํจ
from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=50, max_depth=13, random_state=30, min_samples_leaf=5)
model.fit(x_train, y_train)
9. ๋ด๋ด๋คํธ์ํฌ ๋ชจ๋ธ ํ์ตํ๊ธฐ
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.layers import Input, Dense, BatchNormalization
from tensorflow.keras.models import Sequential, Model
from tensorflow.keras.callbacks import EarlyStopping
model = Sequential()
model.add(Dense(20, input_dim=6, activation='relu')) ## ์ธํ ๋ ์ด์ด์ ํฌ๊ธฐ๋ 6
model.add(BatchNormalization())
model.add(Dense(20, activation='relu'))
model.add(BatchNormalization())
model.add(Dense(3, activation='softmax'))
## 20๊ฐ์ ๋
ธ๋๋ฅผ ๊ฐ์ง๋ 2๊ฐ์ ํ๋ ๋ ์ด์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ ๋ชจ๋ธ
model.compile(loss='sparse_categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
es = EarlyStopping(monitor= "val_loss", mode="min", verbose =1 , patience=5, restore_best_weights=True)
## ์ต๊ณ ์ ์ฑ๋ฅ์ผ ๋ ๊ฐ์ค์น๋ฅผ ๋ณต๊ตฌํ๋ค.
history = model.fit(x_train, y_train, epochs=2000, validation_split=0.2, callbacks=[es])
10. Linear model ํ์ตํ๊ธฐ
from sklearn.linear_model import LinearRegression
linear_regression = LinearRegression()
m = linear_regression.fit(x_train,y_train["Lemon"])
print(m)
11. Decision Tree model ํ์ตํ๊ธฐ
-
min_samples_leaf: ํธ๋ฆฌ์ ์ต์ ์ํ ๊ฐฏ์
-
max_depth: ํธ๋ฆฌ์ ์ต๋ ๊น์ด
from sklearn.tree import DecisionTreeClassifier
trees=[]
for i in range(1, 16):
d_model = DecisionTreeClassifier(min_samples_leaf=10, max_depth=i, random_state=2021)
d_model.fit(x_train, y_train)
12. column ์ญ์ (drop)ํ๊ธฐ
df1 = df1.drop(columns=['voc_trt_reslt_itg_cd',
'oos_cause_type_itg_cd',
'engt_cperd_type_itg_cd',
'engt_tgt_div_itg_cd',
'fclt_oos_yn'
])
## ์ง์ ์ง์ ํด์ ์ญ์ ํ ์ ์์.
f1 = df.drop(['voc_trt_reslt_itg_cd',
'oos_cause_type_itg_cd',
'engt_cperd_type_itg_cd',
'engt_tgt_div_itg_cd',
'fclt_oos_yn'
], axis=1)
## axis=1 ๋ก ์ค์ ํด์ ์ด์ ์ง์ด๋ค.
13. ํน์ ํ์ ์ ๊ฐ์ง ์ปฌ๋ผ ์ ํํ๊ธฐ
cat_cols = df1.select_dtypes(include='object')
14. One-Hot Encoder
- get_dummies๋ฅผ ํ์ฉํ๋ค.
pd.get_dummies(cat_cols['cust_clas_itg_cd']).head()
15. ์๊ด๊ด๊ณ ํ์ ํ๊ธฐ
- corr() ๋ฅผ ์จ์ ์๊ด๊ด๊ณ๋ฅผ ํ์ ํ ์ ์๋ค.
df = DataFrame()
df.corr()
16. ํํธ๋งต ์ถ๋ ฅํ๊ธฐ (seaborn์ ์ฌ์ฉ)
sns.set(rc={'figure.figsize':(12,8)})sns.heatmap(corr, annot=True) ## annot ์ค์ ์ ์ซ์๋ฅผ ๋ณด์ฌ์ค ์ง์ ๋ํ ์ฌ๋ถ
17. Check Point ์ค์ ํ๊ธฐ
- ์ฑ๋ฅ์ด ๊ฐ์ฅ ์ข์ ๋ชจ๋ธ์ ํ์ผ๋ก ์ ์ฅํ๋ค.
input_size = x_train.shape[1]
model = Sequential()
model.add(Dense(200, input_shape=(input_size, ), activation="relu"))
model.add(BatchNormalization())
model.add(Dense(50, activation="relu"))
model.add(BatchNormalization())
model.add(Dense(25, activation="relu"))
model.add(BatchNormalization())
model.add(Dense(10, activation="relu"))
model.add(BatchNormalization())
model.add(Dense(5, activation="relu"))
model.add(BatchNormalization())
model.add(Dense(1))
model.compile(loss="mean_squared_error", metrics=['accuracy'], optimizer="adam")
mc = ModelCheckpoint('best_model.h5', monitor='val_accuracy', mode='max', save_best_only=True)
history = model.fit(x_train, y_train, epochs=200, validation_data=(x_valid, y_valid), callbacks=[mc])
18. ๋ฐ์ดํฐ ํ๋ ์ ์ธ๋ฑ์ค ์ด๊ธฐํ
drop
์ค์ ์ ์ธ๋ฑ์ค๋ก ์ธํ ํ ์ด์ ์ญ์ ํ ์ง์ ๋ํ ์ฌ๋ถ ๊ฒฐ์ inplace
๋ ํ์ฌ ๋ฐ์ดํฐ ํ๋ ์ ์๋ณธ์ ์ ์ฉํ ์ง ๊ฒฐ์
x_train.reset_index(inplace=True, drop=True)
19. ๋ด๋ด๋คํธ์ํฌ ํ์ต ๋ก๊ทธ ์๊ฐํ
t_acc = history.history["accuracy"]
v_acc = history.history["val_accuracy"]
โ
โ
plt.plot(t_acc, c="red")
plt.plot(v_acc, c="blue")
โ
plt.title("Accuracy")
โ
plt.xlabel("epochs")
plt.ylabel("accuracy")
โ
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ค ๋ฅ๋ฌ๋ ์ฝ๋ ์ ๋ฆฌ), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@holim0/๋ฅ๋ฌ๋-์ฝ๋-์ ๋ฆฌ์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค