Menu
CoddyTech

Seberapa Baik Kecocokannya?

Termasuk bagian Statistik untuk ML dalam perjalanan Machine Learning di Coddy. Pelajaran 39 dari 64.

Setiap kumpulan data punya garis, jadi kecocokan perlu dinilai. Seorang pelaut mencatat kecepatan angin dan perahu: bandingkan jumlah kuadrat selisih garis dengan jumlah kuadrat selisih rata-rata, tebakan paling sederhana:

Dua panel dengan enam titik, kecepatan perahu dibandingkan dengan kecepatan angin. Kiri: garis datar pada rata-rata dengan jarak merah yang panjang ke titik-titik, jumlah kuadrat selisih 16.23. Kanan: garis hasil pencocokan dengan jarak merah yang sangat kecil, jumlah kuadrat selisih 0.35

R kuadrat adalah bagian dari sebaran yang dijelaskan oleh garis:

wind = np.array([6, 8, 10, 12, 15, 18])
boat = np.array([3.1, 4.4, 4.9, 6.2, 6.8, 8.1])
slope, intercept = np.polyfit(wind, boat, 1)
predicted = slope * wind + intercept
ss_res = ((boat - predicted) ** 2).sum()  # hasil pencocokan: 0.35
ss_tot = ((boat - boat.mean()) ** 2).sum()  # rata-rata: 16.23
print(np.round(1 - ss_res / ss_tot, 3))

Ini mencetak 0.979: baris ini menjelaskan 98% variasi kecepatan. 1 berarti garis yang sempurna, 0 berarti tidak lebih baik daripada rata-rata.

Ini adalah nilai standar untuk model yang memprediksi angka. Untuk garis yang telah dicocokkan, nilainya sama dengan r kuadrat.

challenge icon

Tantangan

Sedang

Sebuah perkebunan jamur mencatat 16 bedeng tanam di mushrooms.csv. Program membaca nama kolom, lalu kode awal menyesuaikan garis yang memprediksi harvest_kg berdasarkan kolom tersebut. Laporannya memerlukan r_squared, yang masih kosong.

  1. Lengkapi r_squared(y, predicted) agar mengembalikan nilai R kuadrat.
  2. Di bagian akhir, cetak pemeriksaannya: korelasi x dan y, dikuadratkan, dikalikan 100, lalu dibulatkan menjadi 1 angka desimal.

Untuk perkebunan lain dan input humidity:

humidity explains 27.0% of the harvest variation
Check with r squared: 27.0%

Coba sendiri

import numpy as np
import pandas as pd


# Mengembalikan nilai R kuadrat dari prediksi untuk y
def r_squared(y, predicted):
    # Tulis kodemu di sini
    return 0


beds = pd.read_csv("mushrooms.csv")
column = input()
# Jangan ubah baris-baris di bawah ini
x = beds[column]
y = beds["harvest_kg"]
slope, intercept = np.polyfit(x, y, 1)
predicted = slope * x + intercept
r2 = r_squared(y, predicted)
print(f"{column} explains {np.round(r2 * 100, 1)}% of the harvest variation")

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Statistik untuk ML

Latihan sendiri: Compiler Python online