수식의 결과는 범주형 데이터인 문자열이 못오는 경우나 독립변수가 범주형 데이터에서 수식에 넣을수 없기 때문에 변경이 필요하다.
범주형 -> 숫자형 으로 변경하는 작업이다 (1/0)
Decision Tree , Random Forest , XGBoost , LigitGBM 은 원핫 인코딩이 필요가 없다.
만약 종속변수가 원핫 인코딩을 수행하면 그만큼 종속변수에 결과 가 늘어난다.
# 데이터 준비
path = "https://raw.githubusercontent.com/blackdew/ml-tensorflow/master/data/csv/iris.csv"
data = pd.read_csv(path)
data.head()
data = pd.get_dummies(data)
data.head()
x = data[['꽃잎길이' , '꽃잎폭','꽃받침길이','꽃받침폭']]
y = data[['품종_setosa','품종_versicolor','품종_virginica']]
print(x.shape , y.shape)
# 모델을 준비한다.
X = tf.keras.Input([4])
Y = tf.keras.layers.Dense(3 , activation='softmax')(X)
model = tf.keras.Model(X,Y)
model.compile(loss='categorical_crossentropy',metrics='accuracy')
model.summary()
#데이터로 모델을 학습한다.
model.fit(x,y,epochs = 500)
#모델을 이용한다
model.predict(x[:10])
model.save("my_model.h5") # "모델 이름.h5"
m = tf.keras.models.load_model("my_model.h5") "불러올 모델의 이름.h5"
m.predict(x[:10])