Seberapa optimal?
Fungsi np.polyfit() yang Anda gunakan untuk memperoleh parameter regresi menemukan nilai kemiringan (slope) dan intersep yang optimal. Fungsi ini mengoptimalkan jumlah kuadrat residual, atau RSS (residual sum of squares). Pada latihan ini, Anda akan memplot fungsi yang dioptimalkan tersebut, yaitu RSS, terhadap parameter kemiringan a. Untuk melakukannya, tetapkan intersep ke nilai yang Anda peroleh dari proses optimisasi. Lalu, plot RSS terhadap kemiringan. Di mana letaknya minimum?
Latihan ini adalah bagian dari kursus
Pemikiran Statistik dengan Python (Bagian 2)
Petunjuk latihan
- Tentukan nilai-nilai kemiringan (slope) untuk menghitung RSS. Gunakan
np.linspace()untuk memperoleh200titik dalam rentang antara0dan0.1. Sebagai contoh, untuk mendapatkan100titik dalam rentang antara0dan0.5, Anda dapat menggunakannp.linspace()seperti ini:np.linspace(0, 0.5, 100). - Inisialisasi sebuah array,
rss, untuk menampung nilai RSS menggunakannp.empty_like()dan array yang Anda buat di atas. Fungsiempty_like()mengembalikan array baru dengan bentuk dan tipe yang sama seperti array yang diberikan (dalam hal ini,a_vals). - Tulis sebuah
forloop untuk menghitung jumlah RSS dari kemiringan. Petunjuk: RSS diberikan olehnp.sum((y_data - a * x_data - b)**2). Variabelbyang Anda hitung pada latihan sebelumnya sudah tersedia di namespace Anda. Di sini,fertilityadalahy_datadanilliteracyadalahx_data. - Plot RSS (
rss) terhadap kemiringan (a_vals). - Tekan submit untuk melihat plotnya!
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
# Specify slopes to consider: a_vals
a_vals = ____
# Initialize sum of square of residuals: rss
rss = ____
# Compute sum of square of residuals for each value of a_vals
for i, a in enumerate(a_vals):
rss[i] = ____((____ - a*____ - b)**2)
# Plot the RSS
plt.plot(____, ____, '-')
plt.xlabel('slope (children per woman / percent illiterate)')
plt.ylabel('sum of square of residuals')
plt.show()