Analisis regresi adalah metode statistik untuk mencari hubungan antar variabel numerik, supaya kita bisa memprediksi suatu hasil. Komponen utamanya terdiri dari minimak satu variabel independen/predictor dan satu variabel respon/outcome yang merupakan variabel hasil prediksi dalam analisis regresi.
Di artikel ini, kita akan mempraktikkan analisis regresi sederhana menggunakan Python dengan library scikit learn. Asumsinya, kita sudah menginstall python di komputer kita masing-masing ya. Sedangkan untuk datanya, saya pakai data Fish Market. Yang merupakan kumpulan data berisi berbagai spesies ikan beserta karakteristiknya. Dataset ini dirancang untuk analisis regresi berganda yang memiliki beberapa kolom dengan informasi berikut:
Species
Variabel ini menunjukkan spesies/jenis ikan. Variabel ini bersifat kategorik dan mengelompokkan ikan ke dalam tujuh jenis, seperti Perch, Bream, Roach, Pike, Smelt, Parkki, dan Whitefish. Variabel ini dapat digunakan sebagai informasi kategori ikan.
Weight
Variabel ini menunjukkan berat ikan. Variabel numerik dengan satuan gram. Berat merupakan variabel dependent (target) yang akan kita prediksi.
Length
Panjang ikan (cm).
Height
Tinggi ikan (cm).
Width
Lebarnya ikan (cm).
| Species | Length (X1) | Height (X2) | Width (X3) | Weight (Y) |
|---|
Silahkan unduh file datanya di LINK DATA, lalu simpan file tersebut dalam satu folder, misalnya C:\latihan. Folder ini juga akan digunakan untuk menyimpan skrip Python agar seluruh file berada dalam satu lokasi.

Jika file tersebut dibuka, akan terlihat data seperti pada gambar di atas, yang terdiri atas 5 kolom atau variabel. Variabel length, height, dan width merupakan variabel independen/prediktor, sedangkan variabel weight merupakan variabel dependen atau yang akan kita prediksi dalam model. Dalam artikel ini, kita akan melakukan analisis regresi berganda untuk memperoleh nilai intersep dan koefisien regresi. Karena data yang digunakan hanya memiliki satu variabel independen (predictor), model regresi yang dihasilkan hanya akan memiliki satu koefisien regresi dan satu intersep. Oh iya, sekedar reviu, apa sih intersep dan koefisien regresi itu? sederhananya, model regresi berbentuk
Di mana:
- : variabel dependen
- : variabel independen
- : intercept
- : koefisien regresi
- : residual/sisaan/error
Nah, yang kita akan hitung adalah satu nilai intersep dan 3 koefisien regresi.
Selanjut back to editor, install beberapa library yang diperlukan yaitu, Library pandas, dan Library scikit_learn. Berikut skrip install nya:
python3 -m pip install pandaspython3 -m pip install scikit_learnSelanjutya buat file dengan nama proses.py dan simpan di folder C:/latihan, codenya sebagai berikut
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score, mean_squared_error
# 1. Load data
df = pd.read_csv("Fish.csv")
# 2. Pilih variabel
X = df[["Length", "Height", "Width"]] # 3 prediktor
y = df["Weight"] # target
# 3. Split train-test
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=42
)
# 4. Buat model
model = LinearRegression()
# 5. Training
model.fit(X_train, y_train)
# 6. Prediksi
y_pred = model.predict(X_test)
# 7. Parameter Model
print("Intercept (a):", model.intercept_)
print("Koefisien (b1,b2,b3):", model.coef_)
print("R² Score:", r2_score(y_test, y_pred))
print("MSE:", mean_squared_error(y_test, y_pred))
# 8. Contoh prediksi untuk data ikan yang baru
contoh = [[30, 12, 5]] # Length3=30, Height=12, Width=5
prediksi = model.predict(contoh)
print("Prediksi berat ikan:", prediksi[0], "gram")
Ok, kita bahas per baris kode ya.
Baris 7, untuk membaca file Fish.csv yang sudah ada di folder yang sama dengan skrip ya. Baris 10, untuk mendefisikan nama variabel prediktor. Baris 11 mendefiniskan nama variabel independen.
Baris 14 mendefinisikan variabel X_train, X_test, y_train, dan y_test.
Dalam konsep machine learning, data umumnya dibagi menjadi dua bagian, yaitu data latih (training data) dan data uji (testing data). Data latih digunakan sebagai dasar dalam proses pembentukan model, sedangkan data uji digunakan untuk mengukur akurasi model yang telah dibangun. Pada baris ini digunakan fungsi train_test_split(). Parameter test_size = 0.2 menunjukkan bahwa 20% dari total data dialokasikan sebagai data uji (test), sedangkan 80% sisanya digunakan sebagai data latih (train).
Baris 19, membuat model Regresi linear
Baris 22, melakukan training data, yaitu dengan 80% data yang ada.
Baris 25, melakukan prediksi dengan 20% data.
Barus 28-31, menunjukkan beberapa parameter model yang dihasilkan, yaitu: intersep, koefisien, R2 score, dan Mean Squared Error (MSE). dimana
Baris 34, mendefinisikan data baru, memasukkan lenght=30 cm, height=12 cm, dan width=5 cm
Baris 35, prediksi / hitung weight dengan data baru pada baris 34
Baris 37, menampilkan prediksi berat ikan.
Ok, selanjutnya kita jalankan skrip kita
c:\latihan python proses.pyBerikut hasil skrip yang telah dijalankan:
| Intercept (a): -527.35 |
| Koefisien (b1,b2,b3): [23.23 11.21 46.51] |
| R² Score: 0.88 |
| MSE: 17443.64 |
| Prediksi berat ikan: 536.51 gram |
Interpretasi dari hasil di atas :
Intersep sebesar -527, yang bermakma jika semua variabel independen bernilai 0, maka nilai weight (Y) diperkirakan sebesar −527 gram. Namun perlu diketahui bahwa intersep hanya konstanta matematis, bukan makna kejadian nyata. Karena regresi mencari garis terbaik (OLS/minim MSE). Secara geometri, garis bisa saja memotong sumbu Y di nilai negatif.
Koefisien (b1,b2,b3): [23.23 11.21 46.51], yang berarti Koefisien regresi untuk setiap variabel prediktor, yang menunjukkan perubahan rata-rata Y akibat kenaikan 1 satuan X, dengan variabel lain dianggap tetap (ceteris paribus). Contohnya untuk b₁ = 23.23. artinya jika length (X₁) naik 1 satuan, maka weight (Y) naik rata-rata 23.23 satuan (dengan X₂ dan X₃ tetap).
R² Score: 0.87, yang menunjukkan koefisien determinasi, di mana variabel prediktor dalam model mampu menjelaskan 87% terhadap variasi Y, artinya kualitas model baik ( R²>0,8)
MSE, agak sulit untuk diinterpretasi, sehingga kita gunakan RMSE , yaitu akar dari MSE
Artinya prediksi rata-rata weight salah sekitar ±132 gram.
Prediksi berat ikan: 536.51 gram. Yang artinya Jika ikan memiliki karakteristik (length=30, height=12, width=5), maka model memperkirakan berat ikan tersebut sekitar 536.51 gram.
Ok, sampai di sini bahasan kita tentang analisis regresi berganda.
Kemudian, kalau mau coba memprediksi dengan model yang sudah dibuat, silahkan buka web app berbasis python di tautan berikut ini ya. http://apps.wawasankita.com/anareg/
Semoga bermanfaat.
