PySR
------
https://julialang.org/downloads/
pip install pysr
python -m julia.install
import pandas as pd
from pysr import PySRRegressor
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
# === BACA DATA ===
df = pd.read_csv("prediction.csv")
# === DEFINISI FITUR DAN TARGET ===
X = df[['Power', 'Speed', 'Spot', 'Thickness', 'Conductivity']]
y = df['Depth']
# === NORMALISASI (opsional tapi direkomendasikan) ===
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
# === SPLIT DATA ===
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
# === INISIALISASI MODEL PySR ===
model = PySRRegressor(
niterations=1000, # ITERASI MAKSIMUM
model_selection="best",
binary_operators=["+", "-", "*", "/"],
unary_operators=[
"cos", "sin", "exp", "log", "sqrt", "abs"
],
extra_sympy_mappings={"sqrt": lambda x: x**0.5},
loss="loss(x, y) = (x - y)^2", # MSE
verbosity=1,
turbo=True,
maxsize=50,
populations=20,
ncyclesperiteration=300,
)
# === LATIH MODEL ===
model.fit(X_train, y_train)
# === CETAK RUMUS TERBAIK ===
print("\n=== RUMUS TERBAIK DARI PySR ===")
print(model.get_best())
# === PREDIKSI DAN SIMPAN HASIL ===
y_pred = model.predict(X_test)
output = pd.DataFrame(X_test, columns=X.columns)
output['Actual'] = y_test.values
output['Predicted'] = y_pred
output['Error'] = y_test.values - y_pred
output['Abs_Error'] = abs(output['Error'])
output.to_excel("pysr_output.xlsx", index=False)
print("File 'pysr_output.xlsx' telah dibuat.")
-----------------------------------------------------------------------------
Xgboost