Klasifikasi Bunga Iris
2 min readDec 4, 2022
menggunakan ANN — Keras python
Asssalamu’alaikum teman=teman data
Kali ini akan dilakukan klasifikasi bunga Iris menggunakan Artificial Neural Network dengan modul Keras Python.
Kita install terlebih dulu keperluan librarynya
import numpy as np
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import OneHotEncoder
from keras.models import Sequential
from keras.layers import Dense
from keras.optimizers import Adam
kemudian kita persiapkan data nya
iris_data = load_iris()
print('Example data: ')
print(iris_data.data[:5])
print('Example labels: ')
print(iris_data.target[:5])
x = iris_data.data
y_ = iris_data.target.reshape(-1, 1) # konversi data ke kolom tunggal
# data spesies bunga iris dibuat menjadi kategorik
encoder = OneHotEncoder(sparse=False)
y = encoder.fit_transform(y_)
#print(y)
# Split the data for training and testing
train_x, test_x, train_y, test_y = train_test_split(x, y, test_size=0.20)
kemudian membangun model jaringan syaraf (neural network) nya
model = Sequential()
model.add(Dense(10, input_shape=(4,), activation='relu', name='fc1'))
model.add(Dense(10, activation='relu', name='fc2'))
model.add(Dense(3, activation='softmax', name='output'))
kemudian menyusun model dengan optimizer dan loss nya
# Adam optimizer with learning rate of 0.001
optimizer = Adam(lr=0.001)
model.compile(optimizer, loss='categorical_crossentropy', metrics=['accuracy'])
print('Neural Network Model Summary: ')
print(model.summary())
saatnya model di training
# Train the model
model.fit(train_x, train_y, verbose=2, batch_size=5, epochs=100)
kemudian
results = model.evaluate(test_x, test_y)
print('Final test set loss: {:4f}'.format(results[0]))
print('Final test set accuracy: {:4f}'.format(results[1]))
kemudian kita coba memprediksikan dengan bunga baru
x_coba = [[5.1, 3.5, 1.4, 0.2]]
model.predict(x_coba)
menghasilkan seperti berikut,
1/1 [==============================] - 0s 65ms/step
array([[9.9746847e-01, 2.5315289e-03, 2.3805711e-11]], dtype=float32)
atau bisa terbaca (0.9, 0.0025, 0.000000000023) sehingga bunga baru diklasifikasikan sebagai setosa
terimakasih