Data
Load dan preprocess data
import pandas as pd
import numpy as np
Run to view results
df = pd.read_csv("data_aktivitas.csv")
Run to view results
Hitung error dan membuat label kesesuaian
df["error_persen"] = abs(df["kalori_sw"] - df["kalori_met"]) / df["kalori_met"] * 100
Run to view results
buat fungsi label
def label_kesesuaian(error):
if error <= 10:
return "Sesuai"
elif error <= 20:
return "Cukup Sesuai"
else:
return "Tidak Sesuai"
Run to view results
df["label"] = df["error_persen"].apply(label_kesesuaian)
Run to view results
Pilih fitur dan target
X = df[[
"durasi (menit)",
"kecepatan (mph)",
"hr",
"berat",
"kalori_sw"
]]
y = df["label"]
Run to view results
Encoding data kategorikal (aktivitas)
X = pd.get_dummies(df[[
"aktivitas",
"durasi (menit)",
"kecepatan (mph)",
"hr",
"berat",
"kalori_sw"
]])
Run to view results
Split data
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
Run to view results
Train model Gaussian Naive Bayes
from sklearn.naive_bayes import GaussianNB
model = GaussianNB()
model.fit(X_train, y_train)
Run to view results
Prediksi dan Evaluasi
y_pred = model.predict(X_test)
Run to view results
Confusion matrix
from sklearn.metrics import confusion_matrix, classification_report
cm = confusion_matrix(y_test, y_pred)
print(cm)
Run to view results
Precision, Recall, dan Accuracy
print(classification_report(y_test, y_pred))
Run to view results
Prediksi data baru (Demo)
data_baru = pd.DataFrame([{
"durasi (menit)": 30,
"kecepatan (mph)": 8.5,
"hr": 150,
"berat": 68,
"kalori_sw": 290
}])
Run to view results
# Encode new data to match training data
encoded_data_baru = pd.get_dummies(data_baru)
# Ensure all columns match the training data
for col in X_train.columns:
if col not in encoded_data_baru:
encoded_data_baru[col] = 0
# Reorder columns to match training data
encoded_data_baru = encoded_data_baru[X_train.columns]
hasil = model.predict(encoded_data_baru)
print("Prediksi tingkat kesesuaian:", hasil[0])
Run to view results