Hello World ML
Hello World ML
Machine Learning
[email protected]
$ mkdir jupy
$ cd jupy
$ virtualenv myenv atau
$ python3 -m venv myenv
$ source myenv/bin/activate
$ pip3 install jupyter
$ jupyter notebook
Process ML: identifity the data, prepare data, select the ML algoritm, split data, train model, evaluate, predict dan
deploy.
Karena menggunakan data Iris maka tidak perlu melakukan preprocessing, karena data di setting sudah bisa
digunakan untuk pemodelan, namun masih perlu proses scaling.
1
1. Cek Library
from __future__ import print_function
import IPython
print('IPython:', IPython.__version__)
import numpy
print('numpy:', numpy.__version__)
import pandas
print('pandas:', pandas.__version__)
import sklearn
print('scikit-learn:', sklearn.__version__)
#extract data menjadi data input dan target untuk mengetahui karakter datanya:
X, y = iris.data, iris.target
(cek type data input, jika model di train dgn data numpy maka input ke modelnya juga harus data numpy)
Sikitlearn terbaru bisa merge: di training dgn input numpy tapi di deployment inputnya dengan data pandas,
tapi tetap tidak di sarankan karena, data dari pandas ada nama kolom nya sedangkan data dari numpy
kolom direpresentasikan dengan nomor index datanya.
type(X)
#lihat isi data iris di tipe data numpy array, hanya 5 data teratas:
print(X[:5])
print(y[:5])
(outputnya seperti list tapi sebenarnya type data numpy)
df = pd.DataFrame(iris.data, columns=iris.feature_names)
df['target'] = iris.target
df.head()
dari kondisi data diatas sudah bisa di proses untuk pemodelan machine learning, karena telah memenuhi
syarat-syaratnya: tidak ada null, berupa matrik (angka)
namun masih perlu dilakukan preprocessing proses scaling sebelum di masukan dalam Machin Learning SVM
(terserah algoritmanya apa).
2
Perlu di ketahui bahwa: process scaling pasti menggunakan dot fit (.fit), segala sesuatu dalam pemodelan
yang menggunakan dot fit seperti: imputasi, normalisasi, dimension literrediraction bisa digabungkan
dengan modelnya dengan sesuatu yg disebut pipeline, jadi dataset dimasukan ke dalam pipeline yang mana
isi dari pipeline nya adalah scaling dan modeling, meskipun dalam pipeline bisa dimasukkan imputasinya,
normalisasinya dll.
3. Membuat 2 pipeline (pipeline untuk numpy dan pipeline untuk pandas), jika di real hanya 1 pipeline
# lakukan hal yang sama untuk data pandas, isinya sama dengan numpy hanya dibedakan variablenya saja:
pipe_pandas = make_pipeline(StandardScaler(), LinearSVC(dual='auto'))
4. #Split dataset
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report
5. Training data
# train model data numpy
pipe_numpy.fit(X_train, y_train)
# evaluasi model
y_pred = model_pandas.predict(df_test.drop('target', axis=1))
print(classification_report(df_test['target'], y_pred))
#================ end cara lain
3
pipe_pandas.fit(X_train_df, y_train_df)
#pandas
with open("model_pandas.pkl", "wb") as model_file:
pickle.dump(pipe_pandas, model_file)
7. Load Model
#load model numpy
with open("model_numpy.pkl", "rb") as model_file:
loaded_numpy_model = pickle.load(model_file)
#cara pakai model yg terload, pastikan jumlah dan posisi fiture banar sama
dengan saat di training tidak boleh ketukar, misalnya kita punya new_data:
#new_data = [1,1,1,1]
#artinya: sl, sw, pl, pw nya 1 cm
#dan itu masih berupa vector padahal di ML mengasumsikannya selalu data majemuk (matrik), maka harus
diubah ke dalam data matrik:
new_data = [[1,1,1,1]]
loaded_numpy_model.predict(new_data)
# inference model
new_data = [1, 2, 3, 4]
new_data = pd.DataFrame([new_data], columns=iris.feature_names)
#cek new_datanya:
new_data
4
LANGKAH II: DEPLOYMENT > SERVING (REPORTING, SCORING, API)
8. hj
Sumber:
https://linuxhint.com/install-jupyter-notebook-ubuntu-22-04/
https://www.digitalocean.com/community/tutorials/how-to-set-up-jupyter-notebook-for-python-3
https://www.rosehosting.com/blog/how-to-install-jupyter-notebook-on-ubuntu-22-04/