chore(i18n): sync translations with latest source changes (chunk 1/1, 12 changes)

update-translations
localizeflow[bot] 2 weeks ago
parent 35dbfd7b5e
commit 397f5bf31c

@ -36,8 +36,8 @@
"language_code": "id"
},
"1-Introduction/4-techniques-of-ML/README.md": {
"original_hash": "9d91f3af3758fdd4569fb410575995ef",
"translation_date": "2025-09-05T19:36:18+00:00",
"original_hash": "84b1715a6be62ef1697351dcc5d7b567",
"translation_date": "2026-04-26T19:43:02+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "id"
},
@ -90,8 +90,8 @@
"language_code": "id"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T17:39:48+00:00",
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:42:37+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "id"
},
@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "id"
},
"2-Regression/3-Linear/solution/notebook.ipynb": {
"original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
"translation_date": "2026-04-26T19:40:57+00:00",
"source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
"language_code": "id"
},
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-05T18:47:51+00:00",

@ -1,11 +1,11 @@
# Teknik Pembelajaran Mesin
Proses membangun, menggunakan, dan memelihara model pembelajaran mesin serta data yang digunakan sangat berbeda dari banyak alur kerja pengembangan lainnya. Dalam pelajaran ini, kita akan mengungkap proses tersebut dan merangkum teknik utama yang perlu Anda ketahui. Anda akan:
Proses membangun, menggunakan, dan memelihara model pembelajaran mesin serta data yang mereka gunakan adalah proses yang sangat berbeda dari banyak alur kerja pengembangan lainnya. Dalam pelajaran ini, kita akan mengungkap prosesnya, dan menguraikan teknik utama yang perlu Anda ketahui. Anda akan:
- Memahami proses yang mendasari pembelajaran mesin pada tingkat tinggi.
- Mengeksplorasi konsep dasar seperti 'model', 'prediksi', dan 'data pelatihan'.
- Menjelajahi konsep dasar seperti 'model', 'prediksi', dan 'data pelatihan'.
## [Kuis sebelum pelajaran](https://ff-quizzes.netlify.app/en/ml/)
## [Kuis pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
[![ML untuk pemula - Teknik Pembelajaran Mesin](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML untuk pemula - Teknik Pembelajaran Mesin")
@ -13,105 +13,105 @@ Proses membangun, menggunakan, dan memelihara model pembelajaran mesin serta dat
## Pendahuluan
Secara umum, seni menciptakan proses pembelajaran mesin (ML) terdiri dari beberapa langkah:
Pada tingkat tinggi, keterampilan membuat proses pembelajaran mesin (ML) terdiri dari beberapa langkah:
1. **Tentukan pertanyaan**. Sebagian besar proses ML dimulai dengan mengajukan pertanyaan yang tidak dapat dijawab oleh program bersyarat sederhana atau mesin berbasis aturan. Pertanyaan ini sering kali berkisar pada prediksi berdasarkan kumpulan data.
2. **Kumpulkan dan siapkan data**. Untuk dapat menjawab pertanyaan Anda, Anda memerlukan data. Kualitas dan, terkadang, kuantitas data Anda akan menentukan seberapa baik Anda dapat menjawab pertanyaan awal. Memvisualisasikan data adalah aspek penting dari fase ini. Fase ini juga mencakup pembagian data menjadi kelompok pelatihan dan pengujian untuk membangun model.
3. **Pilih metode pelatihan**. Bergantung pada pertanyaan Anda dan sifat data Anda, Anda perlu memilih cara melatih model agar dapat mencerminkan data Anda dengan baik dan membuat prediksi yang akurat. Bagian dari proses ML ini membutuhkan keahlian khusus dan, sering kali, sejumlah besar eksperimen.
4. **Latih model**. Dengan menggunakan data pelatihan Anda, Anda akan menggunakan berbagai algoritma untuk melatih model agar mengenali pola dalam data. Model mungkin memanfaatkan bobot internal yang dapat disesuaikan untuk memprioritaskan bagian tertentu dari data dibandingkan yang lain guna membangun model yang lebih baik.
5. **Evaluasi model**. Anda menggunakan data yang belum pernah dilihat sebelumnya (data pengujian Anda) dari kumpulan yang dikumpulkan untuk melihat bagaimana kinerja model.
6. **Penyetelan parameter**. Berdasarkan kinerja model Anda, Anda dapat mengulangi proses menggunakan parameter atau variabel yang berbeda yang mengontrol perilaku algoritma yang digunakan untuk melatih model.
1. **Tentukan pertanyaannya**. Sebagian besar proses ML dimulai dengan mengajukan pertanyaan yang tidak dapat dijawab oleh program kondisional sederhana atau mesin berbasis aturan. Pertanyaan-pertanyaan ini sering kali berkisar pada prediksi berdasarkan kumpulan data.
2. **Kumpulkan dan persiapkan data**. Untuk dapat menjawab pertanyaan Anda, Anda membutuhkan data. Kualitas dan, terkadang, kuantitas data Anda akan menentukan seberapa baik Anda dapat menjawab pertanyaan awal Anda. Visualisasi data adalah aspek penting dalam fase ini. Fase ini juga mencakup pembagian data menjadi kelompok pelatihan dan pengujian untuk membangun model.
3. **Pilih metode pelatihan**. Tergantung pada pertanyaan Anda dan sifat data Anda, Anda perlu memilih bagaimana Anda ingin melatih model agar paling merefleksikan data Anda dan membuat prediksi yang akurat terhadapnya. Ini adalah bagian dari proses ML Anda yang membutuhkan keahlian khusus dan, sering kali, sejumlah besar eksperimen.
4. **Latih model**. Dengan menggunakan data pelatihan Anda, Anda akan menggunakan berbagai algoritma untuk melatih model agar mengenali pola dalam data. Model mungkin memanfaatkan bobot internal yang dapat disesuaikan untuk memprioritaskan bagian tertentu dari data dibandingkan bagian lainnya guna membangun model yang lebih baik.
5. **Evaluasi model**. Anda menggunakan data yang belum pernah dilihat sebelumnya (data pengujian Anda) dari kumpulan data yang dikumpulkan untuk melihat bagaimana kinerja model.
6. **Penyetelan parameter**. Berdasarkan kinerja model Anda, Anda dapat mengulangi proses dengan menggunakan parameter berbeda, atau variabel, yang mengontrol perilaku algoritma yang digunakan untuk melatih model.
7. **Prediksi**. Gunakan input baru untuk menguji akurasi model Anda.
## Pertanyaan yang harus diajukan
## Pertanyaan apa yang harus diajukan
Komputer sangat mahir dalam menemukan pola tersembunyi dalam data. Kemampuan ini sangat membantu bagi peneliti yang memiliki pertanyaan tentang suatu domain tertentu yang tidak dapat dengan mudah dijawab dengan membuat mesin berbasis aturan bersyarat. Dalam tugas aktuaria, misalnya, seorang ilmuwan data mungkin dapat membangun aturan buatan seputar tingkat kematian perokok vs non-perokok.
Komputer sangat terampil dalam menemukan pola tersembunyi dalam data. Manfaat ini sangat membantu para peneliti yang memiliki pertanyaan tentang domain tertentu yang tidak dapat dengan mudah dijawab dengan membuat mesin aturan berbasis kondisi. Misalnya, dalam tugas aktuaria, seorang ilmuwan data mungkin dapat membuat aturan buatan tangan terkait kematian perokok vs bukan perokok.
Namun, ketika banyak variabel lain dimasukkan ke dalam persamaan, model ML mungkin lebih efisien untuk memprediksi tingkat kematian di masa depan berdasarkan riwayat kesehatan sebelumnya. Contoh yang lebih ceria mungkin adalah membuat prediksi cuaca untuk bulan April di lokasi tertentu berdasarkan data yang mencakup garis lintang, garis bujur, perubahan iklim, kedekatan dengan laut, pola aliran jet, dan lainnya.
Namun, saat banyak variabel lain dimasukkan ke dalam persamaan, model ML mungkin terbukti lebih efisien untuk memprediksi tingkat kematian di masa depan berdasarkan riwayat kesehatan masa lalu. Contoh yang lebih menyenangkan bisa berupa membuat prediksi cuaca untuk bulan April di suatu lokasi berdasarkan data yang mencakup lintang, bujur, perubahan iklim, kedekatan dengan laut, pola aliran jet, dan lainnya.
✅ [Slide presentasi ini](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) tentang model cuaca menawarkan perspektif historis tentang penggunaan ML dalam analisis cuaca.
✅ [Slide deck ini](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) tentang model cuaca menawarkan perspektif historis penggunaan ML dalam analisis cuaca.
## Tugas sebelum membangun
Sebelum mulai membangun model Anda, ada beberapa tugas yang perlu Anda selesaikan. Untuk menguji pertanyaan Anda dan membentuk hipotesis berdasarkan prediksi model, Anda perlu mengidentifikasi dan mengonfigurasi beberapa elemen.
Sebelum mulai membangun model Anda, ada beberapa tugas yang harus diselesaikan. Untuk menguji pertanyaan Anda dan membentuk hipotesis berdasarkan prediksi model, Anda perlu mengidentifikasi dan mengonfigurasi beberapa elemen.
### Data
Untuk dapat menjawab pertanyaan Anda dengan tingkat kepastian apa pun, Anda memerlukan sejumlah data yang cukup dan jenis data yang tepat. Ada dua hal yang perlu Anda lakukan pada tahap ini:
Untuk dapat menjawab pertanyaan Anda dengan kepastian tertentu, Anda perlu sejumlah data yang cukup dan tipe yang tepat. Ada dua hal yang perlu Anda lakukan pada tahap ini:
- **Kumpulkan data**. Dengan mengingat pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data Anda dengan hati-hati. Perhatikan sumber data ini, bias bawaan yang mungkin dimilikinya, dan dokumentasikan asalnya.
- **Siapkan data**. Ada beberapa langkah dalam proses persiapan data. Anda mungkin perlu menggabungkan data dan menormalkannya jika berasal dari berbagai sumber. Anda dapat meningkatkan kualitas dan kuantitas data melalui berbagai metode seperti mengonversi string menjadi angka (seperti yang kita lakukan dalam [Clustering](../../5-Clustering/1-Visualize/README.md)). Anda juga dapat menghasilkan data baru berdasarkan data asli (seperti yang kita lakukan dalam [Classification](../../4-Classification/1-Introduction/README.md)). Anda dapat membersihkan dan mengedit data (seperti yang akan kita lakukan sebelum pelajaran [Web App](../../3-Web-App/README.md)). Akhirnya, Anda mungkin juga perlu mengacak dan mengacaknya, tergantung pada teknik pelatihan Anda.
- **Kumpulkan data**. Dengan memperhatikan pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data Anda dengan hati-hati. Sadari sumber data ini, bias bawaan yang mungkin ada, dan dokumentasikan asal-usulnya.
- **Persiapkan data**. Ada beberapa langkah dalam proses persiapan data. Anda mungkin perlu menggabungkan data dan menormalkannya jika berasal dari sumber yang beragam. Anda dapat meningkatkan kualitas dan kuantitas data melalui berbagai metode seperti mengonversi string menjadi angka (seperti yang kita lakukan di [Clustering](../../5-Clustering/1-Visualize/README.md)). Anda juga dapat menghasilkan data baru berdasarkan data asli (seperti yang kita lakukan di [Classification](../../4-Classification/1-Introduction/README.md)). Anda dapat membersihkan dan mengedit data (seperti yang akan kita lakukan sebelum pelajaran [Web App](../../3-Web-App/README.md)). Akhirnya, Anda mungkin juga perlu mengacak dan mengocoknya, tergantung pada teknik pelatihan Anda.
✅ Setelah mengumpulkan dan memproses data Anda, luangkan waktu untuk melihat apakah bentuknya memungkinkan Anda menjawab pertanyaan yang dimaksud. Mungkin saja data tidak akan bekerja dengan baik dalam tugas yang diberikan, seperti yang kita temukan dalam pelajaran [Clustering](../../5-Clustering/1-Visualize/README.md)!
✅ Setelah mengumpulkan dan memproses data, luangkan waktu untuk melihat apakah bentuk data tersebut memungkinkan Anda menjawab pertanyaan yang dimaksud. Bisa jadi data tersebut tidak berkinerja baik dalam tugas yang diberikan, seperti yang kita temui dalam pelajaran [Clustering](../../5-Clustering/1-Visualize/README.md)!
### Fitur dan Target
[Fitur](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) adalah properti yang dapat diukur dari data Anda. Dalam banyak kumpulan data, fitur diekspresikan sebagai judul kolom seperti 'tanggal', 'ukuran', atau 'warna'. Variabel fitur Anda, biasanya direpresentasikan sebagai `X` dalam kode, mewakili variabel input yang akan digunakan untuk melatih model.
[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) adalah properti yang dapat diukur dari data Anda. Dalam banyak dataset, ini diekspresikan sebagai judul kolom seperti 'tanggal', 'ukuran', atau 'warna'. Variabel fitur Anda, biasanya direpresentasikan sebagai `X` dalam kode, mewakili variabel input yang akan digunakan untuk melatih model.
Target adalah hal yang Anda coba prediksi. Target, biasanya direpresentasikan sebagai `y` dalam kode, mewakili jawaban atas pertanyaan yang Anda coba ajukan dari data Anda: pada bulan Desember, **warna** labu mana yang akan paling murah? Di San Francisco, lingkungan mana yang akan memiliki **harga** real estat terbaik? Kadang-kadang target juga disebut sebagai atribut label.
Target adalah hal yang Anda coba prediksi. Target, biasanya direpresentasikan sebagai `y` dalam kode, mewakili jawaban atas pertanyaan yang Anda ajukan terhadap data Anda: di bulan Desember, labu dengan **warna** apa yang akan termurah? di San Francisco, lingkungan mana yang memiliki **harga** real estate terbaik? Kadang-kadang target juga disebut atribut label.
### Memilih variabel fitur Anda
🎓 **Pemilihan Fitur dan Ekstraksi Fitur** Bagaimana Anda tahu variabel mana yang harus dipilih saat membangun model? Anda mungkin akan melalui proses pemilihan fitur atau ekstraksi fitur untuk memilih variabel yang tepat untuk model yang paling berkinerja. Namun, keduanya tidak sama: "Ekstraksi fitur menciptakan fitur baru dari fungsi fitur asli, sedangkan pemilihan fitur mengembalikan subset dari fitur tersebut." ([sumber](https://wikipedia.org/wiki/Feature_selection))
🎓 **Seleksi Fitur dan Ekstraksi Fitur** Bagaimana Anda tahu variabel mana yang dipilih saat membangun model? Anda mungkin akan melalui proses seleksi fitur atau ekstraksi fitur untuk memilih variabel yang tepat agar model paling optimal. Namun, keduanya tidak sama: "Ekstraksi fitur membuat fitur baru dari fungsi fitur asli, sedangkan seleksi fitur mengembalikan subset dari fitur tersebut." ([sumber](https://wikipedia.org/wiki/Feature_selection))
### Visualisasikan data Anda
Aspek penting dari alat ilmuwan data adalah kemampuan untuk memvisualisasikan data menggunakan beberapa pustaka yang sangat baik seperti Seaborn atau MatPlotLib. Mewakili data Anda secara visual mungkin memungkinkan Anda menemukan korelasi tersembunyi yang dapat Anda manfaatkan. Visualisasi Anda juga dapat membantu Anda menemukan bias atau data yang tidak seimbang (seperti yang kita temukan dalam [Classification](../../4-Classification/2-Classifiers-1/README.md)).
Aspek penting dari toolkit ilmuwan data adalah kemampuan untuk memvisualisasikan data menggunakan beberapa perpustakaan hebat seperti Seaborn atau MatPlotLib. Mewakili data Anda secara visual dapat memungkinkan Anda menemukan korelasi tersembunyi yang dapat Anda manfaatkan. Visualisasi Anda juga bisa membantu mengungkap bias atau data yang tidak seimbang (seperti yang kita temukan dalam [Classification](../../4-Classification/2-Classifiers-1/README.md)).
### Pisahkan dataset Anda
### Pecah dataset Anda
Sebelum pelatihan, Anda perlu membagi dataset Anda menjadi dua atau lebih bagian dengan ukuran yang tidak sama yang tetap mewakili data dengan baik.
Sebelum pelatihan, Anda perlu membagi dataset menjadi dua bagian atau lebih yang ukurannya tidak sama namun tetap mewakili data dengan baik.
- **Pelatihan**. Bagian dataset ini digunakan untuk melatih model Anda. Set ini merupakan mayoritas dari dataset asli.
- **Pengujian**. Dataset pengujian adalah kelompok data independen, sering kali dikumpulkan dari data asli, yang Anda gunakan untuk mengonfirmasi kinerja model yang dibangun.
- **Validasi**. Set validasi adalah kelompok contoh independen yang lebih kecil yang Anda gunakan untuk menyetel hiperparameter atau arsitektur model untuk meningkatkan model. Bergantung pada ukuran data Anda dan pertanyaan yang Anda ajukan, Anda mungkin tidak perlu membangun set ketiga ini (seperti yang kita catat dalam [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)).
- **Pengujian**. Dataset pengujian adalah kelompok data independen, sering diambil dari data asli, yang Anda gunakan untuk mengonfirmasi kinerja model yang dibangun.
- **Validasi**. Set validasi adalah kelompok contoh independen yang lebih kecil yang Anda gunakan untuk menyetel hiperparameter model, atau arsitektur, guna meningkatkan model. Tergantung ukuran data dan pertanyaan Anda, Anda mungkin tidak perlu membuat set ketiga ini (seperti yang kami catat di [Peramalan Deret Waktu](../../7-TimeSeries/1-Introduction/README.md)).
## Membangun model
Dengan menggunakan data pelatihan Anda, tujuan Anda adalah membangun model, atau representasi statistik dari data Anda, menggunakan berbagai algoritma untuk **melatih** model tersebut. Melatih model memaparkannya pada data dan memungkinkan model membuat asumsi tentang pola yang ditemukan, memvalidasi, dan menerima atau menolak.
Menggunakan data pelatihan Anda, tujuan Anda adalah membangun model, atau representasi statistik dari data Anda, menggunakan berbagai algoritma untuk **melatih**nya. Melatih model mengeksposnya pada data dan memungkinkan model membuat asumsi tentang pola yang disadari, divalidasi, kemudian diterima atau ditolak.
### Tentukan metode pelatihan
Bergantung pada pertanyaan Anda dan sifat data Anda, Anda akan memilih metode untuk melatihnya. Dengan menjelajahi [dokumentasi Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - yang kita gunakan dalam kursus ini - Anda dapat mengeksplorasi banyak cara untuk melatih model. Bergantung pada pengalaman Anda, Anda mungkin harus mencoba beberapa metode berbeda untuk membangun model terbaik. Anda kemungkinan akan melalui proses di mana ilmuwan data mengevaluasi kinerja model dengan memberinya data yang belum pernah dilihat sebelumnya, memeriksa akurasi, bias, dan masalah kualitas lainnya, serta memilih metode pelatihan yang paling sesuai untuk tugas yang diberikan.
Tergantung pada pertanyaan dan sifat data Anda, Anda akan memilih metode untuk melatihnya. Dengan mempelajari dokumentasi [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - yang kita gunakan dalam kursus ini - Anda dapat menjelajahi banyak cara melatih model. Tergantung pengalaman Anda, Anda mungkin harus mencoba beberapa metode berbeda untuk membangun model terbaik. Anda kemungkinan akan melewati proses di mana ilmuwan data mengevaluasi kinerja model dengan memberinya data yang belum pernah dilihat, memeriksa akurasi, bias, dan masalah penurunan kualitas lainnya, serta memilih metode pelatihan yang paling tepat untuk tugas tersebut.
### Latih model
Dengan data pelatihan Anda, Anda siap untuk 'memasangkannya' untuk membuat model. Anda akan melihat bahwa dalam banyak pustaka ML, Anda akan menemukan kode 'model.fit' - pada saat inilah Anda mengirimkan variabel fitur Anda sebagai array nilai (biasanya 'X') dan variabel target (biasanya 'y').
Dengan data pelatihan Anda, Anda siap untuk 'fit' guna membuat model. Anda akan melihat bahwa dalam banyak perpustakaan ML terdapat kode 'model.fit' - saat itulah Anda mengirimkan variabel fitur sebagai array nilai (biasanya 'X') dan variabel target (biasanya 'y').
### Evaluasi model
Setelah proses pelatihan selesai (dapat memakan waktu banyak iterasi, atau 'epoch', untuk melatih model besar), Anda akan dapat mengevaluasi kualitas model dengan menggunakan data pengujian untuk mengukur kinerjanya. Data ini adalah subset dari data asli yang belum pernah dianalisis oleh model sebelumnya. Anda dapat mencetak tabel metrik tentang kualitas model Anda.
Setelah proses pelatihan selesai (bisa memakan banyak iterasi, atau 'epoch', untuk melatih model besar), Anda bisa mengevaluasi kualitas model dengan menggunakan data pengujian untuk mengukur kinerjanya. Data ini adalah subset dari data asli yang belum pernah dianalisis sebelumnya oleh model. Anda dapat mencetak tabel metrik tentang kualitas model Anda.
🎓 **Pemasangan model**
🎓 **Pemodelan fitting**
Dalam konteks pembelajaran mesin, pemasangan model mengacu pada akurasi fungsi dasar model saat mencoba menganalisis data yang tidak dikenalnya.
Dalam konteks pembelajaran mesin, pemodelan fitting mengacu pada akurasi fungsi dasar model saat mencoba menganalisis data yang belum dikenalinya.
🎓 **Underfitting** dan **overfitting** adalah masalah umum yang menurunkan kualitas model, karena model tidak cocok dengan baik atau terlalu cocok. Hal ini menyebabkan model membuat prediksi yang terlalu selaras atau terlalu longgar dengan data pelatihannya. Model yang terlalu cocok memprediksi data pelatihan terlalu baik karena telah mempelajari detail dan kebisingan data terlalu baik. Model yang kurang cocok tidak akurat karena tidak dapat menganalisis data pelatihannya maupun data yang belum pernah 'dilihat' dengan akurat.
🎓 **Underfitting** dan **overfitting** adalah masalah umum yang menurunkan kualitas model, karena model fittingnya terlalu buruk atau terlalu baik. Ini menyebabkan model membuat prediksi yang terlalu dekat atau terlalu longgar dengan data pelatihannya. Model overfit memprediksi data pelatihan terlalu baik karena sudah mempelajari detail dan noise data dengan sangat baik. Model underfit tidak akurat karena tidak dapat menganalisis data pelatihan maupun data yang belum pernah 'dilihat' dengan tepat.
![model overfitting](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png)
![model overfitting](../../../../translated_images/id/overfitting.1c132d92bfd93cb6.webp)
> Infografis oleh [Jen Looper](https://twitter.com/jenlooper)
## Penyetelan parameter
Setelah pelatihan awal Anda selesai, amati kualitas model dan pertimbangkan untuk meningkatkannya dengan menyetel 'hiperparameter'-nya. Baca lebih lanjut tentang proses ini [dalam dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
Setelah pelatihan awal selesai, amati kualitas model dan pertimbangkan meningkatkan dengan mengubah 'hiperparameter'. Baca lebih lanjut tentang proses ini [di dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
## Prediksi
Ini adalah momen di mana Anda dapat menggunakan data yang benar-benar baru untuk menguji akurasi model Anda. Dalam pengaturan ML 'terapan', di mana Anda membangun aset web untuk menggunakan model dalam produksi, proses ini mungkin melibatkan pengumpulan input pengguna (misalnya, menekan tombol) untuk menetapkan variabel dan mengirimkannya ke model untuk inferensi atau evaluasi.
Ini adalah momen ketika Anda dapat menggunakan data baru sepenuhnya untuk menguji akurasi model Anda. Dalam pengaturan ML 'terapan', di mana Anda membangun aset web untuk menggunakan model dalam produksi, proses ini mungkin melibatkan pengambilan input pengguna (misalnya menekan tombol) untuk mengatur variabel dan mengirimkannya ke model untuk inferensi, atau evaluasi.
Dalam pelajaran ini, Anda akan menemukan cara menggunakan langkah-langkah ini untuk mempersiapkan, membangun, menguji, mengevaluasi, dan memprediksi - semua gerakan seorang ilmuwan data dan lebih banyak lagi, saat Anda maju dalam perjalanan Anda untuk menjadi seorang insinyur ML 'full stack'.
Dalam pelajaran-pelajaran ini, Anda akan menemukan cara menggunakan langkah-langkah ini untuk menyiapkan, membangun, menguji, mengevaluasi, dan memprediksi — semua gerakan seorang ilmuwan data dan lebih banyak lagi, seiring kemajuan Anda menjadi insinyur ML 'full stack'.
---
## 🚀Tantangan
Buat diagram alur yang mencerminkan langkah-langkah seorang praktisi ML. Di mana Anda melihat diri Anda saat ini dalam proses tersebut? Di mana Anda memprediksi akan menemukan kesulitan? Apa yang tampaknya mudah bagi Anda?
Gambarlah diagram alir yang mencerminkan langkah-langkah seorang praktisi ML. Di mana Anda melihat diri Anda sekarang dalam proses ini? Di mana Anda memprediksi akan menghadapi kesulitan? Apa yang terasa mudah bagi Anda?
## [Kuis setelah pelajaran](https://ff-quizzes.netlify.app/en/ml/)
## [Kuis pasca-ceramah](https://ff-quizzes.netlify.app/en/ml/)
## Tinjauan & Studi Mandiri
## Ulasan & Studi Mandiri
Cari wawancara online dengan ilmuwan data yang membahas pekerjaan harian mereka. Berikut adalah [salah satunya](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
Cari wawancara online dengan ilmuwan data yang membahas pekerjaan sehari-hari mereka. Berikut [salah satunya](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
## Tugas
@ -119,5 +119,7 @@ Cari wawancara online dengan ilmuwan data yang membahas pekerjaan harian mereka.
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Penafian**:
Dokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.
Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sah. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau kesalahan tafsir yang timbul dari penggunaan terjemahan ini.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,138 +1,137 @@
# Bangun model regresi menggunakan Scikit-learn: regresi dengan empat cara
# Membangun model regresi menggunakan Scikit-learn: regresi empat cara
## Catatan Pemula
Regresi linier digunakan ketika kita ingin memprediksi **nilai numerik** (misalnya, harga rumah, suhu, atau penjualan).
Regresi linier digunakan ketika kita ingin memprediksi **nilai numerik** (misalnya, harga rumah, suhu, atau penjualan).
Ini bekerja dengan menemukan garis lurus yang paling mewakili hubungan antara fitur input dan output.
Dalam pelajaran ini, kita fokus pada pemahaman konsep sebelum mengeksplorasi teknik regresi yang lebih maju.
![Linear vs polynomial regression infographic](../../../../translated_images/id/linear-polynomial.5523c7cb6576ccab.webp)
Dalam pelajaran ini, kita fokus pada memahami konsep sebelum menjelajahi teknik regresi yang lebih lanjut.
![Linear vs polynomial regression infographic](../../../../translated_images/id/linear-polynomial.5523c7cb6576ccab.webp)
> Infografis oleh [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Kuis Pra-lecture](https://ff-quizzes.netlify.app/en/ml/)
## [Kuis pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
> ### [Pelajaran ini tersedia dalam R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Pendahuluan
Sejauh ini Anda telah mengeksplorasi apa itu regresi dengan data contoh yang dikumpulkan dari dataset harga labu yang akan kita gunakan sepanjang pelajaran ini. Anda juga telah memvisualisasikannya menggunakan Matplotlib.
Sejauh ini Anda telah mengeksplorasi apa itu regresi dengan data contoh yang diambil dari dataset harga labu yang akan kita gunakan sepanjang pelajaran ini. Anda juga telah memvisualisasikannya menggunakan Matplotlib.
Sekarang Anda siap untuk menggali lebih dalam regresi untuk ML. Sementara visualisasi memungkinkan Anda memahami data, kekuatan sesungguhnya dari Pembelajaran Mesin datang dari _melatih model_. Model dilatih dengan data historis untuk secara otomatis menangkap ketergantungan data, dan memungkinkan Anda memprediksi hasil untuk data baru, yang belum pernah dilihat model sebelumnya.
Sekarang Anda siap untuk menyelami lebih dalam regresi untuk ML. Sementara visualisasi memungkinkan Anda memahami data, kekuatan nyata dari Pembelajaran Mesin berasal dari _pelatihan model_. Model dilatih pada data historis untuk secara otomatis menangkap ketergantungan data, dan memungkinkan Anda memprediksi hasil untuk data baru yang belum pernah dilihat model sebelumnya.
Dalam pelajaran ini, Anda akan belajar lebih banyak tentang dua jenis regresi: _regresi linier dasar_ dan _regresi polinomial_, bersama dengan beberapa matematika dasar di balik teknik ini. Model-model itu akan memungkinkan kita memprediksi harga labu tergantung pada data input yang berbeda.
Dalam pelajaran ini, Anda akan belajar lebih banyak tentang dua jenis regresi: _regresi linier dasar_ dan _regresi polinomial_, bersama dengan beberapa matematika yang mendasari teknik-teknik ini. Model-model tersebut akan memungkinkan kita memprediksi harga labu tergantung pada data input yang berbeda.
[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Klik gambar di atas untuk video singkat tentang regresi linier.
> 🎥 Klik gambar di atas untuk video ringkas tentang regresi linier.
> Sepanjang kurikulum ini, kami mengasumsikan pengetahuan matematika yang minimal, dan berusaha agar dapat diakses oleh siswa dari bidang lain, jadi perhatikan catatan, panggilan 🧮, diagram, dan alat pembelajaran lainnya untuk membantu pemahaman.
> Sepanjang kurikulum ini, kami mengasumsikan pengetahuan matematika minimal, dan berupaya membuatnya dapat diakses bagi siswa yang berasal dari bidang lain, jadi perhatikan catatan, 🧮 penjelasan, diagram, dan alat pembelajaran lain untuk membantu pemahaman.
### Prasyarat
Anda seharusnya sudah familiar dengan struktur data labu yang sedang kita periksa. Anda dapat menemukannya sudah dimuat dan dibersihkan dalam berkas _notebook.ipynb_ pelajaran ini. Dalam berkas tersebut, harga labu ditampilkan per bushel dalam frame data baru. Pastikan Anda dapat menjalankan notebook ini di kernel Visual Studio Code.
Anda seharusnya sudah familiar dengan struktur data labu yang sedang kita periksa. Anda dapat menemukannya telah dimuat sebelumnya dan sudah dibersihkan dalam file _notebook.ipynb_ pelajaran ini. Dalam file tersebut, harga labu ditampilkan per bushel dalam sebuah data frame baru. Pastikan Anda dapat menjalankan notebook ini di kernel Visual Studio Code.
### Persiapan
Sebagai pengingat, Anda memuat data ini agar dapat mengajukan pertanyaan tentangnya.
Sebagai pengingat, Anda sedang memuat data ini untuk mengajukan pertanyaan terhadapnya.
- Kapan waktu terbaik membeli labu?
- Berapa harga yang bisa saya harapkan untuk satu kotak labu mini?
- Haruskah saya membelinya dalam keranjang setengah bushel atau per kotak 1 1/9 bushel?
- Kapan waktu terbaik membeli labu?
- Harga berapa yang bisa saya harapkan untuk satu kotak labu mini?
- Haruskah saya membelinya dalam keranjang setengah bushel atau dalam kotak 1 1/9 bushel?
Mari terus gali data ini.
Mari kita terus menggali data ini.
Dalam pelajaran sebelumnya, Anda membuat data frame Pandas dan mengisinya dengan sebagian data asli, menstandarkan harga berdasarkan bushel. Namun dengan cara itu, Anda hanya mengumpulkan sekitar 400 datapoint dan hanya untuk bulan-bulan musim gugur.
Dalam pelajaran sebelumnya, Anda membuat sebuah Pandas data frame dan mengisinya dengan sebagian dataset asli, menstandardisasi harga berdasarkan bushel. Namun dengan melakukan itu, Anda hanya bisa mengumpulkan sekitar 400 titik data dan hanya untuk bulan-bulan musim gugur.
Lihatlah data yang sudah kami muat dalam notebook pendamping pelajaran ini. Data dimuat dan scatterplot awal dibuat untuk menunjukkan data bulan. Mungkin kita bisa mendapatkan detail lebih tentang sifat data ini dengan membersihkannya lebih lanjut.
Lihat data yang telah kami muat sebelumnya dalam notebook pelajaran ini. Data tersebut telah dimuat dan sebuah scatterplot awal dibuat untuk menunjukkan data bulan. Mungkin kita bisa mendapatkan sedikit lebih banyak detail tentang karakter data dengan membersihkannya lebih lanjut.
## Garis regresi linier
Seperti yang Anda pelajari di Pelajaran 1, tujuan latihan regresi linier adalah untuk dapat membuat garis yang:
Seperti yang Anda pelajari di Pelajaran 1, tujuan latihan regresi linier adalah untuk dapat memplot sebuah garis untuk:
- **Menunjukkan hubungan variabel**. Menunjukkan hubungan antar variabel
- **Membuat prediksi**. Membuat prediksi yang akurat tentang di mana titik data baru akan jatuh terkait garis tersebut.
- **Menunjukkan hubungan variabel**. Menunjukkan hubungan antar variabel
- **Membuat prediksi**. Membuat prediksi akurat di mana titik data baru akan jatuh terkait garis tersebut.
Biasanya, **Least-Squares Regression** digunakan untuk menggambar garis jenis ini. Istilah "Least-Squares" mengacu pada proses meminimalkan total kesalahan dalam model kita. Untuk setiap titik data, kita mengukur jarak vertikal (disebut residual) antara titik aktual dan garis regresi kita.
Biasanya **Regresi Kuadrat Terkecil** menggambar garis seperti ini. Istilah "Kuadrat Terkecil" merujuk pada proses meminimalkan total error pada model kita. Untuk setiap titik data, kita mengukur jarak vertikal (disebut residual) antara titik sesungguhnya dan garis regresi kita.
Jarak-jarak ini kita kuadratkan karena dua alasan utama:
Jarak ini kita kuadratkan karena dua alasan utama:
1. **Magnitudo lebih penting dari Arah:** Kita ingin menganggap kesalahan -5 sama dengan kesalahan +5. Mengkuadratkan membuat semua nilai menjadi positif.
1. **Magnitudo bukan Arah:** Kita ingin memperlakukan error -5 sama dengan error +5. Dengan mengkuadratkan, semua nilai menjadi positif.
2. **Memberi Bobot pada Outlier:** Kuadrat memberi bobot lebih besar pada kesalahan yang lebih besar, memaksa garis untuk tetap dekat dengan titik yang jauh.
2. **Menghukum Outlier:** Mengkuadratkan memberi bobot lebih pada error yang lebih besar, memaksa garis lebih dekat ke titik yang jauh.
Kemudian kita jumlahkan semua nilai kuadrat ini. Tujuan kita adalah menemukan garis spesifik di mana jumlah akhir ini paling kecil (nilai terkecil mungkin)—maka namanya "Least-Squares".
Kita kemudian menjumlahkan semua nilai kuadrat ini. Tujuan kita adalah menemukan garis spesifik di mana jumlah akhir ini paling kecil (nilai terkecil mungkin)—oleh karena itu nama "Kuadrat Terkecil".
> **🧮 Tunjukkan matematikanya**
>
> Garis ini, disebut _line of best fit_ dapat dinyatakan dengan [persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> Garis ini, yang disebut _garis terbaik_ dapat dinyatakan oleh [persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` adalah 'variabel penjelas'. `Y` adalah 'variabel dependen'. Kemiringan garis adalah `b` dan `a` adalah intercept-y, yang merujuk pada nilai `Y` ketika `X = 0`.
>
>![hitung kemiringan](../../../../translated_images/id/slope.f3c9d5910ddbfcf9.webp)
>
> Pertama, hitung kemiringan `b`. Infografis oleh [Jen Looper](https://twitter.com/jenlooper)
>
> Dengan kata lain, dan mengacu pada pertanyaan asli data labu kita: "memprediksi harga labu per bushel berdasarkan bulan", `X` akan merujuk pada harga dan `Y` merujuk pada bulan penjualan.
>
>![lengkapi persamaan](../../../../translated_images/id/calculation.a209813050a1ddb1.webp)
>
> Hitung nilai Y. Jika Anda membayar sekitar $4, pasti bulan April! Infografis oleh [Jen Looper](https://twitter.com/jenlooper)
>
> Matematika yang menghitung garis harus menunjukkan kemiringan garis, yang juga bergantung pada intercept, atau di mana `Y` berada ketika `X = 0`.
>
> Anda dapat mengamati metode perhitungan nilai-nilai ini di situs [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Juga kunjungi [Kalkulator Least-squares ini](https://www.mathsisfun.com/data/least-squares-calculator.html) untuk melihat bagaimana nilai angka memengaruhi garis.
>
> `X` adalah 'variabel penjelas'. `Y` adalah 'variabel terikat'. Kemiringan garis adalah `b` dan `a` adalah titik potong y, yang menunjukkan nilai `Y` saat `X = 0`.
>
>![hitung kemiringan](../../../../translated_images/id/slope.f3c9d5910ddbfcf9.webp)
>
> Pertama, hitung kemiringan `b`. Infografis oleh [Jen Looper](https://twitter.com/jenlooper)
>
> Dengan kata lain, dan merujuk pada pertanyaan asli data labu kita: "prediksi harga labu per bushel berdasarkan bulan", `X` akan merujuk pada harga dan `Y` akan merujuk pada bulan penjualan.
>
>![selesaikan persamaan](../../../../translated_images/id/calculation.a209813050a1ddb1.webp)
>
> Hitung nilai Y. Jika Anda membayar sekitar $4, pasti April! Infografis oleh [Jen Looper](https://twitter.com/jenlooper)
>
> Matematika yang menghitung garis harus menunjukkan kemiringan garis, yang juga bergantung pada intercept, atau di mana `Y` berada saat `X = 0`.
>
> Anda dapat melihat metode penghitungan nilai ini di situs [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Juga kunjungi [Kalkulator Kuadrat Terkecil ini](https://www.mathsisfun.com/data/least-squares-calculator.html) untuk melihat bagaimana nilai angka mempengaruhi garis.
## Korelasi
Satu istilah lagi yang perlu dipahami adalah **Koefisien Korelasi** antara variabel X dan Y tertentu. Dengan scatterplot, Anda dapat dengan cepat memvisualisasikan koefisien ini. Plot dengan titik data tersebar rapi pada satu garis memiliki korelasi tinggi, tapi plot dengan titik-titik acak di mana-mana antara X dan Y memiliki korelasi rendah.
Satu istilah lagi yang perlu dipahami adalah **Koefisien Korelasi** antara variabel X dan Y tertentu. Dengan menggunakan scatterplot, Anda dapat dengan cepat memvisualisasikan koefisien ini. Plot dengan titik data tersebar dalam garis rapi memiliki korelasi tinggi, tetapi plot dengan titik data tersebar di mana-mana antara X dan Y memiliki korelasi rendah.
Model regresi linier yang baik adalah yang memiliki Koefisien Korelasi tinggi (mendekati 1 daripada 0) menggunakan metode Least-Squares Regression dengan garis regresi.
Model regresi linier yang baik adalah yang memiliki Koefisien Korelasi tinggi (lebih dekat ke 1 daripada 0) menggunakan metode Regresi Kuadrat Terkecil dengan garis regresi.
✅ Jalankan notebook pendamping pelajaran ini dan lihat scatterplot Bulan terhadap Harga. Apakah data yang mengasosiasikan Bulan ke Harga penjualan labu tampak memiliki korelasi tinggi atau rendah menurut interpretasi visual Anda terhadap scatterplot? Apakah berubah jika Anda menggunakan ukuran lebih rinci daripada `Month`, misalnya *hari dalam tahun* (jumlah hari sejak awal tahun)?
✅ Jalankan notebook yang menyertai pelajaran ini dan lihat scatterplot Bulan ke Harga. Apakah data yang menghubungkan Bulan dengan Harga penjualan labu tampak memiliki korelasi tinggi atau rendah, berdasarkan interpretasi visual scatterplot Anda? Apakah berubah jika Anda menggunakan ukuran yang lebih rinci selain `Month`, misalnya *hari dalam tahun* (yakni jumlah hari sejak awal tahun)?
Dalam kode berikut, kita asumsikan data sudah dibersihkan, dan diperoleh data frame bernama `new_pumpkins`, mirip dengan berikut:
Dalam kode berikut, kita akan berasumsi bahwa kita telah membersihkan data dan memperoleh sebuah data frame bernama `new_pumpkins`, mirip dengan yang berikut:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
70 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> Kode pembersihan data tersedia di [`notebook.ipynb`](notebook.ipynb). Kami sudah melakukan langkah pembersihan yang sama seperti pelajaran sebelumnya, dan menghitung kolom `DayOfYear` menggunakan ekspresi berikut:
> Kode untuk membersihkan data tersedia di [`notebook.ipynb`](notebook.ipynb). Kami telah melakukan langkah pembersihan yang sama seperti di pelajaran sebelumnya, dan telah menghitung kolom `DayOfYear` menggunakan ekspresi berikut:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
Sekarang setelah Anda memahami matematika di balik regresi linier, mari buat model Regresi untuk melihat apakah kita bisa memprediksi paket labu mana yang memiliki harga labu terbaik. Seseorang yang membeli labu untuk patch labu liburan mungkin ingin informasi ini agar dapat mengoptimalkan pembelian paket labu untuk patch tersebut.
Sekarang setelah Anda memahami matematika di balik regresi linier, mari kita buat model Regresi untuk melihat apakah kita dapat memprediksi paket labu mana yang akan memiliki harga labu terbaik. Seseorang yang membeli labu untuk patch labu liburan mungkin ingin informasi ini untuk dapat mengoptimalkan pembelian paket labu untuk patch tersebut.
## Mencari Korelasi
[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Klik gambar di atas untuk video singkat tentang korelasi.
> 🎥 Klik gambar di atas untuk video ringkas tentang korelasi.
Dari pelajaran sebelumnya Anda mungkin sudah melihat bahwa rata-rata harga untuk bulan yang berbeda tampak seperti ini:
Dari pelajaran sebelumnya Anda mungkin telah melihat bahwa harga rata-rata untuk bulan-bulan berbeda tampak seperti ini:
<img alt="Average price by month" src="../../../../translated_images/id/barchart.a833ea9194346d76.webp" width="50%"/>
Ini menunjukkan bahwa seharusnya ada korelasi, dan kita dapat mencoba melatih model regresi linier untuk memprediksi hubungan antara `Month` dan `Price`, atau antara `DayOfYear` dan `Price`. Berikut adalah scatter plot yang menunjukkan hubungan yang terakhir:
Ini menunjukkan bahwa seharusnya ada beberapa korelasi, dan kita dapat mencoba melatih model regresi linier untuk memprediksi hubungan antara `Month` dan `Price`, atau antara `DayOfYear` dan `Price`. Berikut adalah scatter plot yang menunjukkan hubungan yang terakhir:
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/id/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
Mari kita lihat apakah ada korelasi menggunakan fungsi `corr`:
Mari lihat apakah ada korelasi menggunakan fungsi `corr`:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
Tampaknya korelasinya cukup kecil, -0.15 berdasarkan `Month` dan -0.17 berdasarkan `DayOfMonth`, tetapi mungkin ada hubungan penting lain. Tampak ada beberapa kluster harga berbeda yang sesuai dengan varietas labu berbeda. Untuk mengonfirmasi hipotesis ini, mari plot setiap kategori labu menggunakan warna berbeda. Dengan melewatkan parameter `ax` pada fungsi plot `scatter` kita bisa membuat semua titik berada di grafik yang sama:
Tampaknya korelasinya cukup kecil, -0.15 berdasarkan `Month` dan -0.17 berdasarkan `DayOfYear`, tapi mungkin ada hubungan penting lain. Tampak ada kelompok harga berbeda yang sesuai dengan varietas labu yang berbeda. Untuk mengonfirmasi hipotesis ini, mari plot setiap kategori labu menggunakan warna berbeda. Dengan melewatkan parameter `ax` ke fungsi plot `scatter` kita dapat plot semua titik di grafik yang sama:
```python
ax=None
@ -141,18 +140,18 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/id/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
Penyelidikan kita menunjukkan bahwa varietas memiliki pengaruh lebih besar pada harga keseluruhan daripada tanggal penjualan sebenarnya. Kita bisa melihat ini dengan grafik batang:
Penyelidikan kita menunjukkan bahwa varietas lebih berpengaruh terhadap harga keseluruhan daripada tanggal penjualan sebenarnya. Kita dapat melihat ini dengan grafik batang:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="Bar graph of price vs variety" src="../../../../translated_images/id/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
Mari kita fokus untuk saat ini hanya pada satu varietas labu, 'pie type', dan lihat pengaruh tanggal pada harga:
Mari kita fokus sejenak hanya pada satu varietas labu, yaitu 'pie type', dan lihat pengaruh tanggal terhadap harga:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
@ -160,22 +159,22 @@ pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/id/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
Jika sekarang kita hitung korelasi antara `Price` dan `DayOfYear` menggunakan fungsi `corr`, kita akan mendapat sekitar `-0.27` - yang berarti melatih model prediktif masuk akal.
Jika sekarang kita hitung korelasi antara `Price` dan `DayOfYear` menggunakan fungsi `corr`, kita akan mendapatkan sesuatu seperti `-0.27` - yang berarti melatih model prediktif masuk akal.
> Sebelum melatih model regresi linier, penting memastikan data kita bersih. Regresi linier tidak bekerja baik dengan nilai hilang, jadi masuk akal untuk menghapus semua sel kosong:
> Sebelum melatih model regresi linier, penting untuk memastikan data kita bersih. Regresi linier tidak bekerja dengan baik dengan nilai yang hilang, jadi masuk akal untuk menghapus semua sel kosong:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Pendekatan lain adalah mengisi nilai kosong dengan nilai rata-rata dari kolom terkait.
Pendekatan lain adalah mengisi nilai kosong tersebut dengan nilai rata-rata dari kolom yang bersangkutan.
## Regresi Linier Sederhana
[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Klik gambar di atas untuk video singkat tentang regresi linier dan polinomial.
> 🎥 Klik gambar di atas untuk video ringkas tentang regresi linier dan polinomial.
Untuk melatih model Regresi Linier kita, kita akan menggunakan perpustakaan **Scikit-learn**.
@ -184,32 +183,32 @@ from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Kita mulai dengan memisahkan nilai input (fitur) dan output yang diharapkan (label) ke dalam array numpy terpisah:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Catatan bahwa kita harus melakukan `reshape` pada data input agar paket Linear Regression memahaminya dengan benar. Regresi Linier mengharapkan array 2D sebagai input, di mana setiap baris array sesuai dengan vektor fitur input. Dalam kasus kita, karena kita hanya punya satu input - kita butuh array dengan bentuk N×1, di mana N adalah ukuran dataset.
Kemudian, kita perlu membagi data menjadi dataset latih dan uji, agar kita dapat memvalidasi model setelah pelatihan:
> Perlu dicatat bahwa kita harus melakukan `reshape` pada data input agar paket Regresi Linier dapat memahaminya dengan benar. Regresi Linier mengharapkan array 2D sebagai input, di mana setiap baris array merupakan vektor fitur input. Dalam kasus kita, karena hanya ada satu input - kita memerlukan array dengan bentuk N&times;1, di mana N adalah ukuran dataset.
Kemudian, kita perlu membagi data menjadi dataset train dan test, agar kita dapat memvalidasi model setelah pelatihan:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Akhirnya, melatih model Regresi Linier sebenarnya hanya memerlukan dua baris kode. Kita definisikan objek `LinearRegression`, dan melatihnya dengan data kita menggunakan metode `fit`:
Terakhir, training model Regresi Linier sebenarnya hanya butuh dua baris kode. Kita definisikan objek `LinearRegression`, dan fit ke data kita menggunakan method `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Objek `LinearRegression` setelah di-`fit` berisi semua koefisien regresi, yang dapat diakses menggunakan properti `.coef_`. Dalam kasus kita, hanya ada satu koefisien, yang seharusnya sekitar `-0.017`. Ini berarti harga tampaknya sedikit turun seiring waktu, tapi tidak terlalu banyak, sekitar 2 sen per hari. Kita juga dapat mengakses titik potong regresi dengan sumbu Y menggunakan `lin_reg.intercept_` - yang akan sekitar `21` dalam kasus kita, menunjukkan harga pada awal tahun.
Objek `LinearRegression` setelah melakukan `fit` mengandung semua koefisien regresi, yang dapat diakses menggunakan properti `.coef_`. Dalam kasus kita, hanya ada satu koefisien, yang seharusnya sekitar `-0.017`. Ini berarti harga tampaknya turun sedikit seiring waktu, tetapi tidak terlalu banyak, sekitar 2 sen per hari. Kita juga dapat mengakses titik potong regresi dengan sumbu Y menggunakan `lin_reg.intercept_` - dalam kasus kita akan sekitar `21`, menunjukkan harga pada awal tahun.
Untuk melihat seberapa akurat model kita, kita dapat memprediksi harga pada dataset uji, kemudian mengukur seberapa dekat prediksi kita dengan nilai yang diharapkan. Ini dapat dilakukan menggunakan metrik root mean square error (RMSE), yaitu akar dari rata-rata semua selisih kuadrat antara nilai yang diharapkan dan nilai yang diprediksi.
Untuk melihat seberapa akurat model kita, kita dapat memprediksi harga pada dataset uji, dan kemudian mengukur seberapa dekat prediksi kita dengan nilai yang diharapkan. Ini dapat dilakukan menggunakan metrik root mean square error (RMSE), yaitu akar dari rata-rata semua selisih kuadrat antara nilai yang diharapkan dan yang diprediksi.
```python
pred = lin_reg.predict(X_test)
@ -218,15 +217,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
Kesalahan kita tampaknya sekitar 2 poin, yaitu sekitar 17%. Tidak terlalu bagus. Indikator lain dari kualitas model adalah **koefisien determinasi**, yang dapat diperoleh seperti ini:
Kesalahan kita tampaknya sekitar 2 poin, yaitu ~17%. Tidak terlalu baik. Indikator lain dari kualitas model adalah **koefisien determinasi**, yang dapat diperoleh seperti ini:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Jika nilainya 0, itu berarti model tidak mempertimbangkan data input, dan bertindak sebagai *prediktor linier terburuk*, yaitu nilai rata-rata dari hasilnya. Nilai 1 berarti kita dapat memprediksi semua output yang diharapkan dengan sempurna. Dalam kasus kita, koefisiennya sekitar 0.06, yang cukup rendah.
Kita juga dapat menggambar data uji bersama dengan garis regresi untuk melihat lebih jelas bagaimana regresi bekerja dalam kasus kita:
Jika nilainya 0, berarti model tidak mempertimbangkan data input, dan berperilaku sebagai *prediktor linear terburuk*, yang hanya nilai rata-rata hasil. Nilai 1 berarti kita dapat memprediksi semua keluaran yang diharapkan dengan sempurna. Dalam kasus kita, koefisiennya sekitar 0.06, yang cukup rendah.
Kita juga dapat memplot data uji bersama dengan garis regresi untuk melihat lebih baik bagaimana regresi bekerja dalam kasus kita:
```python
plt.scatter(X_test,y_test)
@ -237,17 +237,17 @@ plt.plot(X_test,pred)
## Regresi Polinomial
Jenis lain dari Regresi Linear adalah Regresi Polinomial. Kadang-kadang ada hubungan linier antara variabel - semakin besar volume labu, semakin tinggi harganya - tetapi terkadang hubungan ini tidak bisa dipetakan sebagai bidang atau garis lurus.
Jenis lain dari Regresi Linear adalah Regresi Polinomial. Kadang-kadang ada hubungan linear antar variabel - semakin besar volume labu, semakin tinggi harganya - namun terkadang hubungan ini tidak bisa diplot sebagai bidang atau garis lurus.
✅ Berikut [beberapa contoh lagi](https://online.stat.psu.edu/stat501/lesson/9/9.8) dari data yang dapat menggunakan Regresi Polinomial
✅ Berikut adalah [beberapa contoh lagi](https://online.stat.psu.edu/stat501/lesson/9/9.8) data yang dapat menggunakan Regresi Polinomial
Perhatikan lagi hubungan antara Date dan Price. Apakah scatterplot ini harus dianalisis dengan garis lurus? Apakah harga tidak bisa berfluktuasi? Dalam kasus ini, Anda dapat mencoba regresi polinomial.
Perhatikan kembali hubungan antara Tanggal dan Harga. Apakah scatterplot ini harus dianalisis dengan garis lurus? Apakah harga tidak bisa berfluktuasi? Dalam kasus ini, Anda bisa mencoba regresi polinomial.
✅ Polinomial adalah ekspresi matematis yang mungkin terdiri dari satu atau lebih variabel dan koefisien
✅ Polinomial adalah ekspresi matematika yang mungkin terdiri dari satu atau lebih variabel dan koefisien
Regresi polinomial membuat garis melengkung untuk lebih cocok dengan data yang tidak linier. Dalam kasus kita, jika kita memasukkan variabel `DayOfYear` kuadrat ke dalam data input, kita harus dapat memfit data kita dengan kurva parabola, yang akan memiliki titik minimum pada suatu titik dalam tahun.
Regresi polinomial membuat garis melengkung untuk lebih baik memodelkan data non-linear. Dalam kasus kita, jika kita memasukkan variabel `DayOfYear`^2 ke data input, kita seharusnya bisa memodelkan data dengan kurva parabola, yang akan memiliki titik minimum pada titik tertentu dalam setahun.
Scikit-learn menyertakan API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yang berguna untuk menggabungkan berbagai langkah pemrosesan data secara bersama-sama. **Pipeline** adalah rantai dari **estimators**. Dalam kasus kita, kita akan membuat pipeline yang pertama menambahkan fitur polinomial ke model, kemudian melatih regresi:
Scikit-learn menyertakan API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yang berguna untuk menggabungkan beberapa langkah pemrosesan data. Sebuah **pipeline** adalah rantai **estimator**. Dalam kasus kita, kita akan membuat pipeline yang pertama-tama menambahkan fitur polinomial ke model kita, kemudian melatih regresi:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -258,21 +258,43 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
Menggunakan `PolynomialFeatures(2)` berarti kita akan memasukkan semua polinomial derajat dua dari data input. Dalam kasus kita ini hanya berarti `DayOfYear`<sup>2</sup>, tapi jika ada dua variabel input X dan Y, ini akan menambahkan X<sup>2</sup>, XY, dan Y<sup>2</sup>. Kita juga dapat menggunakan polinomial tingkat lebih tinggi jika diinginkan.
Menggunakan `PolynomialFeatures(2)` berarti kita akan memasukkan semua polinomial derajat dua dari data input. Dalam kasus kita ini hanya berarti `DayOfYear`<sup>2</sup>, tapi jika ada dua variabel input X dan Y, ini akan menambahkan X<sup>2</sup>, XY, dan Y<sup>2</sup>. Kita juga bisa menggunakan polinomial derajat lebih tinggi jika ingin.
Pipeline dapat digunakan dengan cara yang sama seperti objek `LinearRegression` asli, yaitu kita bisa `fit` pipeline, lalu menggunakan `predict` untuk mendapatkan hasil prediksi:
```python
pred = pipeline.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
Untuk memplot kurva aproksimasi yang halus, kita menggunakan `np.linspace` untuk membuat rentang nilai input yang seragam, daripada memplot langsung pada data uji yang tidak terurut (yang akan menghasilkan garis zigzag):
```python
X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
y_range = pipeline.predict(X_range)
plt.scatter(X_test, y_test)
plt.plot(X_range, y_range)
```
Pipeline dapat digunakan dengan cara yang sama seperti objek `LinearRegression` asli, yaitu kita dapat melakukan `fit` pada pipeline, lalu menggunakan `predict` untuk mendapatkan hasil prediksi. Berikut adalah grafik yang menunjukkan data uji dan kurva pendekatan:
Berikut grafik yang menunjukkan data uji dan kurva aproksimasi:
<img alt="Polynomial regression" src="../../../../translated_images/id/poly-results.ee587348f0f1f60b.webp" width="50%" />
Dengan Regresi Polinomial, kita bisa mendapatkan MSE yang sedikit lebih rendah dan koefisien determinasi yang lebih tinggi, tapi tidak signifikan. Kita perlu mempertimbangkan fitur lain!
Dengan Regresi Polinomial, kita bisa mendapatkan RMSE sedikit lebih rendah dan koefisien determinasi lebih tinggi, tapi tidak signifikan. Kita perlu mempertimbangkan fitur lain!
> Anda dapat melihat bahwa harga labu minimum diamati sekitar Halloween. Bagaimana Anda menjelaskan ini?
> Anda bisa melihat harga labu terendah diamati di sekitar Halloween. Bagaimana Anda menjelaskannya?
🎃 Selamat, Anda baru saja membuat model yang dapat membantu memprediksi harga labu pie. Anda mungkin bisa mengulangi prosedur yang sama untuk semua jenis labu, tapi itu akan merepotkan. Mari kita pelajari sekarang bagaimana mempertimbangkan varietas labu dalam model kita!
🎃 Selamat, Anda baru saja membuat model yang bisa membantu memprediksi harga labu pie. Anda mungkin bisa mengulangi prosedur yang sama untuk semua jenis labu, tapi itu akan melelahkan. Mari kita pelajari sekarang bagaimana mempertimbangkan varietas labu dalam model kita!
## Fitur Kategorikal
Dalam dunia ideal, kita ingin bisa memprediksi harga untuk berbagai varietas labu menggunakan model yang sama. Namun, kolom `Variety` agak berbeda dari kolom seperti `Month`, karena berisi nilai non-numerik. Kolom seperti ini disebut **kategorikal**.
Dalam dunia ideal, kita ingin bisa memprediksi harga untuk berbagai varietas labu menggunakan model yang sama. Namun, kolom `Variety` agak berbeda dari kolom seperti `Month`, karena mengandung nilai non-numerik. Kolom seperti ini disebut **kategorikal**.
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
@ -282,12 +304,12 @@ Di sini Anda dapat melihat bagaimana harga rata-rata bergantung pada varietas:
<img alt="Average price by variety" src="../../../../translated_images/id/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
Untuk mempertimbangkan varietas, pertama kita perlu mengubahnya ke bentuk numerik, atau **mengkodekannya**. Ada beberapa cara kita dapat melakukannya:
Untuk memasukkan varietas ke dalam pertimbangan, kita harus mengonversi dulu ke bentuk numerik, atau **mengkodekan**. Ada beberapa cara kita bisa melakukannya:
* **Encoding numerik sederhana** akan membuat tabel berbagai varietas, lalu mengganti nama varietas dengan indeks di tabel tersebut. Ini bukan ide terbaik untuk regresi linear, karena regresi linear akan mengambil nilai numerik indeks itu dan menambahkannya ke hasil, yang dikalikan dengan suatu koefisien. Dalam kasus kita, hubungan antara nomor indeks dan harga jelas non-linier, walaupun kita memastikan indeks diurutkan dengan cara tertentu.
* **One-hot encoding** akan menggantikan kolom `Variety` dengan 4 kolom berbeda, satu untuk setiap varietas. Masing-masing kolom berisi `1` jika baris terkait adalah varietas tersebut, dan `0` jika tidak. Ini berarti ada empat koefisien pada regresi linear, satu untuk tiap varietas labu, yang bertanggung jawab atas "harga dasar" (atau lebih tepatnya "harga tambahan") untuk varietas tersebut.
* **Encoding numerik** sederhana akan membuat tabel berbagai varietas, kemudian mengganti nama varietas dengan indeks di tabel tersebut. Ini bukan ide terbaik untuk regresi linear, karena regresi linear menggunakan nilai numerik indeks tersebut dan menambahkannya ke hasil, dikalikan dengan koefisien tertentu. Dalam kasus kita, hubungan antara indeks dan harga jelas tidak linear, sekalipun kita mengurutkan indeks dengan suatu cara khusus.
* **One-hot encoding** akan mengganti kolom `Variety` dengan 4 kolom berbeda, satu untuk setiap varietas. Setiap kolom berisi `1` jika baris terkait adalah varietas tersebut, dan `0` jika tidak. Ini berarti akan ada empat koefisien dalam regresi linear, masing-masing untuk varietas labu tertentu, yang bertanggung jawab untuk "harga awal" (atau tepatnya "harga tambahan") untuk varietas tersebut.
Kode di bawah menunjukkan bagaimana kita bisa melakukan one-hot encoding pada varietas:
Kode di bawah menunjukkan cara melakukan one-hot encoding pada varietas:
```python
pd.get_dummies(new_pumpkins['Variety'])
@ -311,7 +333,7 @@ X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Sisa kode sama seperti yang kita gunakan sebelumnya untuk melatih Regresi Linear. Jika Anda mencobanya, Anda akan melihat bahwa mean squared error hampir sama, tapi kita mendapatkan koefisien determinasi yang jauh lebih tinggi (~77%). Untuk mendapatkan prediksi yang lebih akurat lagi, kita dapat mempertimbangkan fitur kategorikal lainnya, serta fitur numerik, seperti `Month` atau `DayOfYear`. Untuk mendapatkan satu array fitur gabungan, kita dapat menggunakan `join`:
Sisa kode sama seperti yang kita gunakan sebelumnya untuk melatih Regresi Linear. Jika Anda mencoba, Anda akan melihat bahwa mean squared error kira-kira sama, tapi kita mendapatkan nilai koefisien determinasi jauh lebih tinggi (~77%). Untuk mendapatkan prediksi yang lebih akurat, kita dapat mempertimbangkan lebih banyak fitur kategorikal, serta fitur numerik, seperti `Month` atau `DayOfYear`. Untuk mendapatkan satu array fitur besar, kita bisa menggunakan `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -321,11 +343,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Di sini kita juga mempertimbangkan `City` dan tipe `Package`, yang memberikan MSE 2.84 (10%), dan determinasi 0.94!
Di sini kita juga mempertimbangkan `City` dan tipe `Package`, yang memberikan RMSE 2.84 (10.5%), dan determinasi 0.94!
## Menggabungkan Semua
## Menggabungkan semuanya
Untuk membuat model terbaik, kita dapat menggunakan data gabungan (kategorikal yang telah di-one-hot encode + numerik) dari contoh di atas bersama dengan Regresi Polinomial. Berikut kode lengkap untuk kemudahan Anda:
Untuk membuat model terbaik, kita dapat menggunakan data gabungan (kategorikal one-hot encoded + numerik) dari contoh di atas bersama Regresi Polinomial. Berikut kode lengkapnya untuk kemudahan Anda:
```python
# siapkan data pelatihan
@ -335,7 +357,7 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# buat pembagian train-test
# buat pemisahan train-test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# siapkan dan latih pipeline
@ -345,38 +367,38 @@ pipeline.fit(X_train,y_train)
# prediksi hasil untuk data uji
pred = pipeline.predict(X_test)
# hitung MSE dan determinasi
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
# hitung RMSE dan determinasi
rmse = mean_squared_error(y_test, pred, squared=False)
print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
Ini seharusnya memberi kita koefisien determinasi terbaik hampir 97%, dan MSE=2.23 (~8% kesalahan prediksi).
Ini seharusnya memberi kita nilai koefisien determinasi terbaik hampir 97%, dan RMSE=2.23 (~8% error prediksi).
| Model | MSE | Determination |
| Model | RMSE | Determination |
|-------|-----|---------------|
| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 |
| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 |
| `Variety` Linear | 5.24 (19.7%) | 0.77 |
| Semua fitur Linear | 2.84 (10.5%) | 0.94 |
| Semua fitur Polynomial | 2.23 (8.25%) | 0.97 |
| Linear `DayOfYear` | 2.77 (17.2%) | 0.07 |
| Polinomial `DayOfYear` | 2.73 (17.0%) | 0.08 |
| Linear `Variety` | 5.24 (19.7%) | 0.77 |
| Linear Semua fitur | 2.84 (10.5%) | 0.94 |
| Polinomial Semua fitur | 2.23 (8.25%) | 0.97 |
🏆 Bagus sekali! Anda telah membuat empat model Regresi dalam satu pelajaran, dan meningkatkan kualitas model menjadi 97%. Pada bagian terakhir tentang Regresi, Anda akan belajar tentang Regresi Logistik untuk menentukan kategori.
🏆 Bagus! Anda membuat empat model Regresi dalam satu pelajaran, dan meningkatkan kualitas model hingga 97%. Di bagian akhir tentang Regresi, Anda akan belajar tentang Regresi Logistik untuk menentukan kategori.
---
## 🚀Tantangan
Uji beberapa variabel berbeda dalam notebook ini untuk melihat bagaimana korelasi berhubungan dengan akurasi model.
Uji beberapa variabel berbeda dalam notebook ini untuk melihat bagaimana korelasi terkait dengan akurasi model.
## [Kuis pasca kuliah](https://ff-quizzes.netlify.app/en/ml/)
## Tinjauan & Belajar Mandiri
## Ulasan & Belajar Mandiri
Dalam pelajaran ini kita belajar tentang Regresi Linear. Ada jenis Regresi lain yang penting. Bacalah tentang teknik Stepwise, Ridge, Lasso dan Elasticnet. Kursus yang bagus untuk belajar lebih lanjut adalah [kursus Pembelajaran Statistik Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
Dalam pelajaran ini kita belajar tentang Regresi Linear. Ada tipe Regresi penting lain. Bacalah tentang teknik Stepwise, Ridge, Lasso, dan Elasticnet. Kursus yang bagus untuk belajar lebih lanjut adalah [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Tugas
## Tugas
[Bangun Model](assignment.md)
@ -384,5 +406,5 @@ Dalam pelajaran ini kita belajar tentang Regresi Linear. Ada jenis Regresi lain
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Penafian**:
Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber otoritatif. Untuk informasi penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau salah interpretasi yang timbul dari penggunaan terjemahan ini.
Dokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidaktepatan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang berwenang. Untuk informasi yang penting, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau salah tafsir yang timbul dari penggunaan terjemahan ini.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Regresi Linear dan Polinomial untuk Penentuan Harga Labu - Pelajaran 3\n",
"## Regresi Linear dan Polinomial untuk Penetapan Harga Labu - Pelajaran 3\n",
"\n",
"Muat pustaka dan dataset yang diperlukan. Ubah data menjadi dataframe yang hanya berisi subset data berikut:\n",
"Muat perpustakaan dan dataset yang diperlukan. Ubah data menjadi dataframe yang berisi subset data:\n",
"\n",
"- Hanya ambil labu yang dihargai per keranjang\n",
"- Hanya ambil labu yang dihargai per bushel\n",
"- Ubah tanggal menjadi bulan\n",
"- Hitung harga sebagai rata-rata dari harga tertinggi dan terendah\n",
"- Ubah harga agar mencerminkan penetapan harga berdasarkan jumlah per keranjang\n"
"- Ubah harga untuk mencerminkan penetapan harga berdasarkan kuantitas bushel\n"
]
},
{
@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Sebuah diagram pencar mengingatkan kita bahwa kita hanya memiliki data bulan dari Agustus hingga Desember. Kita mungkin memerlukan lebih banyak data untuk dapat menarik kesimpulan secara linear.\n"
"Diagram sebar mengingatkan kita bahwa kita hanya memiliki data bulan dari Agustus hingga Desember. Kita mungkin perlu lebih banyak data untuk dapat menarik kesimpulan secara linier.\n"
]
},
{
@ -447,7 +447,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"Mari kita lihat apakah ada korelasi:\n"
]
},
{
"cell_type": "code",
@ -472,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Sepertinya korelasi cukup kecil, tetapi ada hubungan lain yang lebih penting - karena titik harga dalam plot di atas tampaknya memiliki beberapa kluster yang berbeda. Mari kita buat plot yang akan menunjukkan berbagai jenis labu:\n"
"Sepertinya korelasinya cukup kecil, tetapi ada hubungan lain yang lebih penting - karena titik harga dalam plot di atas tampak memiliki beberapa kelompok yang berbeda. Mari kita buat plot yang akan menunjukkan berbagai varietas labu:\n"
]
},
{
@ -535,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"Untuk saat ini, mari kita fokus hanya pada satu jenis - **jenis pai**.\n"
]
},
{
"cell_type": "code",
@ -582,9 +586,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### Regresi Linear\n",
"### Regresi Linier\n",
"\n",
"Kita akan menggunakan Scikit Learn untuk melatih model regresi linear:\n"
"Kita akan menggunakan Scikit Learn untuk melatih model regresi linier:\n"
]
},
{
@ -662,7 +666,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Kemiringan garis dapat ditentukan dari koefisien regresi linier:\n"
"Kemiringan garis dapat ditentukan dari koefisien regresi linear:\n"
]
},
{
@ -720,9 +724,9 @@
"source": [
"### Regresi Polinomial\n",
"\n",
"Kadang-kadang hubungan antara fitur dan hasil secara alami tidak linear. Sebagai contoh, harga labu mungkin tinggi di musim dingin (bulan=1,2), kemudian turun selama musim panas (bulan=5-7), dan kemudian naik lagi. Regresi linear tidak mampu menemukan hubungan ini dengan akurat.\n",
"Terkadang hubungan antara fitur dan hasil secara inheren non-linear. Misalnya, harga labu mungkin tinggi di musim dingin (bulan=1,2), kemudian turun selama musim panas (bulan=5-7), dan kemudian naik kembali. Regresi linier tidak dapat menemukan hubungan ini dengan akurat.\n",
"\n",
"Dalam kasus ini, kita dapat mempertimbangkan untuk menambahkan fitur tambahan. Cara sederhana adalah menggunakan polinomial dari fitur input, yang akan menghasilkan **regresi polinomial**. Dalam Scikit Learn, kita dapat secara otomatis menghitung fitur polinomial menggunakan pipelines:\n"
"Dalam kasus ini, kita dapat mempertimbangkan menambahkan fitur tambahan. Cara sederhana adalah menggunakan polinomial dari fitur input, yang akan menghasilkan **regresi polinomial**. Di Scikit Learn, kita dapat secara otomatis menghitung fitur polinomial menggunakan pipeline:\n"
]
},
{
@ -777,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
"plt.scatter(X_test,y_test)\n",
"plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
"X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
"y_range = pipeline.predict(X_range)\n",
"\n",
"plt.scatter(X_test, y_test)\n",
"plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Jenis Encoding\n",
"### Varietas pengkodean\n",
"\n",
"Dalam dunia ideal, kita ingin dapat memprediksi harga untuk berbagai jenis labu menggunakan model yang sama. Untuk mempertimbangkan jenis labu, pertama-tama kita perlu mengubahnya ke bentuk numerik, atau **encode**. Ada beberapa cara untuk melakukannya:\n",
"Dalam dunia ideal, kita ingin dapat memprediksi harga untuk berbagai varietas labu menggunakan model yang sama. Untuk mempertimbangkan varietas, kita pertama-tama perlu mengonversinya ke bentuk numerik, atau **mengkodekan**. Ada beberapa cara yang bisa kita lakukan:\n",
"\n",
"* Encoding numerik sederhana yang akan membuat tabel dari berbagai jenis labu, lalu mengganti nama jenis dengan indeks dalam tabel tersebut. Ini bukan ide terbaik untuk regresi linier, karena regresi linier mempertimbangkan nilai numerik dari indeks, dan nilai numerik tersebut kemungkinan besar tidak berkorelasi secara numerik dengan harga.\n",
"* One-hot encoding, yang akan mengganti kolom `Variety` dengan 4 kolom berbeda, satu untuk setiap jenis labu, yang akan berisi 1 jika baris yang bersangkutan adalah jenis tertentu, dan 0 jika tidak.\n",
"* Pengkodean numerik sederhana yang akan membuat tabel berbagai varietas, dan kemudian menggantikan nama varietas dengan indeks dalam tabel tersebut. Ini bukan ide yang terbaik untuk regresi linear, karena regresi linear memperhitungkan nilai numerik dari indeks tersebut, dan nilai numerik tersebut kemungkinan tidak berkorelasi secara numerik dengan harga.\n",
"* One-hot encoding, yang akan menggantikan kolom `Variety` dengan 4 kolom berbeda, satu untuk setiap varietas, yang akan berisi 1 jika baris yang sesuai adalah dari varietas tertentu, dan 0 jika tidak.\n",
"\n",
"Kode di bawah ini menunjukkan bagaimana kita dapat melakukan one-hot encoding untuk jenis labu:\n"
"Kode di bawah ini menunjukkan bagaimana kita dapat melakukan one-hot encoding pada varietas:\n"
]
},
{
@ -940,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### Regresi Linear pada Variasi\n",
"### Regresi Linear pada Varietas\n",
"\n",
"Sekarang kita akan menggunakan kode yang sama seperti di atas, tetapi alih-alih `DayOfYear`, kita akan menggunakan variasi yang telah diubah menjadi one-hot-encoded sebagai input:\n"
"Kita sekarang akan menggunakan kode yang sama seperti di atas, tetapi alih-alih `DayOfYear` kita akan menggunakan varietas one-hot-encoded kita sebagai input:\n"
]
},
{
@ -990,7 +997,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Kita juga dapat mencoba menggunakan fitur lain dengan cara yang sama, dan menggabungkannya dengan fitur numerik, seperti `Month` atau `DayOfYear`:\n"
"Kita juga dapat mencoba menggunakan fitur lain dengan cara yang sama, dan mengombinasikannya dengan fitur numerik, seperti `Month` atau `DayOfYear`:\n"
]
},
{
@ -1023,7 +1030,7 @@
"source": [
"### Regresi Polinomial\n",
"\n",
"Regresi polinomial juga dapat digunakan dengan fitur kategorikal yang telah diubah menjadi one-hot-encoded. Kode untuk melatih regresi polinomial pada dasarnya akan sama seperti yang telah kita lihat sebelumnya.\n"
"Regresi polinomial juga dapat digunakan dengan fitur kategorikal yang di-one-hot-encode. Kode untuk melatih regresi polinomial pada dasarnya akan sama seperti yang telah kita lihat di atas.\n"
]
},
{
@ -1070,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan layanan penerjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berusaha untuk memberikan hasil yang akurat, harap diingat bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang otoritatif. Untuk informasi yang bersifat kritis, disarankan menggunakan jasa penerjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang keliru yang timbul dari penggunaan terjemahan ini.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan layanan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Meskipun kami berupaya untuk akurasi, harap diketahui bahwa terjemahan otomatis mungkin mengandung kesalahan atau ketidakakuratan. Dokumen asli dalam bahasa aslinya harus dianggap sebagai sumber yang sahih. Untuk informasi kritis, disarankan menggunakan terjemahan profesional oleh manusia. Kami tidak bertanggung jawab atas kesalahpahaman atau penafsiran yang salah yang timbul dari penggunaan terjemahan ini.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
@ -1100,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
"orig_nbformat": 2,
"coopTranslator": {
"original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
"translation_date": "2025-09-04T06:22:04+00:00",
"source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
"language_code": "id"
}
"orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2

@ -36,8 +36,8 @@
"language_code": "ms"
},
"1-Introduction/4-techniques-of-ML/README.md": {
"original_hash": "9d91f3af3758fdd4569fb410575995ef",
"translation_date": "2025-09-05T19:36:47+00:00",
"original_hash": "84b1715a6be62ef1697351dcc5d7b567",
"translation_date": "2026-04-26T19:44:26+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "ms"
},
@ -90,8 +90,8 @@
"language_code": "ms"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T17:45:05+00:00",
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:43:58+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "ms"
},
@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "ms"
},
"2-Regression/3-Linear/solution/notebook.ipynb": {
"original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
"translation_date": "2026-04-26T19:41:25+00:00",
"source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
"language_code": "ms"
},
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-05T18:48:36+00:00",

@ -1,123 +1,125 @@
# Teknik Pembelajaran Mesin
Proses membina, menggunakan, dan mengekalkan model pembelajaran mesin serta data yang digunakan adalah sangat berbeza daripada banyak aliran kerja pembangunan lain. Dalam pelajaran ini, kita akan menjelaskan proses tersebut dan menggariskan teknik utama yang perlu anda ketahui. Anda akan:
Proses membina, menggunakan, dan menyelenggara model pembelajaran mesin dan data yang mereka gunakan adalah proses yang sangat berbeza daripada banyak aliran kerja pembangunan lain. Dalam pelajaran ini, kita akan menjelaskan proses ini, dan menggariskan teknik utama yang perlu anda ketahui. Anda akan:
- Memahami proses yang mendasari pembelajaran mesin pada tahap tinggi.
- Meneroka konsep asas seperti 'model', 'ramalan', dan 'data latihan'.
- Memahami proses yang menjadi asas pembelajaran mesin pada tahap tinggi.
- Menerokai konsep asas seperti 'model', 'ramalan', dan 'data latihan'.
## [Kuiz pra-pelajaran](https://ff-quizzes.netlify.app/en/ml/)
## [Kuiz pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
[![ML untuk pemula - Teknik Pembelajaran Mesin](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML untuk pemula - Teknik Pembelajaran Mesin")
> 🎥 Klik imej di atas untuk video pendek yang menerangkan pelajaran ini.
> 🎥 Klik imej di atas untuk video ringkas yang menerangkan pelajaran ini.
## Pengenalan
Secara umum, seni mencipta proses pembelajaran mesin (ML) terdiri daripada beberapa langkah:
Pada tahap tinggi, kemahiran mencipta proses pembelajaran mesin (ML) terdiri daripada beberapa langkah:
1. **Tentukan soalan**. Kebanyakan proses ML bermula dengan menanyakan soalan yang tidak dapat dijawab oleh program bersyarat atau enjin berasaskan peraturan yang mudah. Soalan-soalan ini sering berkisar pada ramalan berdasarkan koleksi data.
2. **Kumpul dan sediakan data**. Untuk menjawab soalan anda, anda memerlukan data. Kualiti dan, kadangkala, kuantiti data anda akan menentukan sejauh mana anda dapat menjawab soalan awal anda. Memvisualkan data adalah aspek penting dalam fasa ini. Fasa ini juga termasuk membahagikan data kepada kumpulan latihan dan ujian untuk membina model.
3. **Pilih kaedah latihan**. Bergantung pada soalan anda dan sifat data anda, anda perlu memilih cara untuk melatih model agar mencerminkan data anda dengan baik dan membuat ramalan yang tepat. Bahagian proses ML ini memerlukan kepakaran khusus dan, sering kali, sejumlah besar eksperimen.
4. **Latih model**. Menggunakan data latihan anda, anda akan menggunakan pelbagai algoritma untuk melatih model agar mengenali pola dalam data. Model mungkin menggunakan berat dalaman yang boleh disesuaikan untuk memberi keutamaan kepada bahagian tertentu data berbanding yang lain untuk membina model yang lebih baik.
5. **Nilai model**. Anda menggunakan data yang belum pernah dilihat sebelumnya (data ujian anda) daripada set yang dikumpulkan untuk melihat bagaimana prestasi model.
6. **Penalaan parameter**. Berdasarkan prestasi model anda, anda boleh mengulangi proses menggunakan parameter atau pembolehubah yang berbeza yang mengawal tingkah laku algoritma yang digunakan untuk melatih model.
7. **Ramalkan**. Gunakan input baru untuk menguji ketepatan model anda.
1. **Tentukan soalan**. Kebanyakan proses ML bermula dengan mengajukan soalan yang tidak dapat dijawab oleh program kondisional mudah atau enjin berdasarkan peraturan. Soalan-soalan ini sering berkisar pada ramalan berdasarkan koleksi data.
2. **Kumpul dan sediakan data**. Untuk dapat menjawab soalan anda, anda memerlukan data. Kualiti dan, kadang-kala, kuantiti data anda akan menentukan sejauh mana anda dapat menjawab soalan awal anda. Memvisualisasikan data adalah aspek penting dalam fasa ini. Fasa ini juga termasuk membahagikan data kepada kumpulan latihan dan ujian untuk membina model.
3. **Pilih kaedah latihan**. Bergantung pada soalan anda dan sifat data anda, anda perlu memilih cara anda ingin melatih model agar dapat mencerminkan data anda dengan baik dan membuat ramalan yang tepat terhadapnya. Bahagian proses ML anda ini memerlukan kepakaran khusus dan, sering kali, sejumlah besar percubaan.
4. **Latih model**. Menggunakan data latihan anda, anda akan menggunakan pelbagai algoritma untuk melatih model mengenal pasti corak dalam data tersebut. Model mungkin menggunakan berat dalaman yang boleh diselaraskan untuk mengutamakan bahagian data tertentu bagi membina model yang lebih baik.
5. **Nilai model**. Anda menggunakan data yang belum pernah dilihat sebelum ini (data ujian anda) dari set data yang dikumpulkan untuk melihat bagaimana prestasi model.
6. **Penghalusan parameter**. Berdasarkan prestasi model anda, anda boleh mengulangi proses menggunakan parameter yang berbeza, atau pembolehubah, yang mengawal tingkah laku algoritma yang digunakan untuk melatih model.
7. **Buat Ramalan**. Gunakan input baru untuk menguji ketepatan model anda.
## Soalan yang perlu ditanya
## Soalan yang Perlu Ditanya
Komputer sangat mahir dalam menemui pola tersembunyi dalam data. Kegunaan ini sangat membantu penyelidik yang mempunyai soalan tentang domain tertentu yang tidak dapat dijawab dengan mudah dengan mencipta enjin peraturan bersyarat. Sebagai contoh, dalam tugas aktuari, seorang saintis data mungkin dapat membina peraturan buatan tangan tentang kadar kematian perokok berbanding bukan perokok.
Komputer sangat mahir dalam menemui corak tersembunyi dalam data. Kebolehan ini sangat membantu penyelidik yang mempunyai soalan tentang domain tertentu yang tidak dapat dijawab dengan mudah dengan membina enjin peraturan berasaskan kondisi. Sebagai contoh tugasan aktuari, seorang saintis data mungkin dapat membina peraturan buatan tangan mengenai kematian perokok vs bukan perokok.
Namun, apabila banyak pembolehubah lain dimasukkan ke dalam persamaan, model ML mungkin lebih efisien untuk meramalkan kadar kematian masa depan berdasarkan sejarah kesihatan masa lalu. Contoh yang lebih ceria mungkin membuat ramalan cuaca untuk bulan April di lokasi tertentu berdasarkan data yang merangkumi latitud, longitud, perubahan iklim, jarak ke laut, pola aliran jet, dan banyak lagi.
Namun, apabila banyak pembolehubah lain dimasukkan ke dalam persamaan, model ML mungkin lebih cekap untuk meramalkan kadar kematian masa depan berdasarkan sejarah kesihatan lalu. Contoh yang lebih ceria mungkin membuat ramalan cuaca untuk bulan April di lokasi tertentu berdasarkan data yang termasuk latitud, longitud, perubahan iklim, kedekatan dengan lautan, corak aliran jet, dan banyak lagi.
[Slide ini](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) tentang model cuaca menawarkan perspektif sejarah untuk menggunakan ML dalam analisis cuaca.
Dek slaid ini tentang model cuaca menawarkan perspektif sejarah untuk menggunakan ML dalam analisis cuaca.
## Tugas sebelum membina
## Tugasan Pra-pembinaan
Sebelum memulakan pembinaan model anda, terdapat beberapa tugas yang perlu anda selesaikan. Untuk menguji soalan anda dan membentuk hipotesis berdasarkan ramalan model, anda perlu mengenal pasti dan mengkonfigurasi beberapa elemen.
Sebelum mula membina model anda, terdapat beberapa tugasan yang perlu anda lengkapkan. Untuk menguji soalan anda dan membentuk hipotesis berdasarkan ramalan model, anda perlu mengenal pasti dan mengkonfigurasi beberapa elemen.
### Data
Untuk menjawab soalan anda dengan sebarang kepastian, anda memerlukan sejumlah data yang mencukupi dan jenis yang betul. Terdapat dua perkara yang perlu dilakukan pada tahap ini:
Untuk dapat menjawab soalan anda dengan sedikit kepastian, anda memerlukan jumlah data yang banyak dan jenis yang betul. Ada dua perkara yang perlu anda lakukan pada tahap ini:
- **Kumpul data**. Mengambil kira pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data anda dengan berhati-hati. Sedar akan sumber data ini, sebarang bias yang mungkin ada, dan dokumentasikan asal usulnya.
- **Sediakan data**. Terdapat beberapa langkah dalam proses penyediaan data. Anda mungkin perlu menggabungkan data dan menormalkannya jika ia berasal dari sumber yang pelbagai. Anda boleh meningkatkan kualiti dan kuantiti data melalui pelbagai kaedah seperti menukar string kepada nombor (seperti yang kita lakukan dalam [Pengelompokan](../../5-Clustering/1-Visualize/README.md)). Anda juga boleh menghasilkan data baru berdasarkan data asal (seperti yang kita lakukan dalam [Klasifikasi](../../4-Classification/1-Introduction/README.md)). Anda boleh membersihkan dan mengedit data (seperti yang akan kita lakukan sebelum pelajaran [Aplikasi Web](../../3-Web-App/README.md)). Akhirnya, anda mungkin juga perlu mengacak dan mencampurkannya, bergantung pada teknik latihan anda.
- **Kumpul data**. Dengan mengambil kira pelajaran sebelumnya tentang keadilan dalam analisis data, kumpulkan data anda dengan berhati-hati. Sadarilah sumber data ini, sebarang bias yang wujud, dan dokumentasikan asal-usulnya.
- **Sediakan data**. Terdapat beberapa langkah dalam proses penyediaan data. Anda mungkin perlu mengumpul data dan menormalkannya jika ia berasal dari sumber yang berbeza. Anda boleh meningkatkan kualiti dan kuantiti data melalui pelbagai kaedah seperti menukar rentetan kepada nombor (seperti dalam [Pengelompokan](../../5-Clustering/1-Visualize/README.md)). Anda mungkin juga menjana data baru berdasarkan data asal (seperti dalam [Klasifikasi](../../4-Classification/1-Introduction/README.md)). Anda boleh membersihkan dan mengedit data (seperti yang akan kita lakukan sebelum pelajaran [Aplikasi Web](../../3-Web-App/README.md)). Akhir sekali, anda mungkin juga perlu mengacak dan mengaduk data bergantung pada teknik latihan anda.
✅ Selepas mengumpul dan memproses data anda, luangkan masa untuk melihat sama ada bentuknya akan membolehkan anda menangani soalan yang dimaksudkan. Mungkin data tersebut tidak akan berfungsi dengan baik dalam tugas yang diberikan, seperti yang kita temui dalam pelajaran [Pengelompokan](../../5-Clustering/1-Visualize/README.md)!
✅ Setelah mengumpul dan memproses data anda, luangkan masa untuk melihat jika bentuknya membolehkan anda menangani soalan yang dimaksudkan. Mungkin data tersebut tidak akan berfungsi dengan baik dalam tugasan anda, seperti yang kita temui dalam pelajaran [Pengelompokan](../../5-Clustering/1-Visualize/README.md)!
### Ciri dan Sasaran
[Ciri](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) adalah sifat yang boleh diukur daripada data anda. Dalam banyak set data, ia dinyatakan sebagai tajuk lajur seperti 'tarikh', 'saiz', atau 'warna'. Pembolehubah ciri anda, biasanya diwakili sebagai `X` dalam kod, mewakili pembolehubah input yang akan digunakan untuk melatih model.
[Feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) adalah ciri yang boleh diukur dalam data anda. Dalam banyak set data, ia dinyatakan sebagai tajuk lajur seperti 'tarikh', 'saiz' atau 'warna'. Pembolehubah ciri anda, biasanya diwakili sebagai `X` dalam kod, mewakili pembolehubah input yang akan digunakan untuk melatih model.
Sasaran adalah perkara yang anda cuba ramalkan. Sasaran, biasanya diwakili sebagai `y` dalam kod, mewakili jawapan kepada soalan yang anda cuba tanyakan kepada data anda: pada bulan Disember, **warna** labu mana yang akan paling murah? Di San Francisco, kawasan kejiranan mana yang akan mempunyai **harga** hartanah terbaik? Kadangkala sasaran juga dirujuk sebagai atribut label.
Sasaran ialah perkara yang anda cuba ramalkan. Sasaran, biasanya diwakili sebagai `y` dalam kod, adalah jawapan kepada soalan yang anda cuba tanyakan pada data anda: pada bulan Disember, labu warna apa yang akan paling murah? di San Francisco, kejiranan mana yang akan mempunyai harga hartanah terbaik? Kadang-kadang sasaran juga dirujuk sebagai atribut label.
### Memilih pembolehubah ciri anda
🎓 **Pemilihan Ciri dan Ekstraksi Ciri** Bagaimana anda tahu pembolehubah mana yang perlu dipilih semasa membina model? Anda mungkin akan melalui proses pemilihan ciri atau ekstraksi ciri untuk memilih pembolehubah yang betul untuk model yang paling berprestasi. Walau bagaimanapun, mereka tidak sama: "Ekstraksi ciri mencipta ciri baru daripada fungsi ciri asal, manakala pemilihan ciri mengembalikan subset ciri." ([sumber](https://wikipedia.org/wiki/Feature_selection))
🎓 **Pemilihan Ciri dan Pengekstrakan Ciri** Bagaimana anda tahu pembolehubah mana untuk dipilih semasa membina model? Anda mungkin akan melalui proses pemilihan ciri atau pengekstrakan ciri untuk memilih pembolehubah yang sesuai bagi model yang paling berprestasi. Namun, kedua-duanya tidak sama: "Pengekstrakan ciri mencipta ciri baru dari fungsi ciri asal, manakala pemilihan ciri mengembalikan subset ciri." ([sumber](https://wikipedia.org/wiki/Feature_selection))
### Visualkan data anda
### Visualisasikan data anda
Aspek penting dalam alat saintis data adalah kuasa untuk memvisualkan data menggunakan beberapa pustaka yang sangat baik seperti Seaborn atau MatPlotLib. Mewakili data anda secara visual mungkin membolehkan anda menemui korelasi tersembunyi yang boleh anda manfaatkan. Visualisasi anda juga mungkin membantu anda menemui bias atau data yang tidak seimbang (seperti yang kita temui dalam [Klasifikasi](../../4-Classification/2-Classifiers-1/README.md)).
Aspek penting dalam set peralatan saintis data adalah keupayaan untuk memvisualisasikan data menggunakan beberapa perpustakaan cemerlang seperti Seaborn atau MatPlotLib. Mewakili data secara visual mungkin membolehkan anda menemui korelasi tersembunyi yang boleh anda manfaatkan. Visualisasi anda juga mungkin membantu mendedahkan bias atau data yang tidak seimbang (seperti yang kita temui dalam [Klasifikasi](../../4-Classification/2-Classifiers-1/README.md)).
### Bahagikan set data anda
Sebelum latihan, anda perlu membahagikan set data anda kepada dua atau lebih bahagian yang tidak sama saiz tetapi masih mewakili data dengan baik.
Sebelum latihan, anda perlu membahagikan set data anda kepada dua atau lebih bahagian saiz tidak sama yang masih mewakili data dengan baik.
- **Latihan**. Bahagian set data ini digunakan untuk melatih model anda. Set ini membentuk sebahagian besar daripada set data asal.
- **Ujian**. Set ujian adalah kumpulan data bebas, sering kali diambil daripada data asal, yang anda gunakan untuk mengesahkan prestasi model yang dibina.
- **Pengesahan**. Set pengesahan adalah kumpulan contoh bebas yang lebih kecil yang anda gunakan untuk menala parameter hiper model, atau seni bina, untuk meningkatkan model. Bergantung pada saiz data anda dan soalan yang anda tanyakan, anda mungkin tidak perlu membina set ketiga ini (seperti yang kita perhatikan dalam [Ramalan Siri Masa](../../7-TimeSeries/1-Introduction/README.md)).
- **Latihan**. Bahagian dataset ini digunakan untuk melatih model anda. Set ini mewakili sebahagian besar dataset asal.
- **Ujian**. Set data ujian adalah kumpulan data bebas, yang sering dikumpulkan dari data asal, yang anda gunakan untuk mengesahkan prestasi model yang dibina.
- **Pengesahan**. Set pengesahan adalah kumpulan kecil contoh bebas yang anda gunakan untuk melaras hiperaparameter model, atau seni bina, untuk memperbaiki model. Bergantung pada saiz data anda dan soalan yang anda ajukan, anda mungkin tidak perlu membina set ketiga ini (seperti yang kita catat dalam [Peramalan Siri Masa](../../7-TimeSeries/1-Introduction/README.md)).
## Membina model
Menggunakan data latihan anda, matlamat anda adalah untuk membina model, atau representasi statistik data anda, menggunakan pelbagai algoritma untuk **melatih**nya. Melatih model mendedahkannya kepada data dan membolehkan ia membuat andaian tentang pola yang ditemui, disahkan, dan diterima atau ditolak.
Menggunakan data latihan anda, matlamat anda adalah membina model, atau representasi statistik data anda, menggunakan pelbagai algoritma untuk **melatih**nya. Melatih model mendedahkannya kepada data dan membolehkannya membuat andaian tentang corak yang dikesan, disahkan, dan diterima atau ditolak.
### Tentukan kaedah latihan
Bergantung pada soalan anda dan sifat data anda, anda akan memilih kaedah untuk melatihnya. Melalui [dokumentasi Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - yang kita gunakan dalam kursus ini - anda boleh meneroka banyak cara untuk melatih model. Bergantung pada pengalaman anda, anda mungkin perlu mencuba beberapa kaedah yang berbeza untuk membina model terbaik. Anda mungkin akan melalui proses di mana saintis data menilai prestasi model dengan memberinya data yang belum dilihat, memeriksa ketepatan, bias, dan isu lain yang merosakkan kualiti, serta memilih kaedah latihan yang paling sesuai untuk tugas yang diberikan.
Bergantung pada soalan anda dan sifat data anda, anda akan memilih kaedah untuk melatihnya. Dengan melayari dokumentasi [Scikit-learn](https://scikit-learn.org/stable/user_guide.html) - yang kami gunakan dalam kursus ini - anda boleh menerokai banyak cara untuk melatih model. Bergantung pada pengalaman anda, anda mungkin perlu mencuba beberapa kaedah berbeza untuk membina model terbaik. Anda mungkin akan melalui proses di mana saintis data menilai prestasi model dengan memberikannya data yang belum dilihat, memeriksa ketepatan, bias, dan isu kualiti lain, serta memilih kaedah latihan yang paling sesuai untuk tugasan tersebut.
### Latih model
Dengan data latihan anda, anda bersedia untuk 'memasangkannya' untuk mencipta model. Anda akan perasan bahawa dalam banyak pustaka ML, anda akan menemui kod 'model.fit' - pada masa ini anda menghantar pembolehubah ciri anda sebagai array nilai (biasanya 'X') dan pembolehubah sasaran (biasanya 'y').
Dilengkapi dengan data latihan, anda bersedia 'menyesuaikan' untuk mencipta model. Anda akan perasan bahawa dalam banyak perpustakaan ML anda akan menemui kod 'model.fit' - pada masa ini anda menghantar pembolehubah ciri anda sebagai satu tatasusunan nilai (biasanya 'X') dan pembolehubah sasaran (biasanya 'y').
### Nilai model
Setelah proses latihan selesai (ia boleh mengambil banyak iterasi, atau 'epoch', untuk melatih model besar), anda akan dapat menilai kualiti model dengan menggunakan data ujian untuk mengukur prestasinya. Data ini adalah subset daripada data asal yang belum dianalisis oleh model. Anda boleh mencetak jadual metrik tentang kualiti model anda.
Setelah proses latihan selesai (ia boleh mengambil banyak iterasi, atau 'epoch', untuk melatih model besar), anda akan dapat menilai kualiti model dengan menggunakan data ujian untuk mengukur prestasinya. Data ini adalah subset daripada data asal yang model tidak pernah analisis sebelum ini. Anda boleh mencetak jadual metrik mengenai kualiti model anda.
🎓 **Pemasangan model**
Dalam konteks pembelajaran mesin, pemasangan model merujuk kepada ketepatan fungsi asas model semasa ia cuba menganalisis data yang tidak dikenali.
Dalam konteks pembelajaran mesin, pemasangan model merujuk kepada ketepatan fungsi asas model ketika berusaha menganalisis data yang tidak dikenali olehnya.
🎓 **Underfitting** dan **overfitting** adalah masalah biasa yang merosakkan kualiti model, kerana model sama ada tidak cukup baik atau terlalu baik. Ini menyebabkan model membuat ramalan yang terlalu selaras atau terlalu longgar dengan data latihannya. Model yang terlalu sesuai meramalkan data latihan terlalu baik kerana ia telah mempelajari butiran dan bunyi data terlalu baik. Model yang kurang sesuai tidak tepat kerana ia tidak dapat menganalisis data latihannya atau data yang belum 'dilihat' dengan tepat.
🎓 **Underfitting** dan **overfitting** adalah masalah biasa yang menurunkan kualiti model, kerana model tidak cukup sesuai atau terlalu sesuai. Ini menyebabkan model membuat ramalan yang sama ada terlalu rapat atau terlalu longgar dengan data latihannya. Model overfit meramalkan data latihan dengan baik kerana ia telah mempelajari butiran dan bunyi data terlalu baik. Model underfit tidak tepat kerana ia tidak dapat menganalisis dengan betul data latihannya maupun data yang belum pernah 'dilihat'.
![model overfitting](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png)
![model overfitting](../../../../translated_images/ms/overfitting.1c132d92bfd93cb6.webp)
> Infografik oleh [Jen Looper](https://twitter.com/jenlooper)
## Penalaan parameter
## Penghalusan Parameter
Setelah latihan awal anda selesai, perhatikan kualiti model dan pertimbangkan untuk meningkatkannya dengan menyesuaikan 'parameter hiper'nya. Baca lebih lanjut tentang proses ini [dalam dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
Setelah latihan awal selesai, perhatikan kualiti model dan pertimbangkan untuk memperbaikinya dengan mengubah 'hiperparameter'. Baca lebih lanjut mengenai proses ini [dalam dokumentasi](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
## Ramalan
Ini adalah saat di mana anda boleh menggunakan data yang benar-benar baru untuk menguji ketepatan model anda. Dalam tetapan ML 'terapan', di mana anda membina aset web untuk menggunakan model dalam pengeluaran, proses ini mungkin melibatkan pengumpulan input pengguna (tekanan butang, sebagai contoh) untuk menetapkan pembolehubah dan menghantarnya kepada model untuk inferens, atau penilaian.
Ini adalah saat di mana anda boleh menggunakan data baru sepenuhnya untuk menguji ketepatan model anda. Dalam tetapan ML 'terap', di mana anda membina aset web untuk menggunakan model dalam pengeluaran, proses ini mungkin melibatkan pengumpulan input pengguna (contohnya, tekan butang) untuk menetapkan pembolehubah dan menghantarnya ke model bagi inferens atau penilaian.
Dalam pelajaran ini, anda akan menemui cara menggunakan langkah-langkah ini untuk menyediakan, membina, menguji, menilai, dan meramalkan - semua gerakan seorang saintis data dan banyak lagi, semasa anda maju dalam perjalanan anda untuk menjadi jurutera ML 'full stack'.
Dalam pelajaran-pelajaran ini, anda akan mengetahui bagaimana menggunakan langkah-langkah ini untuk menyediakan, membina, menguji, menilai, dan meramalkan - semua gerak kerja seorang saintis data dan lebih lagi, semasa anda melangkah dalam perjalanan anda untuk menjadi jurutera ML 'full stack'.
---
## 🚀Cabaran
Lukiskan carta alir yang mencerminkan langkah-langkah seorang pengamal ML. Di mana anda melihat diri anda sekarang dalam proses ini? Di mana anda meramalkan anda akan menghadapi kesukaran? Apa yang kelihatan mudah bagi anda?
Lukis carta aliran yang mencerminkan langkah-langkah seorang pengamal ML. Di manakah anda melihat diri anda sekarang dalam proses ini? Di mana anda meramalkan anda akan menghadapi kesukaran? Apa yang kelihatan mudah bagi anda?
## [Kuiz selepas pelajaran](https://ff-quizzes.netlify.app/en/ml/)
## [Kuiz pasca-ceramah](https://ff-quizzes.netlify.app/en/ml/)
## Ulasan & Kajian Kendiri
## Ulasan & Pembelajaran Kendiri
Cari dalam talian untuk temu bual dengan saintis data yang membincangkan kerja harian mereka. Berikut adalah [satu](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
Cari secara dalam talian temubual dengan saintis data yang membincangkan kerja harian mereka. Ini adalah [satu](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
## Tugasan
[Temu bual seorang saintis data](assignment.md)
[Temubual seorang saintis data](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Penafian**:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab bagi sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,136 +1,136 @@
# Membina model regresi menggunakan Scikit-learn: regresi empat cara
# Membangun model regresi menggunakan Scikit-learn: regresi dengan empat cara
## Nota Pemula
Regresi linear digunakan apabila kita ingin meramalkan **nilai berangka** (contohnya, harga rumah, suhu, atau jualan).
Ia berfungsi dengan mencari satu garis lurus yang paling mewakili hubungan antara ciri input dan output.
Regresi linear digunakan apabila kita ingin meramalkan **nilai berangka** (contohnya, harga rumah, suhu, atau jualan).
Ia berfungsi dengan mencari garis lurus yang paling mewakili hubungan antara ciri input dan output.
Dalam pelajaran ini, kita memberi tumpuan kepada memahami konsep terlebih dahulu sebelum meneroka teknik regresi yang lebih maju.
![Linear vs polynomial regression infographic](../../../../translated_images/ms/linear-polynomial.5523c7cb6576ccab.webp)
> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Kuiz pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
Dalam pelajaran ini, kita memberi tumpuan kepada memahami konsep sebelum meneroka teknik regresi yang lebih maju.
![Linear vs polynomial regression infographic](../../../../translated_images/ms/linear-polynomial.5523c7cb6576ccab.webp)
> Infografik oleh [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Kuiz Pra-ceramah](https://ff-quizzes.netlify.app/en/ml/)
> ### [Pelajaran ini tersedia dalam R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [Pelajaran ini juga tersedia dalam R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Pengenalan
Sejauh ini anda telah meneroka apa itu regresi dengan data contoh yang dikumpulkan daripada set data harga labu yang akan kita gunakan sepanjang pelajaran ini. Anda juga telah memvisualisasikannya menggunakan Matplotlib.
Setakat ini anda telah meneroka apa itu regresi dengan data contoh yang diambil dari set data harga labu yang akan kita gunakan sepanjang pelajaran ini. Anda juga telah memvisualisasikannya menggunakan Matplotlib.
Kini anda bersedia untuk menyelami lebih lanjut tentang regresi untuk ML. Walaupun visualisasi membolehkan anda memahami data, kuasa sebenar Pembelajaran Mesin datang daripada _melatih model_. Model dilatih menggunakan data sejarah untuk secara automatik menangkap kebergantungan data, dan membolehkan anda meramalkan keputusan untuk data baru, yang belum pernah dilihat oleh model.
Kini anda bersedia untuk menyelami lebih dalam regresi untuk ML. Walaupun visualisasi membolehkan anda memahami data, kuasa sebenar Pembelajaran Mesin datang dari _melatih model_. Model dilatih menggunakan data sejarah untuk secara automatik menangkap pergantungan data, dan membolehkan anda meramalkan hasil bagi data baru yang belum pernah dilihat model sebelum ini.
Dalam pelajaran ini, anda akan mempelajari lebih lanjut tentang dua jenis regresi: _regresi linear asas_ dan _regresi polinomial_, bersama dengan beberapa matematik asas yang mendasari teknik-teknik ini. Model-model tersebut akan membolehkan kita meramalkan harga labu bergantung pada data input yang berbeza.
Dalam pelajaran ini, anda akan belajar lebih lanjut tentang dua jenis regresi: _regresi linear asas_ dan _regresi polinomial_, bersama beberapa matematik yang mendasari teknik-teknik ini. Model-model ini akan membolehkan kita meramalkan harga labu bergantung kepada data input yang berbeza.
[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 Klik imej di atas untuk video ringkas gambaran keseluruhan regresi linear.
> 🎥 Klik imej di atas untuk tontonan video ringkas mengenai regresi linear.
> Sepanjang kurikulum ini, kami menganggap pengetahuan matematik adalah minimum, dan berusaha menjadikannya mudah diakses bagi pelajar yang datang dari bidang lain, jadi perhatikan nota, 🧮 panggilan keluar, rajah, dan alat pembelajaran lain untuk membantu pemahaman.
> Sepanjang kurikulum ini, kami menganggap pengetahuan matematik yang minima, dan berusaha menjadikannya mudah difahami oleh pelajar yang datang dari bidang lain, jadi perhatikan nota, 🧮 panggilan, rajah, dan alat pembelajaran lain untuk membantu pemahaman.
### Prasyarat
Anda kini sepatutnya sudah biasa dengan struktur data labu yang kita periksa. Anda boleh menjumpainya sudah dimuatkan dan dibersihkan dalam fail _notebook.ipynb_ pelajaran ini. Dalam fail tersebut, harga labu dipaparkan setiap bushel dalam bingkai data baru. Pastikan anda boleh menjalankan notebook ini dalam kernel di Visual Studio Code.
Anda sepatutnya kini sudah biasa dengan struktur data labu yang kita periksa. Anda boleh menemuinya telah dimuat dan dibersihkan dalam fail _notebook.ipynb_ pelajaran ini. Dalam fail tersebut, harga labu dipaparkan per bushel dalam bingkai data baru. Pastikan anda boleh menjalankan nota ini dalam kernel di Visual Studio Code.
### Persediaan
Sebagai peringatan, anda memuatkan data ini supaya boleh bertanya soalan mengenainya.
Sebagai peringatan, anda memuatkan data ini untuk menyoal soalan mengenainya.
- Bila masa terbaik untuk membeli labu?
- Berapakah harga yang boleh saya jangkakan untuk satu kotak labu mini?
- Perlukah saya membelinya dalam bakul separuh bushel atau dalam kotak 1 1/9 bushel?
Mari terus gali data ini.
- Bila masa terbaik untuk membeli labu?
- Berapakah harga yang boleh saya jangka bagi satu kotak labu mini?
- Patutkah saya membelinya dalam bakul setengah bushel atau kotak 1 1/9 bushel?
Mari terus menggali data ini.
Dalam pelajaran sebelum ini, anda telah mencipta bingkai data Pandas dan mengisinya dengan sebahagian daripada set data asal, menstandardkan harga mengikut bushel. Dengan melakukan itu, walau bagaimanapun, anda hanya dapat mengumpul kira-kira 400 titik data dan hanya untuk bulan musim luruh.
Dalam pelajaran sebelum ini, anda telah mencipta bingkai data Pandas dan mengisinya dengan sebahagian daripada set data asal, menstandardkan harga mengikut bushel. Dengan melakukan itu, bagaimanapun, anda hanya dapat mengumpul kira-kira 400 titik data dan hanya bagi bulan musim luruh.
Lihat data yang telah kami pra-muatkan di notebook yang disertakan dalam pelajaran ini. Data dipra-muat dan plot taburan awal telah dilakar untuk menunjukkan data bulan. Mungkin kita boleh dapatkan lebih banyak maklumat tentang sifat data dengan membersihkannya dengan lebih lanjut.
Lihat data yang telah kita muatkan dalam notebook yang disertakan pelajaran ini. Data telah dimuat dan scatterplot awal dipetakan untuk menunjukkan data bulan. Mungkin kita boleh mendapatkan sedikit lebih banyak butiran tentang sifat data dengan membersihkannya lebih lanjut.
## Garis regresi linear
Seperti yang anda pelajari dalam Pelajaran 1, tujuan latihan regresi linear adalah untuk dapat melakar garis yang:
Seperti yang anda pelajari dalam Pelajaran 1, tujuan latihan regresi linear adalah untuk dapat melakar garis untuk:
- **Menunjukkan hubungan pemboleh ubah**. Menunjukkan hubungan antara pemboleh ubah
- **Membuat ramalan**. Membuat ramalan tepat mengenai di mana titik data baru akan jatuh berbanding garis tersebut.
- **Menunjukkan hubungan pemboleh ubah**. Menunjukkan hubungan antara pemboleh ubah
- **Membuat ramalan**. Membuat ramalan tepat tentang di mana titik data baru akan jatuh berbanding garis tersebut.
Biasanya, **Regresi Kuasa Dua Terkecil (Least-Squares Regression)** digunakan untuk melukis jenis garis ini. Istilah "Kuasa Dua Terkecil" merujuk kepada proses meminimumkan jumlah ralat dalam model kita. Untuk setiap titik data, kita mengukur jarak menegak (dipanggil residual) antara titik sebenar dan garis regresi kita.
Biasanya, **Regresi Kuasa Dua Terkecil** digunakan untuk melakar jenis garis ini. Istilah "Least-Squares" merujuk kepada proses meminimumkan jumlah ralat dalam model kita. Untuk setiap titik data, kita mengukur jarak menegak (dipanggil residual) antara titik sebenar dan garis regresi kita.
Kita kuasakan kuadrat jarak ini atas dua sebab utama:
Kita kuasakan jarak ini untuk dua sebab utama:
1. **Magnitud melebihi Arah:** Kita mahu memperlakukan ralat -5 sama seperti ralat +5. Menguaskan kuadrat menjadikan semua nilai positif.
1. **Magnitud mengatasi Arah:** Kita ingin menganggap ralat -5 sama seperti ralat +5. Pengkuasaan menjadikan semua nilai positif.
2. **Menghukum Titik Luar Normal (Outliers):** Menguasakan kuadrat memberi lebih berat kepada ralat yang lebih besar, memaksa garis kekal lebih dekat dengan titik yang jauh.
2. **Menghukum Nilai Luar:** Pengkuasaan memberikan berat lebih pada ralat yang besar, memaksa garis kekal lebih dekat kepada titik yang jauh.
Kemudian kita menjumlahkan semua nilai kuasa dua ini. Matlamat kita adalah untuk mencari garis tertentu di mana jumlah akhir ini adalah paling kecil (nilai terkecil yang mungkin)—justeru nama "Kuasa Dua Terkecil".
Kita kemudian menambah semua nilai kuasa dua ini bersama. Matlamat kita adalah untuk mencari garis spesifik di mana jumlah akhir ini adalah paling kecil (nilai terkecil yang boleh)—oleh itu namanya "Least-Squares".
> **🧮 Tunjukkan saya matematiknya**
>
> Garis ini, dipanggil _garis kesesuaian terbaik_ boleh dinyatakan melalui [persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression):
> Garis ini, dipanggil _garis kesesuaian terbaik_ boleh dinyatakan oleh [persamaan](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
> ```
> Y = a + bX
> ```
>
> `X` adalah 'pemboleh ubah penerang'. `Y` adalah 'pemboleh ubah bergantung'. Kecerunan garis ialah `b` dan `a` adalah pintasan-y, yang merujuk kepada nilai `Y` apabila `X = 0`.
> `X` adalah 'pemboleh ubah penjelas'. `Y` adalah 'pemboleh ubah bersandar'. Kecerunan garis ialah `b` dan `a` ialah pintasan-y, iaitu nilai `Y` apabila `X = 0`.
>
>![kira kecerunan](../../../../translated_images/ms/slope.f3c9d5910ddbfcf9.webp)
>![calculate the slope](../../../../translated_images/ms/slope.f3c9d5910ddbfcf9.webp)
>
> Pertama, kira kecerunan `b`. Infografik oleh [Jen Looper](https://twitter.com/jenlooper)
>
> Dengan kata lain, dan merujuk kepada soalan asal data labu kita: "meramalkan harga labu setiap bushel mengikut bulan", `X` merujuk kepada harga dan `Y` merujuk kepada bulan jualan.
> Dalam kata lain, dan merujuk kepada soalan asal data labu kita: "membuat ramalan harga labu per bushel mengikut bulan", `X` merujuk kepada harga dan `Y` merujuk kepada bulan jualan.
>
>![lengkapkan persamaan](../../../../translated_images/ms/calculation.a209813050a1ddb1.webp)
>![complete the equation](../../../../translated_images/ms/calculation.a209813050a1ddb1.webp)
>
> Kira nilai Y. Jika anda membayar sekitar $4, sudah pasti April! Infografik oleh [Jen Looper](https://twitter.com/jenlooper)
> Kira nilai Y. Jika anda membayar sekitar $4, mestilah April! Infografik oleh [Jen Looper](https://twitter.com/jenlooper)
>
> Matematik yang mengira garis itu mesti menunjukkan kecerunan garis, yang juga bergantung pada pintasan, atau di mana `Y` berada apabila `X = 0`.
> Matematik yang mengira garis ini mesti menunjukkan kecerunan garis, yang juga bergantung kepada pintasan, iaitu tempat `Y` terletak apabila `X = 0`.
>
> Anda boleh melihat kaedah pengiraan untuk nilai-nilai ini di laman web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Lawati juga [kalkulator Least-squares](https://www.mathsisfun.com/data/least-squares-calculator.html) untuk lihat bagaimana nilai nombor mempengaruhi garis.
> Anda boleh melihat kaedah pengiraan nilai-nilai ini di laman web [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Juga lawati [kalkulator Least-squares ini](https://www.mathsisfun.com/data/least-squares-calculator.html) untuk melihat bagaimana nilai nombor mempengaruhi garis.
## Korelasi
Satu lagi istilah untuk difahami ialah **Pekali Korelasi** antara pemboleh ubah X dan Y yang diberi. Dengan menggunakan scatterplot, anda boleh dengan cepat memvisualisasikan pekali ini. Plot dengan titik data bertaburan dalam garis yang kemas mempunyai korelasi tinggi, tetapi plot dengan titik data bertaburan di mana-mana antara X dan Y mempunyai korelasi rendah.
Satu lagi istilah yang perlu difahami ialah **Pekali Korelasi** antara pemboleh ubah X dan Y yang diberikan. Dengan menggunakan scatterplot, anda boleh segera memvisualisasikan pekali ini. Plot dengan titik data yang bersepah membentuk garis kemas mempunyai korelasi tinggi, manakala plot dengan titik data yang bersepah di mana-mana sahaja antara X dan Y mempunyai korelasi rendah.
Model regresi linear yang baik adalah yang mempunyai Pekali Korelasi tinggi (lebih hampir kepada 1 berbanding 0) menggunakan kaedah Regresi Kuasa Dua Terkecil dengan garis regresi.
Model regresi linear yang baik adalah yang mempunyai Pekali Korelasi yang tinggi (lebih hampir kepada 1 daripada 0) menggunakan kaedah Regresi Least-Squares dengan garis regresi.
✅ Jalankan notebook yang disertakan dalam pelajaran ini dan lihat scatterplot Bulan ke Harga. Adakah data yang mengaitkan Bulan dengan Harga untuk jualan labu nampaknya mempunyai korelasi tinggi atau rendah, menurut tafsiran visual anda terhadap scatterplot? Adakah ia berubah jika anda menggunakan ukuran yang lebih terperinci sebagai ganti `Month`, contohnya *hari dalam setahun* (iaitu bilangan hari sejak awal tahun)?
✅ Jalankan notebook yang disertakan pelajaran ini dan lihat scatterplot Bulan ke Harga. Adakah data yang mengaitkan Bulan ke Harga bagi jualan labu kelihatan mempunyai korelasi tinggi atau rendah, mengikut tafsiran visual anda terhadap scatterplot tersebut? Adakah ia berubah jika anda menggunakan ukuran yang lebih terperinci daripada `Month`, contohnya *hari dalam tahun* (iaitu bilangan hari sejak awal tahun)?
Dalam kod di bawah, kita akan menganggap bahawa kita telah membersihkan data, dan memperoleh bingkai data bernama `new_pumpkins`, serupa dengan yang berikut:
Dalam kod di bawah, kita akan mengandaikan bahawa kita telah membersihkan data, dan memperoleh bingkai data yang dinamakan `new_pumpkins`, yang serupa dengan berikut:
ID | Bulan | DayOfYear | Jenis | Bandar | Pembungkusan | Harga Rendah | Harga Tinggi | Harga
---|-------|-----------|---------|------|---------|-----------|------------|-------
70 | 9 | 267 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | JENIS PIE | BALTIMORE | kotak 1 1/9 bushel | 15.0 | 15.0 | 13.636364
ID | Bulan | DayOfYear | Jenis | Bandar | Pakej | Harga Rendah | Harga Tinggi | Harga
---|-------|-----------|---------|------|---------|-----------|------------|-------
70 | 9 | 267 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 15.0 | 15.0 | 13.636364
71 | 9 | 267 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 18.0 | 18.0 | 16.363636
72 | 10 | 274 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 18.0 | 18.0 | 16.363636
73 | 10 | 274 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | JENIS PAI | BALTIMORE | Karton 1 1/9 bushel | 15.0 | 15.0 | 13.636364
> Kod untuk membersihkan data tersedia dalam [`notebook.ipynb`](notebook.ipynb). Kami telah melaksanakan langkah pembersihan yang sama seperti dalam pelajaran sebelumnya, dan telah mengira lajur `DayOfYear` menggunakan ungkapan berikut:
> Kod untuk membersihkan data boleh didapati dalam [`notebook.ipynb`](notebook.ipynb). Kita telah melakukan langkah pembersihan yang sama seperti dalam pelajaran sebelumnya, dan telah mengira lajur `DayOfYear` menggunakan ungkapan berikut:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
Sekarang anda sudah faham matematik di belakang regresi linear, mari bina model Regresi untuk melihat sama ada kita boleh meramalkan pakej labu mana yang akan mempunyai harga labu terbaik. Seseorang yang membeli labu untuk tapak labu perayaan mungkin mahukan maklumat ini untuk mengoptimumkan pembelian pakej labu mereka untuk tapak tersebut.
Sekarang bahawa anda memahami matematik di sebalik regresi linear, mari cipta model Regresi untuk melihat jika kita boleh meramalkan pakej mana labu yang akan mempunyai harga labu terbaik. Seseorang yang membeli labu untuk kawasan labu perayaan mungkin mahukan maklumat ini untuk mengoptimumkan pembelian pakej labu mereka.
## Mencari Korelasi
[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 Klik imej di atas untuk video ringkas gambaran keseluruhan korelasi.
> 🎥 Klik imej di atas untuk tontonan video ringkas mengenai korelasi.
Daripada pelajaran sebelumnya anda mungkin telah melihat bahawa harga purata untuk bulan yang berbeza kelihatan seperti ini:
Daripada pelajaran sebelum ini anda mungkin telah melihat bahawa harga purata bagi bulan-bulan berbeza kelihatan seperti ini:
<img alt="Average price by month" src="../../../../translated_images/ms/barchart.a833ea9194346d76.webp" width="50%"/>
Ini mencadangkan bahawa wujud beberapa korelasi, dan kita boleh cuba melatih model regresi linear untuk meramalkan hubungan antara `Month` dan `Price`, atau antara `DayOfYear` dan `Price`. Berikut ialah plot taburan yang menunjukkan hubungan kedua:
Ini mencadangkan bahawa harus ada korelasi tertentu, dan kita boleh cuba melatih model regresi linear untuk meramalkan hubungan antara `Month` dan `Price`, atau antara `DayOfYear` dan `Price`. Berikut adalah scatter plot yang menunjukkan hubungan yang kedua:
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ms/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ms/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
Mari lihat sama ada terdapat korelasi menggunakan fungsi `corr`:
Mari kita lihat jika terdapat korelasi menggunakan fungsi `corr`:
```python
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
Nampaknya korelasinya agak kecil, -0.15 mengikut `Month` dan -0.17 mengikut `DayOfMonth`, tetapi mungkin ada hubungan penting lain. Nampaknya terdapat kluster harga yang berbeza berhubung dengan varieti labu yang berbeza. Untuk mengesahkan hipotesis ini, mari plot setiap kategori labu menggunakan warna yang berbeza. Dengan memberikan parameter `ax` kepada fungsi plot `scatter` kita boleh plot semua titik pada graf yang sama:
Nampaknya korelasi agak kecil, -0.15 mengikut `Month` dan -0.17 mengikut `DayOfYear`, tetapi mungkin ada hubungan penting lain. Nampaknya terdapat kelompok harga yang berbeza berkaitan dengan pelbagai jenis labu. Untuk mengesahkan hipotesis ini, mari plotkan setiap kategori labu menggunakan warna yang berbeza. Dengan memberikan parameter `ax` kepada fungsi `scatter` kita boleh plot semua titik pada graf yang sama:
```python
ax=None
@ -139,41 +139,41 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ms/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ms/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
Siasatan kami mencadangkan bahawa varieti mempunyai kesan lebih ke atas harga keseluruhan berbanding tarikh jualan sebenar. Kita boleh lihat ini dengan graf bar:
Penyiasatan kita mencadangkan bahawa jenis labu mempunyai lebih kesan ke atas harga keseluruhan daripada tarikh jualan sebenar. Kita dapat lihat ini dengan graf bar:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="Bar graph of price vs variety" src="../../../../translated_images/ms/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
<img alt="Bar graph of price vs variety" src="../../../../translated_images/ms/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
Marilah kita fokus buat masa ini hanya pada satu varieti labu, iaitu 'jenis pai', dan lihat kesan tarikh ke atas harga:
Mari kita fokus buat masa ini pada satu jenis labu, iaitu 'jenis pai', dan lihat kesan tarikh ke atas harga:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ms/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/ms/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
Jika kita kira korelasi antara `Price` dan `DayOfYear` menggunakan fungsi `corr`, kita akan mendapat nilai sekitar `-0.27` - yang bermakna melatih model ramalan adalah wajar.
Jika kita sekarang mengira korelasi antara `Price` dan `DayOfYear` menggunakan fungsi `corr`, kita akan dapat nilai lebih kurang `-0.27` - yang bermakna melatih model ramalan adalah munasabah.
> Sebelum melatih model regresi linear, adalah penting untuk memastikan data kita bersih. Regresi linear tidak berfungsi dengan baik dengan nilai kosong, maka adalah wajar untuk membuang semua sel kosong:
> Sebelum melatih model regresi linear, adalah penting untuk memastikan data kita bersih. Regresi linear tidak berfungsi dengan baik dengan nilai hilang, maka adalah wajar untuk membuang semua sel kosong:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Pendekatan lain ialah mengisi nilai kosong tersebut dengan nilai purata daripada lajur berkenaan.
Pendekatan lain adalah mengisi nilai kosong tersebut dengan nilai purata dari lajur yang sepadan.
## Regresi Linear Mudah
[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 Klik imej di atas untuk video ringkas gambaran keseluruhan regresi linear dan polinomial.
> 🎥 Klik imej di atas untuk tontonan video ringkas mengenai regresi linear dan polinomial.
Untuk melatih model Regresi Linear kita, kita akan menggunakan perpustakaan **Scikit-learn**.
@ -182,32 +182,32 @@ from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Kita mulakan dengan memisahkan nilai input (ciri) dan output yang dijangka (label) ke dalam array numpy yang berasingan:
Kita mulakan dengan memisahkan nilai input (ciri) dan output yang dijangkakan (label) ke dalam array numpy yang berasingan:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Perhatikan bahawa kita terpaksa melakukan `reshape` ke atas data input supaya pakej Regresi Linear memahami dengan betul. Regresi Linear mengharapkan array 2D sebagai input, di mana setiap baris array sepadan dengan satu vektor ciri input. Dalam kes kita, kerana kita hanya ada satu input - kita perlukan array dengan bentuk N&times;1, di mana N ialah saiz dataset.
> Perhatikan bahawa kita perlu melakukan `reshape` ke atas data input supaya pakej Regresi Linear memahaminya dengan betul. Regresi Linear menjangka input dalam bentuk array 2D, di mana setiap baris array mewakili vektor ciri input. Dalam kes kita, kerana kita hanya ada satu input - kita perlukan array berbentuk N&times;1, di mana N adalah saiz dataset.
Kemudian, kita perlu membahagikan data kepada dataset latihan dan ujian, supaya kita boleh mengesahkan model kita selepas latihan:
Kemudian, kita perlu membahagikan data ke dalam dataset latihan dan ujian, supaya kita boleh mengesahkan model selepas latihan:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Akhir sekali, melatih model Regresi Linear sebenar hanya mengambil dua baris kod. Kita mentakrif objek `LinearRegression`, dan melatihnya pada data kita menggunakan kaedah `fit`:
Akhir sekali, melatih model Regresi Linear yang sebenar hanya mengambil dua baris kod. Kita mentakrifkan objek `LinearRegression`, dan memasukannya dengan data kita menggunakan kaedah `fit`:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Objek `LinearRegression` selepas `fit`-ting mengandungi semua koefisien regresi, yang boleh diakses menggunakan sifat `.coef_`. Dalam kes kami, terdapat hanya satu koefisien, yang sepatutnya sekitar `-0.017`. Ini bermakna harga kelihatan turun sedikit dengan masa, tetapi tidak terlalu banyak, sekitar 2 sen sehari. Kita juga boleh mengakses titik persilangan regresi dengan paksi Y menggunakan `lin_reg.intercept_` - ia akan sekitar `21` dalam kes kami, menunjukkan harga pada permulaan tahun.
Objek `LinearRegression` selepas `fit` mengandungi semua pekali regresi, yang boleh diakses menggunakan sifat `.coef_`. Dalam kes kami, hanya ada satu pekali, yang sepatutnya sekitar `-0.017`. Ini bermakna harga nampaknya menurun sedikit dengan masa, tetapi tidak terlalu banyak, sekitar 2 sen sehari. Kami juga boleh mengakses titik pertemuan regresi dengan paksi Y menggunakan `lin_reg.intercept_` - ia akan sekitar `21` dalam kes kami, menunjukkan harga pada awal tahun.
Untuk melihat sejauh mana ketepatan model kami, kita boleh meramalkan harga pada set data ujian, dan kemudian mengukur sejauh mana ramalan kami dekat dengan nilai yang dijangkakan. Ini boleh dilakukan menggunakan metrik galat kuasa dua purata punca (RMSE), iaitu punca bagi purata semua perbezaan kuasa dua antara nilai yang dijangkakan dan diramalkan.
Untuk melihat sejauh mana tepatnya model kami, kami boleh meramalkan harga pada dataset ujian, dan kemudian mengukur sejauh mana ramalan kami hampir dengan nilai yang dijangka. Ini boleh dilakukan menggunakan metrik ralat kuasa dua purata (RMSE), yang merupakan punca kuasa dua purata semua perbezaan kuasa dua antara nilai dijangka dan diramal.
```python
pred = lin_reg.predict(X_test)
@ -216,15 +216,15 @@ rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
Galat kami kelihatan sekitar 2 mata, iaitu ~17%. Tidak terlalu baik. Penunjuk lain bagi kualiti model ialah **koefisien penentuan**, yang boleh diperoleh seperti berikut:
Ralat kami nampaknya sekitar 2 mata, iaitu ~17%. Tidak begitu baik. Penunjuk lain tentang kualiti model adalah **koefisien penentuan**, yang boleh diperoleh seperti berikut:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Jika nilai adalah 0, ini bermakna model tidak mengambil kira data input, dan berfungsi sebagai *peramal linear yang paling teruk*, iaitu nilai purata hasil sahaja. Nilai 1 bermakna kita boleh meramalkan semua output yang dijangkakan dengan sempurna. Dalam kes kami, koefisien adalah sekitar 0.06, yang agak rendah.
Jika nilai adalah 0, ia bermakna model tidak mengambil kira data input, dan bertindak sebagai *peramal linear terburuk*, yang hanya nilai purata hasil. Nilai 1 bermaksud kita boleh meramalkan semua output yang dijangka dengan sempurna. Dalam kes kami, koefisien sekitar 0.06, yang agak rendah.
Kita juga boleh plot data ujian bersama dengan garis regresi untuk melihat dengan lebih baik bagaimana regresi berfungsi dalam kes kami:
Kami juga boleh memplot data ujian bersama dengan garis regresi untuk lebih jelas melihat bagaimana regresi berfungsi dalam kes kami:
```python
plt.scatter(X_test,y_test)
@ -235,17 +235,17 @@ plt.plot(X_test,pred)
## Regresi Polinomial
Satu lagi jenis Regresi Linear ialah Regresi Polinomial. Walaupun kadang-kadang terdapat hubungan linear antara pembolehubah - semakin besar labu dari segi isi padu, semakin tinggi harga - kadang-kadang hubungan ini tidak boleh digambarkan sebagai satah atau garis lurus.
Satu lagi jenis Regresi Linear ialah Regresi Polinomial. Walaupun kadangkala terdapat hubungan linear antara pembolehubah - semakin besar labu dari segi isi padu, semakin tinggi harga - kadangkala hubungan ini tidak dapat diplot sebagai satah atau garis lurus.
✅ Berikut adalah [beberapa contoh lagi](https://online.stat.psu.edu/stat501/lesson/9/9.8) data yang boleh menggunakan Regresi Polinomial
Lihat sekali lagi hubungan antara Tarikh dan Harga. Adakah plot taburan ini semestinya perlu dianalisis menggunakan garis lurus? Bukankah harga boleh berubah-ubah? Dalam kes ini, anda boleh cuba regresi polinomial.
Lihat sekali lagi hubungan antara Tarikh dan Harga. Adakah scatterplot ini nampak seperti perlu dianalisis dengan garis lurus? Tidakkah harga boleh berubah-ubah? Dalam kes ini, anda boleh cuba regresi polinomial.
✅ Polinomial adalah ekspresi matematik yang mungkin terdiri daripada satu atau lebih pembolehubah dan koefisien
✅ Polinomial ialah ungkapan matematik yang mungkin mengandungi satu atau lebih pembolehubah dan pekali
Regresi polinomial menghasilkan garis melengkung untuk menyesuaikan data bukan linear dengan lebih baik. Dalam kes kami, jika kami memasukkan pembolehubah kuasa dua `DayOfYear` ke dalam data input, kami sepatutnya dapat menyesuaikan data kami dengan lengkung parabola, yang akan mempunyai nilai minimum pada suatu titik dalam tahun.
Regresi polinomial menghasilkan garis melengkung untuk menyesuaikan data taklinear dengan lebih baik. Dalam kes kami, jika kami termasuk pembolehubah `DayOfYear` dikuasakan dua dalam data input, kami sepatutnya dapat menyesuaikan data kami dengan lengkung parabola, yang akan mempunyai minimum pada suatu titik dalam tahun tersebut.
Scikit-learn termasuk API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yang berguna untuk menggabungkan langkah-langkah pemprosesan data yang berbeza bersama-sama. Sebuah **pipeline** adalah rantai **penganggar**. Dalam kes kami, kami akan membuat pipeline yang pertama menambah ciri polinomial ke model kami, kemudian melatih regresi:
Scikit-learn menyediakan API [pipeline](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) yang berguna untuk menggabungkan beberapa langkah pemprosesan data bersama-sama. **Pipeline** ialah rantai **penganggar**. Dalam kes kami, kami akan membuat pipeline yang pertama-tama menambah ciri polinomial kepada model kami, dan kemudian melatih regresi:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -256,23 +256,45 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
Menggunakan `PolynomialFeatures(2)` bermakna kami akan memasukkan semua polinomial darjah kedua dari data input. Dalam kes kami ia hanya bermaksud `DayOfYear`<sup>2</sup>, tetapi jika diberikan dua pembolehubah input X dan Y, ini akan menambah X<sup>2</sup>, XY dan Y<sup>2</sup>. Kami juga boleh menggunakan polinomial darjah lebih tinggi jika mahu.
Menggunakan `PolynomialFeatures(2)` bermakna kami akan memasukkan semua polinomial darjah dua dari data input. Dalam kes kami ia hanya bermakna `DayOfYear`<sup>2</sup>, tetapi diberikan dua pembolehubah input X dan Y, ini akan menambah X<sup>2</sup>, XY dan Y<sup>2</sup>. Kami juga boleh menggunakan polinomial darjah lebih tinggi jika mahu.
Pipeline boleh digunakan sama seperti objek `LinearRegression` asal, iaitu kami boleh `fit` pipeline, dan kemudian menggunakan `predict` untuk mendapatkan hasil ramalan:
```python
pred = pipeline.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
Untuk melukis lengkung anggaran yang licin, kami menggunakan `np.linspace` untuk membuat julat nilai input yang seragam, bukannya melukis terus pada data ujian yang tidak tersusun (yang akan menghasilkan garis bergelombang):
```python
X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
y_range = pipeline.predict(X_range)
plt.scatter(X_test, y_test)
plt.plot(X_range, y_range)
```
Pipeline boleh digunakan dengan cara yang sama seperti objek `LinearRegression` asal, iaitu kami boleh `fit` pipeline, dan kemudian menggunakan `predict` untuk mendapatkan hasil ramalan. Berikut adalah graf yang menunjukkan data ujian dan lengkung anggaran:
Ini ialah graf yang menunjukkan data ujian, dan lengkung anggaran:
<img alt="Polynomial regression" src="../../../../translated_images/ms/poly-results.ee587348f0f1f60b.webp" width="50%" />
Dengan menggunakan Regresi Polinomial, kami boleh mendapatkan MSE yang sedikit lebih rendah dan koefisien penentuan yang lebih tinggi, tetapi tidak secara signifikan. Kami perlu mengambil kira ciri-ciri lain!
Menggunakan Regresi Polinomial, kami boleh mendapat RMSE yang sedikit lebih rendah dan koefisien penentuan yang lebih tinggi, tetapi tidak signifikan. Kami perlu mengambil kira ciri-ciri lain!
> Anda boleh melihat bahawa harga labu minima diperhatikan sekitar Halloween. Bagaimana anda boleh menerangkannya?
> Anda boleh lihat bahawa harga labu terendah diperhatikan sekitar Halloween. Bagaimana anda boleh menjelaskan ini?
🎃 Tahniah, anda baru sahaja mencipta model yang boleh membantu meramalkan harga labu pai. Anda mungkin boleh mengulangi prosedur yang sama untuk semua jenis labu, tetapi itu akan memenatkan. Mari kita pelajari sekarang cara mengambil kira varieti labu dalam model kita!
🎃 Tahniah, anda baru sahaja mencipta model yang boleh membantu meramalkan harga labu pai. Anda mungkin boleh mengulangi prosedur yang sama untuk semua jenis labu, tetapi itu akan melecehkan. Mari kita pelajari sekarang bagaimana untuk mengambil kira varieti labu dalam model kami!
## Ciri Kategori
Dalam dunia ideal, kami mahu dapat meramalkan harga untuk varieti labu yang berbeza menggunakan model yang sama. Namun, lajur `Variety` agak berbeza daripada lajur seperti `Month`, kerana ia mengandungi nilai bukan angka. Lajur sebegini dipanggil **kategori**.
Dalam dunia ideal, kami ingin dapat meramalkan harga untuk pelbagai varieti labu menggunakan model yang sama. Walau bagaimanapun, lajur `Variety` agak berbeza daripada lajur seperti `Month`, kerana ia mengandungi nilai bukan berangka. Lajur seperti ini dipanggil **kategori**.
[![ML untuk pemula - Ramalan Ciri Kategori dengan Regresi Linear](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML untuk pemula - Ramalan Ciri Kategori dengan Regresi Linear")
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 Klik imej di atas untuk video ringkas mengenai penggunaan ciri kategori.
@ -280,12 +302,12 @@ Di sini anda boleh lihat bagaimana harga purata bergantung pada varieti:
<img alt="Average price by variety" src="../../../../translated_images/ms/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
Untuk mengambil kira varieti, pertama kita perlu menukarnya ke bentuk nombor, atau **mengekod**nya. Terdapat beberapa cara kita boleh lakukannya:
Untuk mengambil kira varieti, kita terlebih dahulu perlu menukarnya kepada bentuk berangka, atau **m encode** ia. Terdapat beberapa cara kita boleh lakukan:
* Pengekodan **nombor mudah** akan membina jadual varieti yang berbeza, kemudian menggantikan nama varieti dengan indeks dalam jadual tersebut. Ini bukan idea terbaik untuk regresi linear, kerana regresi linear mengambil nilai nombor sebenar indeks, dan menambahkannya ke hasil, dengan darab koefisien tertentu. Dalam kes kami, hubungan antara nombor indeks dan harga jelas bukan linear, walaupun jika kami memastikan indeks disusun dalam cara tertentu.
* **Pengekodan one-hot** akan menggantikan lajur `Variety` dengan 4 lajur berbeza, satu untuk setiap varieti. Setiap lajur akan mengandungi `1` jika baris berkenaan adalah varieti tertentu, dan `0` jika tidak. Ini bermakna ada empat koefisien dalam regresi linear, satu untuk setiap varieti labu, yang bertanggungjawab untuk "harga permulaan" (atau lebih tepat "harga tambahan") bagi varieti berkenaan.
* **Pengekodan berangka** mudah akan membina jadual varieti yang berbeza, dan kemudian menggantikan nama varieti dengan indeks dalam jadual itu. Ini bukan idea terbaik untuk regresi linear, kerana regresi linear mengambil nilai berangka sebenar indeks, dan menambahkannya ke hasil, didarab dengan pekali tertentu. Dalam kes kami, hubungan antara nombor indeks dan harga jelas tidak linear, walaupun kami pastikan indeks diatur dalam sesuatu susunan tertentu.
* **One-hot encoding** akan menggantikan lajur `Variety` dengan 4 lajur berlainan, satu untuk setiap varieti. Setiap lajur akan mengandungi `1` jika baris sepadan adalah varieti tertentu, dan `0` jika tidak. Ini bermakna akan ada empat pekali dalam regresi linear, satu untuk setiap varieti labu, bertanggungjawab untuk "harga permulaan" (atau lebih tepat "harga tambahan") untuk varieti tersebut.
Kod di bawah menunjukkan bagaimana kita boleh mengekod varieti secara one-hot:
Kod di bawah menunjukkan bagaimana kita boleh one-hot encode varieti:
```python
pd.get_dummies(new_pumpkins['Variety'])
@ -302,14 +324,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
Untuk melatih regresi linear menggunakan varieti yang telah dienkod one-hot sebagai input, kita hanya perlu inisialisasi data `X` dan `y` dengan betul:
Untuk melatih regresi linear menggunakan varieti yang telah di-one-hot encode sebagai input, kita hanya perlu inisialisasi data `X` dan `y` dengan betul:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Selepas itu, kod adalah sama seperti yang kami gunakan sebelum ini untuk melatih Regresi Linear. Jika anda mencubanya, anda akan lihat galat kuasa dua purata hampir sama, tetapi koefisien penentuan jauh lebih tinggi (~77%). Untuk mendapatkan ramalan yang lebih tepat, kita boleh mengambil lebih banyak ciri kategori serta ciri numerik, seperti `Month` atau `DayOfYear`. Untuk mendapatkan satu tatasusunan besar ciri, kita boleh menggunakan `join`:
Baki kod adalah sama seperti yang kami gunakan sebelum ini untuk melatih Regresi Linear. Jika anda mencubanya, anda akan lihat bahawa ralat kuasa dua purata adalah lebih kurang sama, tetapi kami mendapat koefisien penentuan yang jauh lebih tinggi (~77%). Untuk mendapatkan ramalan yang lebih tepat, kita boleh mengambil kira lebih banyak ciri kategori, serta ciri berangka, seperti `Month` atau `DayOfYear`. Untuk mendapatkan satu tatasusunan ciri yang besar, kita boleh gunakan `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -319,11 +341,11 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Di sini kami juga mengambil kira `City` dan jenis `Package`, yang menghasilkan MSE 2.84 (10%), dan penentuan 0.94!
Di sini kami juga mengambil kira `City` dan jenis `Package`, yang memberikan kami RMSE 2.84 (10.5%), dan koefisien penentuan 0.94!
## Menggabungkan semuanya
## Menggabungkan Kesemuanya
Untuk membuat model terbaik, kita boleh menggunakan data gabungan (kategori yang dienkod one-hot + numerik) dari contoh di atas bersama Regresi Polinomial. Berikut adalah kod lengkap untuk kemudahan anda:
Untuk membuat model terbaik, kami boleh gunakan data gabungan (categorical yang di-one-hot encode + data berangka) dari contoh di atas bersama Regresi Polinomial. Berikut adalah kod lengkap untuk kemudahan anda:
```python
# sediakan data latihan
@ -333,27 +355,27 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# buat pembahagian latih-uji
# buat pecahan latih-uji
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# sediakan dan latih saluran paip
# sediakan dan latih laluan paip
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# ramalan keputusan untuk data ujian
# ramal keputusan untuk data ujian
pred = pipeline.predict(X_test)
# kira MSE dan penentuan
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
# kira RMSE dan penentuan
rmse = mean_squared_error(y_test, pred, squared=False)
print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
Ini sepatutnya memberikan koefisien penentuan terbaik hampir 97%, dan MSE=2.23 (~8% galat ramalan).
Ini sepatutnya memberikan koefisien penentuan terbaik hampir 97%, dan RMSE=2.23 (~8% ralat ramalan).
| Model | MSE | Penentuan |
| Model | RMSE | Penentuan |
|-------|-----|-----------|
| Linear `DayOfYear` | 2.77 (17.2%) | 0.07 |
| Polinomial `DayOfYear` | 2.73 (17.0%) | 0.08 |
@ -361,26 +383,26 @@ Ini sepatutnya memberikan koefisien penentuan terbaik hampir 97%, dan MSE=2.23 (
| Linear Semua ciri | 2.84 (10.5%) | 0.94 |
| Polinomial Semua ciri | 2.23 (8.25%) | 0.97 |
🏆 Tahniah! Anda telah mencipta empat model Regresi dalam satu pelajaran, dan meningkatkan kualiti model kepada 97%. Dalam bahagian akhir mengenai Regresi, anda akan belajar mengenai Regresi Logistik untuk menentukan kategori.
🏆 Tahniah! Anda telah mencipta empat model Regresi dalam satu pelajaran, dan meningkatkan kualiti model ke 97%. Dalam bahagian akhir mengenai Regresi, anda akan belajar tentang Regresi Logistik untuk menentukan kategori.
---
## 🚀Cabaran
Uji beberapa pembolehubah berbeza dalam buku nota ini untuk melihat bagaimana korelasi berkaitan dengan ketepatan model.
Uji beberapa pembolehubah berbeza dalam buku nota ini untuk melihat bagaimana korelasi berkait dengan ketepatan model.
## [Kuiz selepas kuliah](https://ff-quizzes.netlify.app/en/ml/)
## Ulasan & Belajar Sendiri
Dalam pelajaran ini kita belajar tentang Regresi Linear. Terdapat jenis Regresi penting lain. Baca tentang teknik Stepwise, Ridge, Lasso dan Elasticnet. Kursus yang baik untuk dipelajari ialah [Kursus Pembelajaran Statistik Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
Dalam pelajaran ini kami belajar mengenai Regresi Linear. Terdapat jenis Regresi penting lain. Baca mengenai teknik Stepwise, Ridge, Lasso dan Elasticnet. Kursus yang baik untuk dipelajari bagi mendalami adalah [kursus Pembelajaran Statistik Stanford](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Tugasan
## Tugasan
[Membina Model](assignment.md)
[Bangunkan Model](assignment.md)
---
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Penafian**:
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila maklum bahawa terjemahan automatik mungkin mengandungi ralat atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
Dokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya hendaklah dianggap sebagai sumber yang rasmi. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Regresi Linear dan Polinomial untuk Penetapan Harga Labu - Pelajaran 3\n",
"## Regresi Linear dan Polinomial untuk Penentuan Harga Labu - Pelajaran 3\n",
"\n",
"Muatkan perpustakaan dan dataset yang diperlukan. Tukarkan data kepada dataframe yang mengandungi subset data:\n",
"Muatkan perpustakaan dan dataset yang diperlukan. Tukar data kepada dataframe yang mengandungi subset data:\n",
"\n",
"- Hanya ambil labu yang dihargai mengikut unit bushel\n",
"- Tukarkan tarikh kepada bulan\n",
"- Kira harga sebagai purata daripada harga tinggi dan rendah\n",
"- Tukarkan harga untuk mencerminkan penetapan harga mengikut kuantiti bushel\n"
"- Hanya dapatkan labu yang dihargai berdasarkan ukur bushel\n",
"- Tukar tarikh kepada bulan\n",
"- Kira harga sebagai purata harga tertinggi dan terendah\n",
"- Tukar harga untuk mencerminkan harga berdasarkan kuantiti bushel\n"
]
},
{
@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Plot taburan mengingatkan kita bahawa kita hanya mempunyai data bulan dari Ogos hingga Disember. Kita mungkin memerlukan lebih banyak data untuk dapat membuat kesimpulan secara linear.\n"
"Carta sebar mengingatkan kita bahawa kita hanya mempunyai data bulan dari Ogos hingga Disember. Kita mungkin memerlukan lebih banyak data untuk dapat membuat kesimpulan secara linear.\n"
]
},
{
@ -447,7 +447,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"Mari kita lihat jika terdapat korelasi:\n"
]
},
{
"cell_type": "code",
@ -472,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Nampaknya korelasi agak kecil, tetapi terdapat hubungan lain yang lebih penting - kerana titik harga dalam plot di atas kelihatan mempunyai beberapa kelompok yang berbeza. Mari kita buat plot yang akan menunjukkan pelbagai jenis labu:\n"
"Nampaknya korelasi agak kecil, tetapi terdapat hubungan lain yang lebih penting - kerana titik harga dalam plot di atas nampaknya mempunyai beberapa kelompok yang berbeza. Mari buat satu plot yang akan menunjukkan pelbagai jenis labu:\n"
]
},
{
@ -535,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"Untuk sementara, mari tumpukan perhatian hanya pada satu jenis sahaja - **jenis pai**.\n"
]
},
{
"cell_type": "code",
@ -720,9 +724,9 @@
"source": [
"### Regresi Polinomial\n",
"\n",
"Kadangkala hubungan antara ciri-ciri dan hasil adalah secara semula jadi tidak linear. Sebagai contoh, harga labu mungkin tinggi pada musim sejuk (bulan=1,2), kemudian menurun pada musim panas (bulan=5-7), dan kemudian meningkat semula. Regresi linear tidak dapat mencari hubungan ini dengan tepat.\n",
"Kadang-kadang hubungan antara ciri dan keputusan adalah secara semulajadi tidak linear. Sebagai contoh, harga labu mungkin tinggi pada musim sejuk (bulan=1,2), kemudian menurun pada musim panas (bulan=5-7), dan kemudian naik semula. Regresi linear tidak dapat menemui hubungan ini dengan tepat.\n",
"\n",
"Dalam kes ini, kita boleh mempertimbangkan untuk menambah ciri-ciri tambahan. Cara mudah adalah dengan menggunakan polinomial daripada ciri input, yang akan menghasilkan **regresi polinomial**. Dalam Scikit Learn, kita boleh secara automatik mengira ciri-ciri polinomial menggunakan pipelines:\n"
"Dalam kes ini, kita boleh mempertimbangkan untuk menambah ciri tambahan. Cara mudah adalah menggunakan polinomial dari ciri input, yang akan menghasilkan **regresi polinomial**. Dalam Scikit Learn, kita boleh mengira ciri polinomial secara automatik menggunakan pipeline: \n"
]
},
{
@ -777,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
"plt.scatter(X_test,y_test)\n",
"plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
"X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
"y_range = pipeline.predict(X_range)\n",
"\n",
"plt.scatter(X_test, y_test)\n",
"plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pengekodan jenis\n",
"### Variasi pengekodan\n",
"\n",
"Dalam dunia ideal, kita ingin dapat meramalkan harga untuk pelbagai jenis labu menggunakan model yang sama. Untuk mengambil kira jenis, kita perlu menukarkannya kepada bentuk angka terlebih dahulu, atau **mengekod**. Terdapat beberapa cara untuk melakukannya:\n",
"Dalam dunia yang ideal, kita ingin dapat meramalkan harga untuk pelbagai jenis labu menggunakan model yang sama. Untuk mengambil kira jenis, kita terlebih dahulu perlu menukarnya ke dalam bentuk numerik, atau **pengekodan**. Terdapat beberapa cara yang kita boleh lakukan:\n",
"\n",
"* Pengekodan angka mudah yang akan membina jadual jenis yang berbeza, dan kemudian menggantikan nama jenis dengan indeks dalam jadual tersebut. Ini bukan idea terbaik untuk regresi linear, kerana regresi linear mengambil nilai angka indeks sebagai faktor, dan nilai angka tersebut mungkin tidak berkorelasi secara numerik dengan harga.\n",
"* Pengekodan satu-haba (one-hot encoding), yang akan menggantikan lajur `Variety` dengan 4 lajur berbeza, satu untuk setiap jenis, yang akan mengandungi 1 jika baris yang sepadan adalah jenis tertentu, dan 0 jika tidak.\n",
"* Pengekodan numerik mudah yang akan membina jadual pelbagai jenis, dan kemudian menggantikan nama jenis dengan indeks dalam jadual itu. Ini bukan idea terbaik untuk regresi linear, kerana regresi linear mengambil nilai numerik indeks itu kira, dan nilai numerik itu mungkin tidak berkorelasi secara numerik dengan harga.\n",
"* Pengekodan satu panas (one-hot encoding), yang akan menggantikan lajur `Variety` dengan 4 lajur berbeza, satu untuk setiap jenis, yang akan mengandungi 1 jika baris yang bersesuaian adalah dari jenis yang diberikan, dan 0 jika tidak.\n",
"\n",
"Kod di bawah menunjukkan bagaimana kita boleh mengekod satu-haba untuk jenis:\n"
"Kod di bawah menunjukkan bagaimana kita boleh melakukan one-hot encode untuk jenis:\n"
]
},
{
@ -940,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### Regresi Linear pada Variasi\n",
"### Regresi Linear pada Varieti\n",
"\n",
"Kita akan menggunakan kod yang sama seperti di atas, tetapi kali ini, bukannya `DayOfYear`, kita akan menggunakan variasi yang telah diubah kepada satu-hot-encoded sebagai input:\n"
"Kita akan menggunakan kod yang sama seperti di atas, tetapi bukannya `DayOfYear` kita akan menggunakan varieti yang telah dikodkan satu-panas sebagai input:\n"
]
},
{
@ -1023,7 +1030,7 @@
"source": [
"### Regresi Polinomial\n",
"\n",
"Regresi polinomial juga boleh digunakan dengan ciri kategori yang telah dikodkan satu-panas. Kod untuk melatih regresi polinomial pada dasarnya akan sama seperti yang telah kita lihat di atas.\n"
"Regresi polinomial juga boleh digunakan dengan ciri kategori yang telah di-one-hot-encode. Kod untuk melatih regresi polinomial secara asasnya adalah sama seperti yang telah kita lihat di atas.\n"
]
},
{
@ -1070,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk memastikan ketepatan, sila ambil maklum bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya harus dianggap sebagai sumber yang berwibawa. Untuk maklumat yang kritikal, terjemahan manusia profesional adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau salah tafsir yang timbul daripada penggunaan terjemahan ini.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Penafian**: \nDokumen ini telah diterjemahkan menggunakan perkhidmatan terjemahan AI [Co-op Translator](https://github.com/Azure/co-op-translator). Walaupun kami berusaha untuk ketepatan, sila ambil perhatian bahawa terjemahan automatik mungkin mengandungi kesilapan atau ketidaktepatan. Dokumen asal dalam bahasa asalnya hendaklah dianggap sebagai sumber yang sahih. Untuk maklumat penting, terjemahan profesional oleh manusia adalah disyorkan. Kami tidak bertanggungjawab atas sebarang salah faham atau tafsiran yang timbul daripada penggunaan terjemahan ini.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
@ -1100,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
"orig_nbformat": 2,
"coopTranslator": {
"original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
"translation_date": "2025-09-06T11:30:12+00:00",
"source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
"language_code": "ms"
}
"orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2

@ -36,8 +36,8 @@
"language_code": "tl"
},
"1-Introduction/4-techniques-of-ML/README.md": {
"original_hash": "9d91f3af3758fdd4569fb410575995ef",
"translation_date": "2025-09-05T18:18:13+00:00",
"original_hash": "84b1715a6be62ef1697351dcc5d7b567",
"translation_date": "2026-04-26T19:45:46+00:00",
"source_file": "1-Introduction/4-techniques-of-ML/README.md",
"language_code": "tl"
},
@ -90,8 +90,8 @@
"language_code": "tl"
},
"2-Regression/3-Linear/README.md": {
"original_hash": "26c53a922f1f1e8542b0ea41ff52221a",
"translation_date": "2026-04-20T17:49:29+00:00",
"original_hash": "8b776e731c35b171d316d01d0e7b1369",
"translation_date": "2026-04-26T19:45:17+00:00",
"source_file": "2-Regression/3-Linear/README.md",
"language_code": "tl"
},
@ -107,6 +107,12 @@
"source_file": "2-Regression/3-Linear/solution/Julia/README.md",
"language_code": "tl"
},
"2-Regression/3-Linear/solution/notebook.ipynb": {
"original_hash": "6781223ffbe8cfdaa38d0200f08e1288",
"translation_date": "2026-04-26T19:41:55+00:00",
"source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
"language_code": "tl"
},
"2-Regression/4-Logistic/README.md": {
"original_hash": "abf86d845c84330bce205a46b382ec88",
"translation_date": "2025-09-05T18:10:22+00:00",

@ -1,123 +1,125 @@
# Mga Teknik ng Machine Learning
Ang proseso ng pagbuo, paggamit, at pagpapanatili ng mga modelo ng machine learning at ang datos na ginagamit nito ay ibang-iba kumpara sa maraming iba pang mga workflow ng pag-develop. Sa araling ito, lilinawin natin ang proseso at ilalahad ang mga pangunahing teknik na kailangan mong malaman. Ikaw ay:
Ang proseso ng paggawa, paggamit, at pagpapanatili ng mga modelo ng machine learning at ng data na ginagamit nila ay isang napakaibang proseso kumpara sa maraming iba pang mga daloy ng pag-unlad. Sa leksyong ito, bibigyang-katuwiran natin ang proseso, at ilalahad ang mga pangunahing teknik na kailangan mong malaman. Iyong gagawin:
- Mauunawaan ang mga proseso sa likod ng machine learning sa mataas na antas.
- Susuriin ang mga pangunahing konsepto tulad ng 'mga modelo', 'mga prediksyon', at 'training data'.
- Maunawaan ang mga prosesong nagpapailalim sa machine learning sa mataas na antas.
- Tuklasin ang mga pangunahing konsepto tulad ng 'mga modelo', 'mga hula', at 'pagsasanay ng data'.
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
[![ML para sa mga baguhan - Mga Teknik ng Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML para sa mga baguhan - Mga Teknik ng Machine Learning")
[![ML for beginners - Techniques of Machine Learning](https://img.youtube.com/vi/4NGM0U2ZSHU/0.jpg)](https://youtu.be/4NGM0U2ZSHU "ML for beginners - Techniques of Machine Learning")
> 🎥 I-click ang imahe sa itaas para sa isang maikling video na tumatalakay sa araling ito.
> 🎥 I-click ang larawan sa itaas para sa isang maikling video na ginagabayan ang lektyong ito.
## Panimula
Sa mataas na antas, ang sining ng paglikha ng mga proseso ng machine learning (ML) ay binubuo ng ilang mga hakbang:
1. **Magpasya sa tanong**. Karamihan sa mga proseso ng ML ay nagsisimula sa pagtatanong ng tanong na hindi masagot ng simpleng conditional program o rules-based engine. Ang mga tanong na ito ay madalas na umiikot sa mga prediksyon batay sa koleksyon ng datos.
2. **Kolektahin at ihanda ang datos**. Upang masagot ang iyong tanong, kailangan mo ng datos. Ang kalidad at, minsan, dami ng iyong datos ang magtatakda kung gaano kahusay mong masasagot ang iyong tanong. Ang pag-visualize ng datos ay mahalagang aspeto ng yugtong ito. Kasama rin dito ang paghahati ng datos sa training at testing group upang makabuo ng modelo.
3. **Pumili ng paraan ng training**. Depende sa iyong tanong at sa likas na katangian ng iyong datos, kailangan mong pumili kung paano mo gustong i-train ang modelo upang pinakamahusay na maipakita ang datos at makagawa ng tumpak na prediksyon. Ang bahaging ito ng proseso ng ML ay nangangailangan ng tiyak na kadalubhasaan at, madalas, maraming eksperimento.
4. **I-train ang modelo**. Gamit ang iyong training data, gagamit ka ng iba't ibang algorithm upang i-train ang modelo na makilala ang mga pattern sa datos. Ang modelo ay maaaring gumamit ng internal weights na maaaring i-adjust upang bigyang-priyoridad ang ilang bahagi ng datos kaysa sa iba upang makabuo ng mas mahusay na modelo.
5. **Suriin ang modelo**. Gagamit ka ng datos na hindi pa nakikita (ang iyong testing data) mula sa nakolektang set upang makita kung paano gumagana ang modelo.
6. **Parameter tuning**. Batay sa performance ng iyong modelo, maaari mong ulitin ang proseso gamit ang iba't ibang parameter o variable na kumokontrol sa pag-uugali ng mga algorithm na ginamit upang i-train ang modelo.
7. **Mag-predict**. Gumamit ng bagong inputs upang subukan ang katumpakan ng iyong modelo.
1. **Magpasya sa tanong**. Karamihan sa mga proseso ng ML ay nagsisimula sa pagtatanong ng isang tanong na hindi masasagot ng simpleng programang de-kondisyunal o ng mga patakarang batay-sa-patakarang makina. Madalas na ang mga tanong na ito ay nakatuon sa mga hula batay sa isang koleksyon ng data.
2. **Kolektahin at ihanda ang data**. Para masagot mo ang iyong tanong, kailangan mo ng data. Ang kalidad at, minsan, dami ng iyong data ang magtatakda kung gaano kaayos mong masasagot ang iyong paunang tanong. Ang pag-visualize ng data ay isang mahalagang bahagi ng yugtong ito. Kabilang din sa yugtong ito ang paghati ng data sa isang pangkat ng pagsasanay at pagsusulit upang makabuo ng modelo.
3. **Pumili ng paraan ng pagsasanay**. Depende sa iyong tanong at sa katangian ng iyong data, kailangan mong piliin kung paano mo nais sanayin ang modelo upang pinakamahusay na maipakita ang iyong data at makagawa ng tumpak na mga hula laban dito. Ito ang bahagi ng iyong proseso ng ML na nangangailangan ng espesipikong kadalubhasaan at, madalas, ng maraming eksperimento.
4. **Sanayin ang modelo**. Gamit ang iyong data sa pagsasanay, gagamitin mo ang iba't ibang mga algorithm upang sanayin ang modelo na kilalanin ang mga pattern sa data. Maaaring gamitin ng modelo ang mga panloob na bigat na maaaring ayusin upang bigyang-pansin ang ilang bahagi ng data kaysa sa iba para makabuo ng mas mahusay na modelo.
5. **Suriin ang modelo**. Gagamitin mo ang data na hindi pa nasilipan dati (ang iyong testing data) mula sa iyong koleksyon upang makita kung paano gumagana ang modelo.
6. **Parameter tuning**. Batay sa pagganap ng modelo mo, maaari mong ulitin ang proseso gamit ang ibang mga parameter, o mga baryabol, na kumokontrol sa kilos ng mga algorithm na ginamit sa pagsasanay ng modelo.
7. **Mangguhula**. Gamitin ang mga bagong input para subukan ang katumpakan ng iyong modelo.
## Anong tanong ang dapat itanong
Ang mga computer ay partikular na mahusay sa pagtuklas ng mga nakatagong pattern sa datos. Ang kakayahang ito ay napakahalaga para sa mga mananaliksik na may mga tanong tungkol sa isang partikular na larangan na hindi madaling masagot sa pamamagitan ng paggawa ng conditionally-based rules engine. Halimbawa, sa isang actuarial na gawain, maaaring makagawa ang isang data scientist ng mga handcrafted rules tungkol sa mortality ng mga naninigarilyo kumpara sa mga hindi naninigarilyo.
Sanay ang mga computer sa pagtuklas ng mga nakatagong pattern sa data. Ang kapaki-pakinabang na ito ay napaka-kapaki-pakinabang para sa mga mananaliksik na may mga tanong tungkol sa isang tiyak na larangan na hindi madaling masagot sa pamamagitan ng paggawa ng kondisyonal na rules engine. Halimbawa, sa isang actuarial na gawain, maaaring makagawa ang isang data scientist ng mga gawang-kamay na mga patakaran tungkol sa mortalidad ng mga naninigarilyo kumpara sa hindi naninigarilyo.
Kapag maraming iba pang variable ang isinama sa equation, gayunpaman, maaaring mas epektibo ang isang ML model sa pag-predict ng mga future mortality rates batay sa nakaraang health history. Isang mas masayang halimbawa ay ang paggawa ng mga prediksyon sa panahon para sa buwan ng Abril sa isang partikular na lokasyon batay sa datos na kinabibilangan ng latitude, longitude, climate change, proximity sa dagat, mga pattern ng jet stream, at iba pa.
Gayunpaman, kapag maraming iba pang mga baryabol ang isinama sa ekwasyon, maaaring mas maging epektibo ang isang ML model upang mahulaan ang mga hinaharap na rate ng mortalidad batay sa nakaraang kasaysayan ng kalusugan. Isang mas masiglang halimbawa ay ang paggawa ng mga prediksyon sa panahon para sa buwan ng Abril sa isang tiyak na lokasyon, batay sa data na kinabibilangan ng latitude, longitude, pagbabago ng klima, kalapitan sa dagat, mga pattern ng jet stream, at iba pa.
✅ Ang [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) na ito tungkol sa mga weather models ay nagbibigay ng historical na perspektibo sa paggamit ng ML sa pagsusuri ng panahon.
✅ Ang [slide deck](https://www2.cisl.ucar.edu/sites/default/files/2021-10/0900%20June%2024%20Haupt_0.pdf) tungkol sa mga modelo ng panahon ay nag-aalok ng pangkasaysayang pananaw para sa paggamit ng ML sa pagsusuri ng panahon.
## Mga Gawain Bago Magbuo
## Mga gawain bago magtayo
Bago simulan ang pagbuo ng iyong modelo, may ilang mga gawain na kailangan mong tapusin. Upang masubukan ang iyong tanong at bumuo ng hypothesis batay sa mga prediksyon ng modelo, kailangan mong tukuyin at i-configure ang ilang elemento.
Bago magsimula na bumuo ng iyong modelo, may ilang mga gawain na kailangan mong tapusin. Para subukan ang iyong tanong at bumuo ng hipotesis batay sa mga hulang ginawa ng modelo, kailangan mong tukuyin at i-configure ang ilang mga elemento.
### Datos
### Data
Upang masagot ang iyong tanong nang may katiyakan, kailangan mo ng sapat na dami ng datos na may tamang uri. May dalawang bagay na kailangan mong gawin sa puntong ito:
Para masagot ang iyong tanong nang may katiyakan, kailangan mo ng sapat na dami ng tamang uri ng data. May dalawang bagay na kailangan mong gawin sa puntong ito:
- **Kolektahin ang datos**. Tandaan ang nakaraang aralin tungkol sa fairness sa data analysis, kolektahin ang iyong datos nang maingat. Maging aware sa mga pinagmulan ng datos na ito, anumang inherent biases na maaaring mayroon ito, at i-dokumento ang pinagmulan nito.
- **Ihanda ang datos**. May ilang hakbang sa proseso ng paghahanda ng datos. Maaaring kailanganin mong pagsamahin ang datos at i-normalize ito kung ito ay galing sa iba't ibang pinagmulan. Maaari mong pagandahin ang kalidad at dami ng datos sa pamamagitan ng iba't ibang paraan tulad ng pag-convert ng strings sa numbers (tulad ng ginagawa natin sa [Clustering](../../5-Clustering/1-Visualize/README.md)). Maaari ka ring bumuo ng bagong datos batay sa orihinal (tulad ng ginagawa natin sa [Classification](../../4-Classification/1-Introduction/README.md)). Maaari mong linisin at i-edit ang datos (tulad ng gagawin natin bago ang [Web App](../../3-Web-App/README.md) na aralin). Sa huli, maaaring kailanganin mo ring i-randomize at i-shuffle ito, depende sa iyong training techniques.
- **Kolektahin ang data**. Isinasaalang-alang ang nakaraang leksyon tungkol sa pagiging patas sa pagsusuri ng data, kolektahin ang iyong data nang maingat. Maging maingat sa mga pinagkuhanan ng data, anumang likas na pagkiling na maaaring mayroon ito, at idokumento ang pinagmulan nito.
- **Ihanda ang data**. Mayroong ilang mga hakbang sa proseso ng paghahanda ng data. Maaaring kailanganin mong pag-isa-isaing muli ang data at i-normalize ito kung galing ito sa iba't ibang pinagmulan. Maaari mong pagandahin ang kalidad at dami ng data sa pamamagitan ng iba't ibang paraan tulad ng pag-convert ng mga string sa numero (tulad ng ginagawa natin sa [Clustering](../../5-Clustering/1-Visualize/README.md)). Maaari ka ring lumikha ng bagong data, batay sa orihinal (tulad ng ginagawa natin sa [Classification](../../4-Classification/1-Introduction/README.md)). Maaari mo ring linisin at i-edit ang data (tulad ng gagawin natin bago ang leksyon sa [Web App](../../3-Web-App/README.md)). Panghuli, maaaring kailanganin mo ring i-randomize at i-shuffle ito, depende sa iyong mga teknik sa pagsasanay.
Pagkatapos kolektahin at iproseso ang iyong datos, maglaan ng sandali upang tingnan kung ang hugis nito ay magpapahintulot sa iyo na tugunan ang iyong nilalayong tanong. Maaaring ang datos ay hindi mag-perform nang maayos sa iyong ibinigay na gawain, tulad ng natuklasan natin sa aming [Clustering](../../5-Clustering/1-Visualize/README.md) na mga aralin!
Matapos kolektahin at iproseso ang iyong data, maglaan ng sandali upang tingnan kung ang hugis nito ay magbibigay-daan upang masagot ang iyong nais na tanong. Maaaring mangyari na hindi gagana nang maayos ang data sa iyong ibinigay na gawain, tulad ng nadiskubre natin sa mga aralin sa [Clustering](../../5-Clustering/1-Visualize/README.md)!
### Mga Feature at Target
### Mga Katangian at Target
Ang [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ay isang masusukat na katangian ng iyong datos. Sa maraming datasets, ito ay ipinapahayag bilang isang column heading tulad ng 'date', 'size', o 'color'. Ang iyong feature variable, karaniwang kinakatawan bilang `X` sa code, ay kumakatawan sa input variable na gagamitin upang i-train ang modelo.
Ang isang [feature](https://www.datasciencecentral.com/profiles/blogs/an-introduction-to-variable-and-feature-selection) ay isang nasusukat na katangian ng iyong data. Sa maraming dataset, ito ay ipinapahayag bilang isang ulo ng kolum tulad ng 'date', 'size', o 'color'. Ang iyong feature variable, karaniwang kinakatawan bilang `X` sa code, ay kumakatawan sa input variable na gagamitin upang sanayin ang modelo.
Ang target ay ang bagay na sinusubukan mong i-predict. Ang target, karaniwang kinakatawan bilang `y` sa code, ay kumakatawan sa sagot sa tanong na sinusubukan mong itanong sa iyong datos: sa Disyembre, anong **kulay** ng mga kalabasa ang magiging pinakamura? Sa San Francisco, anong mga kapitbahayan ang magkakaroon ng pinakamagandang presyo ng **real estate**? Minsan ang target ay tinutukoy din bilang label attribute.
Ang target ay isang bagay na sinusubukan mong hulaan. Ang target, karaniwang kinakatawan bilang `y` sa code, ay kumakatawan sa sagot sa tanong na sinusubukan mong itanong sa iyong data: sa Disyembre, anong **kulay** ng mga kalabasa ang magiging pinakamura? Sa San Francisco, anong mga kapitbahayan ang magkakaroon ng pinakamahusay na presyo sa real estate? Minsan tinutukoy din ang target bilang isang label attribute.
### Pagpili ng iyong feature variable
🎓 **Feature Selection at Feature Extraction** Paano mo malalaman kung aling variable ang pipiliin kapag bumubuo ng modelo? Malamang na dadaan ka sa proseso ng feature selection o feature extraction upang piliin ang tamang mga variable para sa pinaka-performant na modelo. Hindi sila pareho: "Ang feature extraction ay lumilikha ng mga bagong feature mula sa mga function ng orihinal na mga feature, samantalang ang feature selection ay nagbabalik ng subset ng mga feature." ([source](https://wikipedia.org/wiki/Feature_selection))
🎓 **Feature Selection and Feature Extraction** Paano mo malalaman kung aling variable ang pipiliin kapag bumubuo ng modelo? Marahil ay daraan ka sa proseso ng feature selection o feature extraction upang piliin ang tamang mga variable para sa pinakaepektibong modelo. Hindi sila pareho: "Ang Feature extraction ay lumilikha ng mga bagong feature mula sa mga function ng orihinal na feature, samantalang ang feature selection ay nagbabalik ng isang subset ng mga feature." ([pinagmulan](https://wikipedia.org/wiki/Feature_selection))
### I-visualize ang iyong datos
### I-visualize ang iyong data
Isang mahalagang aspeto ng toolkit ng data scientist ay ang kakayahang i-visualize ang datos gamit ang ilang magagaling na libraries tulad ng Seaborn o MatPlotLib. Ang pag-representa ng iyong datos nang biswal ay maaaring magbigay-daan sa iyo upang matuklasan ang mga nakatagong correlation na maaari mong magamit. Ang iyong mga visualization ay maaari ring makatulong sa iyo na matuklasan ang bias o hindi balanseng datos (tulad ng natuklasan natin sa [Classification](../../4-Classification/2-Classifiers-1/README.md)).
Isang mahalagang aspeto ng toolkit ng data scientist ay ang kapangyarihan na i-visualize ang data gamit ang ilang mga mahusay na library tulad ng Seaborn o MatPlotLib. Ang paglalarawan ng iyong data sa pamamagitan ng visual ay maaaring magbigay-daan sa iyong matuklasan ang mga nakatagong kaugnayan na maaari mong gamitin. Maaaring makatulong din ang iyong mga visualization upang matuklasan ang pagkiling o hindi balanseng data (tulad ng nadiskubre natin sa [Classification](../../4-Classification/2-Classifiers-1/README.md)).
### Hatiin ang iyong dataset
Bago mag-training, kailangan mong hatiin ang iyong dataset sa dalawa o higit pang bahagi na may hindi pantay na laki ngunit mahusay na kumakatawan sa datos.
Bago ang pagsasanay, kailangan mong hatiin ang iyong dataset sa dalawa o higit pang mga bahagi na hindi pantay ang laki ngunit mahusay na kumakatawan sa data.
- **Training**. Ang bahaging ito ng dataset ay ginagamit upang i-fit ang iyong modelo para i-train ito. Ang set na ito ay bumubuo ng karamihan ng orihinal na dataset.
- **Testing**. Ang test dataset ay isang independiyenteng grupo ng datos, madalas na kinukuha mula sa orihinal na datos, na ginagamit mo upang kumpirmahin ang performance ng nabuo na modelo.
- **Validating**. Ang validation set ay isang mas maliit na independiyenteng grupo ng mga halimbawa na ginagamit mo upang i-tune ang hyperparameters o architecture ng modelo upang mapabuti ito. Depende sa laki ng iyong datos at sa tanong na iyong tinatanong, maaaring hindi mo kailangan bumuo ng pangatlong set (tulad ng nabanggit natin sa [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)).
- **Training**. Ang bahaging ito ng dataset ang itinutugma sa iyong modelo upang sanayin ito. Ang set na ito ang bumubuo ng karamihan ng orihinal na dataset.
- **Testing**. Ang test dataset ay isang independiyenteng pangkat ng data, madalas na kinuha mula sa orihinal na data, na ginagamit mo upang kumpirmahin ang pagganap ng nabuo na modelo.
- **Validating**. Ang validation set ay isang mas maliit na independiyenteng pangkat ng mga halimbawa na ginagamit mo upang i-tune ang mga hyperparameter o arkitektura ng modelo upang mapabuti ito. Depende sa laki ng iyong data at ang tanong na iyong tinatanong, maaaring hindi mo kailangang bumuo ng ikatlong set na ito (tulad ng napansin natin sa [Time Series Forecasting](../../7-TimeSeries/1-Introduction/README.md)).
## Pagbuo ng Modelo
## Pagtatayo ng modelo
Gamit ang iyong training data, ang layunin mo ay bumuo ng modelo, o isang statistical na representasyon ng iyong datos, gamit ang iba't ibang algorithm upang **i-train** ito. Ang pag-train ng modelo ay inilalantad ito sa datos at nagbibigay-daan dito upang gumawa ng mga assumption tungkol sa mga pattern na natuklasan, na-validate, at tinanggap o tinanggihan.
Gamit ang iyong training data, ang layunin mo ay bumuo ng modelo, o estadistikang representasyon ng iyong data, gamit ang iba't ibang mga algorithm upang **sanayin** ito. Ang pagsasanay ng isang modelo ay nagpapakita nito sa data at pinapayagan itong gumawa ng mga palagay tungkol sa mga natukoy nitong pattern, sinusuri, at tinatanggap o tinatanggihan.
### Magpasya sa paraan ng training
### Magpasya sa paraan ng pagsasanay
Depende sa iyong tanong at sa likas na katangian ng iyong datos, pipili ka ng paraan upang i-train ito. Sa pamamagitan ng pagdaan sa [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html) - na ginagamit natin sa kursong ito - maaari mong tuklasin ang maraming paraan upang i-train ang modelo. Depende sa iyong karanasan, maaaring kailanganin mong subukan ang ilang iba't ibang paraan upang makabuo ng pinakamahusay na modelo. Malamang na dadaan ka sa proseso kung saan ang mga data scientist ay sinusuri ang performance ng modelo sa pamamagitan ng pagpapakain dito ng unseen data, pag-check ng accuracy, bias, at iba pang mga isyung nakakasira ng kalidad, at pagpili ng pinaka-angkop na paraan ng training para sa gawain.
Depende sa iyong tanong at sa katangian ng iyong data, pipili ka ng paraan upang sanayin ito. Sa pagsunod sa [Scikit-learn's documentation](https://scikit-learn.org/stable/user_guide.html) - na ginagamit natin sa kursong ito - maaari mong tuklasin ang maraming paraan sa pagsasanay ng modelo. Depende sa iyong karanasan, maaaring kailanganin mong subukan ang iba't ibang mga paraan upang mabuo ang pinakamahusay na modelo. Malamang na dadaan ka sa isang proseso kung saan sinusuri ng mga data scientist ang pagganap ng modelo sa pamamagitan ng pagsuplay dito ng mga hindi pa nakikitang data, sinusuri ang katumpakan, pagkiling, at iba pang mga isyu na nagpapababa ng kalidad, at pinipili ang pinakaangkop na paraan ng pagsasanay para sa gawain.
### I-train ang modelo
### Sanayin ang modelo
Gamit ang iyong training data, handa ka nang 'i-fit' ito upang lumikha ng modelo. Mapapansin mo na sa maraming ML libraries, makikita mo ang code na 'model.fit' - sa oras na ito mo ipapadala ang iyong feature variable bilang isang array ng mga halaga (karaniwang 'X') at isang target variable (karaniwang 'y').
Hawakan ang iyong training data, handa ka nang 'i-fit' ito upang lumikha ng modelo. Mapapansin mo na sa maraming ML libraries ay makikita mo ang code na 'model.fit' - dito mo ipapasa ang iyong feature variable bilang array ng mga halaga (karaniwang 'X') at ang target variable (karaniwang 'y').
### Suriin ang modelo
Kapag natapos na ang proseso ng training (maaari itong tumagal ng maraming iterations, o 'epochs', upang i-train ang malaking modelo), magagawa mong suriin ang kalidad ng modelo sa pamamagitan ng paggamit ng test data upang sukatin ang performance nito. Ang datos na ito ay isang subset ng orihinal na datos na hindi pa nasuri ng modelo. Maaari kang mag-print ng isang table ng metrics tungkol sa kalidad ng iyong modelo.
Kapag natapos na ang proseso ng pagsasanay (maaaring tumagal ito ng maraming pag-ulit, o 'epochs', upang masanay ang isang malaking modelo), magagawa mong suriin ang kalidad ng modelo gamit ang test data upang sukatin ang pagganap nito. Ang data na ito ay isang bahagi ng orihinal na data na hindi pa nasuri ng modelo. Maaari kang mag-print ng talaan ng mga sukatan tungkol sa kalidad ng iyong modelo.
🎓 **Model fitting**
Sa konteksto ng machine learning, ang model fitting ay tumutukoy sa katumpakan ng underlying function ng modelo habang sinusubukan nitong suriin ang datos na hindi nito pamilyar.
Sa konteksto ng machine learning, ang model fitting ay tumutukoy sa katumpakan ng pundasyong function ng modelo habang sinusubukan nitong suriin ang data na hindi nito alam.
🎓 Ang **Underfitting** at **Overfitting** ay mga karaniwang problema na nakakasira sa kalidad ng modelo, kung saan ang modelo ay hindi sapat na mahusay o masyadong mahusay. Nagdudulot ito ng modelo na gumawa ng mga prediksyon na masyadong malapit o masyadong maluwag na nakahanay sa training data nito. Ang overfit na modelo ay masyadong mahusay sa pag-predict ng training data dahil natutunan nito ang mga detalye at ingay ng datos nang sobra. Ang underfit na modelo ay hindi tumpak dahil hindi nito maayos na masuri ang training data nito o ang datos na hindi pa nito 'nakikita'.
🎓 Karaniwan ang mga problemang **underfitting** at **overfitting** na nagpapababa sa kalidad ng modelo, sapagkat ang modelo ay hindi sapat ang fit o sobra-sobra ang fit. Nagiging sanhi ito upang gumawa ang modelo ng mga hula nang masyadong malapit o masyadong malaya sa data ng pagsasanay. Ang overfit na modelo ay naghuhula nang napakahusay sa data ng pagsasanay dahil natutunan nito nang mabuti ang mga detalye at ingay ng data. Ang underfit na modelo ay hindi tumpak dahil hindi nito kayang suriin nang tumpak ang data ng pagsasanay o ang data na hindi pa nito 'nakikita'.
![overfitting model](../../../../1-Introduction/4-techniques-of-ML/images/overfitting.png)
![overfitting model](../../../../translated_images/tl/overfitting.1c132d92bfd93cb6.webp)
> Infographic ni [Jen Looper](https://twitter.com/jenlooper)
## Parameter tuning
Kapag natapos na ang iyong initial training, obserbahan ang kalidad ng modelo at isaalang-alang ang pagpapabuti nito sa pamamagitan ng pag-tweak ng 'hyperparameters' nito. Magbasa pa tungkol sa proseso [sa dokumentasyon](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
Kapag natapos na ang iyong paunang pagsasanay, obserbahan ang kalidad ng modelo at isaalang-alang na pagandahin ito sa pamamagitan ng pag-aayos ng mga 'hyperparameter'. Basahin pa tungkol sa proseso [sa dokumentasyon](https://docs.microsoft.com/en-us/azure/machine-learning/how-to-tune-hyperparameters?WT.mc_id=academic-77952-leestott).
## Prediksyon
## Prediction
Ito ang sandali kung saan maaari mong gamitin ang ganap na bagong datos upang subukan ang katumpakan ng iyong modelo. Sa isang 'applied' ML setting, kung saan bumubuo ka ng mga web asset upang gamitin ang modelo sa production, maaaring kasangkot sa prosesong ito ang pagkolekta ng user input (halimbawa, isang pindot ng button) upang magtakda ng variable at ipadala ito sa modelo para sa inference o pagsusuri.
Ito na ang sandali kung saan maaari mong gamitin ang ganap na bagong data upang subukan ang katumpakan ng iyong modelo. Sa isang 'applied' na setting ng ML, kung saan bumubuo ka ng mga web asset upang gamitin ang modelo sa produksyon, maaaring kasama sa prosesong ito ang pangangalap ng input mula sa user (isang pagpindot ng button, halimbawa) upang itakda ang variable at ipadala ito sa modelo para sa inference o pagsusuri.
Sa mga araling ito, matutuklasan mo kung paano gamitin ang mga hakbang na ito upang maghanda, bumuo, mag-test, mag-evaluate, at mag-predict - lahat ng mga galaw ng isang data scientist at higit pa, habang ikaw ay umuusad sa iyong paglalakbay upang maging isang 'full stack' ML engineer.
Sa mga araling ito, matutuklasan mo kung paano gamitin ang mga hakbang na ito upang ihanda, bumuo, subukan, suriin, at manghula — lahat ng mga galaw ng isang data scientist at higit pa, habang nagpapatuloy ka sa iyong paglalakbay upang maging isang 'full stack' ML engineer.
---
## 🚀Hamunin
Gumuhit ng flow chart na nagpapakita ng mga hakbang ng isang ML practitioner. Nasaan ka ngayon sa proseso? Saan mo inaasahan na mahihirapan ka? Ano ang tila madali para sa iyo?
Gumuhit ng flow chart na nagpapakita ng mga hakbang ng isang ML practitioner. Saan mo nakikita ang iyong sarili ngayon sa proseso? Saan mo inaasahan na mahihirapan? Ano ang tila madali para sa iyo?
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## Review at Pag-aaral sa Sarili
## Repaso at Sariling Pag-aaral
Maghanap online ng mga panayam sa mga data scientist na nag-uusap tungkol sa kanilang pang-araw-araw na trabaho. Narito ang [isa](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
Maghanap online ng mga panayam sa mga data scientist na nagsasalaysay ng kanilang araw-araw na gawain. Narito ang [isa](https://www.youtube.com/watch?v=Z3IjgbbCEfs).
## Takdang Aralin
[Magpanayam ng isang data scientist](assignment.md)
[Interview a data scientist](assignment.md)
---
**Paunawa**:
Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, tandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa kanyang katutubong wika ang dapat ituring na opisyal na pinagmulan. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na dulot ng paggamit ng pagsasaling ito.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Pagtanggi**:
Ang dokumentong ito ay isinalin gamit ang serbisyo ng AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa katumpakan, pakatandaan na ang awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o di-katumpakan. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na nagmumula sa paggamit ng pagsasaling ito.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -1,97 +1,97 @@
# Gumawa ng regression model gamit ang Scikit-learn: apat na paraan ng regression
# Bumuo ng regression model gamit ang Scikit-learn: apat na paraan ng regression
## Tala para sa Baguhan
Ginagamit ang linear regression kapag nais nating mahulaan ang isang **numerikal na halaga** (halimbawa, presyo ng bahay, temperatura, o benta).
Ito ay gumagana sa pamamagitan ng paghahanap ng tuwid na linya na pinakamainam na kumakatawan sa relasyon sa pagitan ng mga input na katangian at ng output.
Ginagamit ang linear regression kapag nais nating hulaan ang isang **numerikal na halaga** (halimbawa, presyo ng bahay, temperatura, o benta).
Ito ay gumagana sa pamamagitan ng paghahanap ng tuwid na linya na pinakamahusay na kumakatawan sa ugnayan ng mga input na tampok at ang output.
Sa araling ito, tututok tayo sa pag-unawa sa konsepto bago tuklasin ang mas advanced na mga teknik sa regression.
Sa araling ito, nakatuon tayo sa pag-unawa sa konsepto bago mag-explore ng mas advanced na mga teknik sa regression.
![Linear vs polynomial regression infographic](../../../../translated_images/tl/linear-polynomial.5523c7cb6576ccab.webp)
> Infographic mula kay [Dasani Madipalli](https://twitter.com/dasani_decoded)
> Infographic ni [Dasani Madipalli](https://twitter.com/dasani_decoded)
## [Pre-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
> ### [Available din ang araling ito sa R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
> ### [Available ang araling ito sa R!](../../../../2-Regression/3-Linear/solution/R/lesson_3.html)
### Panimula
Sa ngayon ay na-explore mo na kung ano ang regression gamit ang sample data mula sa pumpkin pricing dataset na gagamitin natin sa buong araling ito. Na-visualize mo rin ito gamit ang Matplotlib.
Sa ngayon ay na-explore mo na kung ano ang regression gamit ang sample na datos mula sa pumpkin pricing dataset na gagamitin natin sa buong araling ito. Naka-visualize mo rin ito gamit ang Matplotlib.
Ngayon, handa ka nang sumisid ng mas malalim sa regression para sa ML. Habang ang visualization ay nagpapahintulot sa iyo na maunawaan ang data, ang totoong kapangyarihan ng Machine Learning ay nagmumula sa _pagsasanay ng mga modelo_. Ang mga modelo ay sinasanay gamit ang makasaysayang data upang awtomatikong makuha ang mga dependency ng data, at pinapayagan kang mahulaan ang mga resulta para sa bagong data na hindi pa nakita ng modelo.
Ngayon ay handa ka nang mas malalim na sumisid sa regression para sa ML. Habang ang visualization ay nagpapahintulot sa iyo na maintindihan ang datos, ang tunay na lakas ng Machine Learning ay nagmumula sa _pagsasanay ng mga modelo_. Ang mga modelo ay sinasanay sa makasaysayang datos upang awtomatikong mahuli ang mga depedensya ng datos, at nagpapahintulot sa iyo na hulaan ang mga resulta para sa bagong datos na hindi pa nakita ng modelo.
Sa araling ito, matututuhan mo pa ang tungkol sa dalawang uri ng regression: _basic linear regression_ at _polynomial regression_, kasama ang ilan sa matematika sa likod ng mga teknik na ito. Papayagan tayo ng mga modelong ito na mahulaan ang presyo ng kalabasa depende sa iba't ibang input na datos.
Sa araling ito, matututunan mo ang tungkol sa dalawang uri ng regression: _basic linear regression_ at _polynomial regression_, kasama ang ilan sa matematika sa likod ng mga teknik na ito. Ang mga modelong ito ang magpapahintulot sa atin na hulaan ang presyo ng kalabasa depende sa iba't ibang input na datos.
[![ML for beginners - Understanding Linear Regression](https://img.youtube.com/vi/CRxFT8oTDMg/0.jpg)](https://youtu.be/CRxFT8oTDMg "ML for beginners - Understanding Linear Regression")
> 🎥 I-click ang larawan sa itaas para sa maikling video overview ng linear regression.
> 🎥 I-click ang larawang nasa itaas para sa maikling video overview ng linear regression.
> Sa buong kurikulum na ito, ipinapalagay namin ang minimal na kaalaman sa matematika, at layuning gawing accessible ito para sa mga estudyanteng galing sa ibang larangan, kaya panoorin ang mga tala, 🧮 callouts, diagram, at iba pang mga kagamitan sa pagkatuto upang makatulong sa pag-unawa.
> Sa buong kurikulum na ito, inaasahan namin ang minimal na kaalaman sa matematika, at layuning gawing accessible para sa mga estudyanteng nagmula sa ibang larangan, kaya panoorin ang mga tala, 🧮 callouts, mga diagram, at iba pang mga learning tools para makatulong sa pag-unawa.
### Paunang Kaalaman
### Mga Kinakailangang Kaalaman
Dapat pamilyar ka na ngayon sa estruktura ng pumpkin data na sinusuri natin. Maaari mo itong makita na naka-preload at malinis na sa _notebook.ipynb_ file ng araling ito. Sa file, ipinapakita ang presyo ng kalabasa kada bushel sa isang bagong data frame. Siguraduhing kaya mong patakbuhin ang mga notebook na ito sa kernels ng Visual Studio Code.
Dapat pamilyar ka na sa istruktura ng pumpkin data na sinusuri natin. Mahahanap mo ito nang naka-preload at na-preclean sa _notebook.ipynb_ file ng araling ito. Sa file, ang presyo ng kalabasa ay ipinapakita kada bushel sa isang bagong data frame. Siguraduhing kaya mong patakbuhin ang mga notebook na ito sa kernels sa Visual Studio Code.
### Paghahanda
Paalala, ini-load mo ang datos na ito upang makapagtanong tungkol dito.
Bilang paalala, niloload mo ang datos na ito upang makapagtanong tungkol dito.
- Kailan ang pinakamainam na oras para bumili ng kalabasa?
- Anong presyo ang aasahan ko para sa isang kahon ng miniature pumpkins?
- Dapat ba akong bumili sa mga half-bushel baskets o sa 1 1/9 bushel na kahon?
Patuloy nating tuklasin ang datos na ito.
- Kailan ang pinakamagandang oras para bumili ng mga kalabasa?
- Anong presyo ang maaasahan ko para sa isang kahon ng miniature pumpkins?
- Dapat ko ba silang bilhin sa half-bushel baskets o sa 1 1/9 bushel na kahon?
Patuloy tayong magsiyasat sa datos na ito.
Sa nakaraang aralin, gumawa ka ng Pandas data frame at pinunan ito gamit ang bahagi ng orihinal na dataset, na na-standardize ang pagpepresyo base sa bushel. Sa paggawa noon, nakalikom ka lang ng humigit-kumulang 400 datapoints at para lamang sa mga buwan ng taglagas.
Sa nakaraang aralin, gumawa ka ng Pandas data frame at pinuno ito gamit ang bahagi ng orihinal na dataset, na standardized ang presyo sa bushel. Sa paggawa niyan, nakalap mo lamang ang humigit-kumulang 400 datapoints at para lang sa mga buwan ng tag-lagas.
Tingnan ang data na preloaded sa kasamang notebook ng araling ito. Ang data ay naka-preload at unang scatterplot ang ginawa upang ipakita ang data ng buwan. Marahil, makakakuha tayo ng mas detalyadong impormasyon tungkol sa kalikasan ng data sa pamamagitan ng masusing paglilinis nito.
Tingnan ang datos na naka-preload sa notebook na kasama ng araling ito. Ang datos ay naka-preload at may inisyal na scatterplot na nagpapakita ng data ng buwan. Marahil maaari tayong makakuha ng kaunting detalye tungkol sa kalikasan ng datos sa pamamagitan ng paglilinis nito nang mas maigi.
## Isang linya ng linear regression
Gaya ng iyong natutunan sa Lesson 1, ang layunin ng linear regression exercise ay maging kaya mong iguhit ang isang linya upang:
Gaya ng natutunan mo sa Aralin 1, ang layunin ng linear regression exercise ay maging kaya mong i-plot ang isang linya upang:
- **Ipakita ang relasyon ng mga variable**. Ipakita ang relasyon sa pagitan ng mga variable
- **Gumawa ng prediksyon**. Gumawa ng tumpak na prediksyon kung saan mahuhulog ang isang bagong datapoint kaugnay ng linyang iyon.
- **Ipakita ang relasyon ng mga variable**. Ipakita ang ugnayan sa pagitan ng mga variable
- **Gumawa ng mga hula**. Gumawa ng tumpak na mga hula kung saan babagsak ang bagong datapoint kaugnay ng linyang iyon.
Karaniwan sa **Least-Squares Regression** na gumuhit ng ganitong uri ng linya. Ang terminong "Least-Squares" ay tumutukoy sa proseso ng pagbabawas ng kabuuang error sa ating modelo. Para sa bawat data point, sinusukat natin ang patayong distansya (tinatawag na residual) sa pagitan ng aktwal na punto at ng ating regression line.
Karaniwan sa **Least-Squares Regression** ang gumuhit ng ganitong uri ng linya. Ang terminong "Least-Squares" ay tumutukoy sa proseso ng pagbawas ng kabuuang error sa ating modelo. Para sa bawat data point, sinusukat natin ang patayong distansya (tinatawag na residual) sa pagitan ng aktwal na punto at ng ating regression line.
Pinapangkat natin ang mga distansyang ito sa pamamagitan ng pag-square ng mga ito para sa dalawang pangunahing dahilan:
Pinapa-square natin ang mga distansyang ito para sa dalawang pangunahing dahilan:
1. **Magnitude higit sa Direksyon:** Gusto nating tratuhin ang error na -5 nang pareho sa error na +5. Ang pag-square ay nagpapabago ng lahat ng halaga upang maging positibo.
1. **Laki higit sa Direksyon:** Gusto nating pantayin ang error ng -5 at +5. Ang pag-square ay ginagawa lahat ng halaga na positibo.
2. **Pagpaparusa sa Outliers:** Ang pag-square ay nagbibigay ng mas malaking timbang sa malalaking errors, na pinipilit ang linya na manatili na mas malapit sa mga puntong malayo.
2. **Pagpaparusa sa mga Outlier:** Ang pag-square ay nagbibigay ng mas malaking timbang sa malalaking error, kaya pinipilit ang linya na manatiling mas malapit sa mga puntos na malayo.
Pagkatapos ay pinag-samasama natin ang lahat ng squared na halaga. Ang layunin natin ay hanapin ang partikular na linya kung saan ang huling kabuuan ay pinakamaiksi (pinakamaliit na posibleng halaga)—kaya tinawag itong "Least-Squares".
Pinagsasama-sama natin ang lahat ng squared na mga halaga. Ang layunin ay mahanap ang partikular na linya kung saan ang kabuuang sum na ito ay pinakamababa (ang pinakamaliit na posibleng halaga)—kaya't ang pangalan na "Least-Squares."
> **🧮 Ipakita sa akin ang matematika**
>
> **🧮 Ipakita ang matematika**
>
> Ang linyang ito, na tinatawag na _line of best fit_ ay maaaring ipahayag gamit ang [isang ekwasyon](https://en.wikipedia.org/wiki/Simple_linear_regression):
>
>
> ```
> Y = a + bX
> ```
>
> `X` ay ang 'explanatory variable'. `Y` ay ang 'dependent variable'. Ang slope ng linya ay `b` at `a` ang y-intercept, na tumutukoy sa halaga ng `Y` kapag `X = 0`.
>
>![calculate the slope](../../../../translated_images/tl/slope.f3c9d5910ddbfcf9.webp)
>
> Una, kalkulahin ang slope `b`. Infographic mula kay [Jen Looper](https://twitter.com/jenlooper)
>
> Sa ibang salita, at ayon sa orihinal na tanong sa data ng kalabasa: "hulaan ang presyo ng kalabasa kada bushel ayon sa buwan", ang `X` ay tumutukoy sa presyo at ang `Y` ay tumutukoy sa buwan ng pagbebenta.
>
>![complete the equation](../../../../translated_images/tl/calculation.a209813050a1ddb1.webp)
>
> Kalkulahin ang halaga ng Y. Kung nagbabayad ka ng nasa halagang $4, siguradong Abril iyon! Infographic mula kay [Jen Looper](https://twitter.com/jenlooper)
>
> Kinakailangang ipakita ng matematika na kumukuwenta sa linya ang slope nito, na nakabase rin sa intercept, o kung saan matatagpuan ang `Y` kapag `X = 0`.
>
> Maaari mong obserbahan ang paraan ng pagkalkula ng mga halagang ito sa website ng [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html). Bisitahin din ang [Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) upang makita kung paano naaapektuhan ng halaga ng mga numero ang linya.
>
> `X` ay ang 'explanatory variable'. `Y` ay ang 'dependent variable'. Ang slope ng linya ay `b` at ang `a` ay ang y-intercept, na tumutukoy sa halaga ng `Y` kapag `X = 0`.
>
>![calculate the slope](../../../../translated_images/tl/slope.f3c9d5910ddbfcf9.webp)
>
> Una, kalkulahin ang slope na `b`. Infographic ni [Jen Looper](https://twitter.com/jenlooper)
>
> Sa madaling salita, at tumutukoy sa orihinal na tanong ng pumpkin data: "hulaan ang presyo ng kalabasa kada bushel kada buwan", ang `X` ay tumutukoy sa presyo at ang `Y` ay tumutukoy sa buwan ng pagbebenta.
>
>![complete the equation](../../../../translated_images/tl/calculation.a209813050a1ddb1.webp)
>
> Kalkulahin ang halaga ng Y. Kung nagbabayad ka ng nasa $4, dapat ay Abril! Infographic ni [Jen Looper](https://twitter.com/jenlooper)
>
> Ang matematika na kinakalkula ang linya ay dapat magpakita ng slope ng linya, na nakadepende rin sa intercept, o kung saan matatagpuan ang `Y` kapag `X = 0`.
>
> Maaari mong obserbahan ang paraan ng pagkalkula sa [Math is Fun](https://www.mathsisfun.com/data/least-squares-regression.html) na website. Bisitahin din ang [this Least-squares calculator](https://www.mathsisfun.com/data/least-squares-calculator.html) para makita kung paano naaapektuhan ng mga halaga ng numero ang linya.
## Korelasyon
Isa pang term na kailangang maunawaan ay ang **Correlation Coefficient** sa pagitan ng mga variable na X at Y. Sa pamamagitan ng scatterplot, madali mong ma-visualize ang coefficient na ito. Ang plot na may mga datapoints na nakaayos sa isang maayos na linya ay may mataas na korelasyon, ngunit ang isang plot na may datapoints na kalat-kalat sa pagitan ng X at Y ay may mababang korelasyon.
Isa pang terminong kailangan maunawaan ay ang **Correlation Coefficient** sa pagitan ng ibinigay na X at Y na mga variable. Gamit ang scatterplot, madali mong makikita ang coefficient na ito. Ang plot na may mga datapoint na nakaayos sa isang maayos na linya ay may mataas na korelasyon, ngunit ang plot na may mga datapoint na nagkalat saan-saan sa pagitan ng X at Y ay may mababang korelasyon.
Ang isang magandang linear regression model ay yaong may mataas (mas malapit sa 1 kaysa 0) na Correlation Coefficient gamit ang Least-Squares Regression method na may regression line.
Ang isang magandang linear regression model ay ang may mataas (mas malapit sa 1 kaysa 0) na Correlation Coefficient gamit ang Least-Squares Regression method at may regression line.
✅ Patakbuhin ang notebook na kasama sa araling ito at tingnan ang scatterplot ng Month to Price. Mukhang mataas ba o mababa ang korelasyon ng data sa pagitan ng Month at Price para sa benta ng kalabasa, ayon sa iyong visual na interpretasyon ng scatterplot? Nagbabago ba ito kung gagamit ka ng mas detalyadong sukat sa halip na `Month`, hal. *araw ng taon* (ibig sabihin bilang ng mga araw mula simula ng taon)?
✅ Patakbuhin ang notebook na kasama ng araling ito at tingnan ang Month to Price scatterplot. Mukhang mataas o mababa ang korelasyon ng data ng Month to Price para sa pumpkin sales ayon sa iyong visual na interpretasyon ng scatterplot? Nagbabago ba ito kung gagamitin mo ang mas masusing sukat gaya ng `day of the year` (ibig sabihin ay bilang ng mga araw mula sa simula ng taon)?
Sa code sa ibaba, ipapalagay natin na malinis na ang data, at nakuha natin ang data frame na tinatawag na `new_pumpkins`, katulad ng sumusunod:
Sa code sa ibaba, ipagpapalagay natin na nilinis na natin ang datos, at nakakuha ng data frame na tinawag na `new_pumpkins`, na katulad ng sumusunod:
ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Price
---|-------|-----------|---------|------|---------|-----------|------------|-------
@ -101,25 +101,25 @@ ID | Month | DayOfYear | Variety | City | Package | Low Price | High Price | Pri
73 | 10 | 274 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 17.0 | 17.0 | 15.454545
74 | 10 | 281 | PIE TYPE | BALTIMORE | 1 1/9 bushel cartons | 15.0 | 15.0 | 13.636364
> Ang code para linisin ang data ay makikita sa [`notebook.ipynb`](notebook.ipynb). Ginawa namin ang parehong mga hakbang sa paglilinis gaya ng sa nakaraang aralin, at nakalkula ang kolum na `DayOfYear` gamit ang sumusunod na expression:
> Ang code para linisin ang data ay makukuha sa [`notebook.ipynb`](notebook.ipynb). Ginawa namin ang parehong hakbang sa paglilinis tulad ng sa nakaraang aralin, at nakalkula ang `DayOfYear` column gamit ang sumusunod na ekspresyon:
```python
day_of_year = pd.to_datetime(pumpkins['Date']).apply(lambda dt: (dt-datetime(dt.year,1,1)).days)
```
Ngayon na may pagkaunawa ka sa matematika sa likod ng linear regression, gumawa tayo ng Regression model upang makita kung kaya nating hulaan kung aling package ng mga kalabasa ang may pinakamagandang presyo. Ang isang bumibili ng mga kalabasa para sa isang pumpkin patch sa pista ay maaaring gustong malaman ito upang mapabuti ang kanilang mga pagbili ng mga package para sa patch.
Ngayon na naiintindihan mo na ang matematika sa likod ng linear regression, gumawa tayo ng Regression model upang makita kung kaya nating hulaan kung aling pakete ng kalabasa ang may pinakamagandang presyo. Ang sinumang bibili ng mga kalabasa para sa holiday pumpkin patch ay maaaring gusto ang impormasyong ito upang ma-optimize ang kanilang pagbili ng mga pakete ng kalabasa.
## Paghahanap ng Korelasyon
## Naghahanap ng Korelasyon
[![ML for beginners - Looking for Correlation: The Key to Linear Regression](https://img.youtube.com/vi/uoRq-lW2eQo/0.jpg)](https://youtu.be/uoRq-lW2eQo "ML for beginners - Looking for Correlation: The Key to Linear Regression")
> 🎥 I-click ang larawan sa itaas para sa maikling video overview ng korelasyon.
Mula sa nakaraang aralin, marahil ay nakita mo na ang karaniwang presyo para sa iba't ibang buwan ay ganito:
Mula sa nakaraang aralin, marahil ay nakita mo na ang average na presyo para sa iba't ibang buwan ay ganito:
<img alt="Average price by month" src="../../../../translated_images/tl/barchart.a833ea9194346d76.webp" width="50%"/>
Ipinapahiwatig nito na dapat may korelasyon, at maaari nating subukan ang pagsasanay ng linear regression model upang mahulaan ang relasyon sa pagitan ng `Month` at `Price`, o sa pagitan ng `DayOfYear` at `Price`. Narito ang scatter plot na nagpapakita ng huling relasyon:
Ipinapahiwatig nito na dapat mayroong ilang korelasyon, at maaari nating subukang magsanay ng linear regression model upang hulaan ang relasyon sa pagitan ng `Month` at `Price`, o sa pagitan ng `DayOfYear` at `Price`. Narito ang scatter plot na nagpapakita ng huli na relasyon:
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/tl/scatter-dayofyear.bc171c189c9fd553.webp" width="50%" />
@ -129,8 +129,8 @@ Tingnan natin kung may korelasyon gamit ang `corr` function:
print(new_pumpkins['Month'].corr(new_pumpkins['Price']))
print(new_pumpkins['DayOfYear'].corr(new_pumpkins['Price']))
```
Mukhang maliit ang korelasyon, -0.15 base sa `Month` at -0.17 base sa `DayOfMonth`, ngunit maaaring may isa pang mahalagang relasyon. Mukhang may iba't ibang cluster ng mga presyo na tumutugma sa iba't ibang varieties ng kalabasa. Upang kumpirmahin ito, ipapakita natin bawat kategorya ng kalabasa gamit ang iba't ibang kulay. Sa pamamagitan ng pagpasa ng `ax` parameter sa `scatter` na plotting function, mapapakita natin lahat ng puntos sa iisang graph:
Mukhang maliit ang korelasyon, -0.15 gamit ang `Month` at -0.17 gamit ang `DayOfYear`, ngunit maaaring may iba pang mahalagang ugnayan. Mukhang may mga ibang cluster ng mga presyo na tumutugma sa ibang iba't ibang uri ng kalabasa. Upang kumpirmahin ang hypothesis na ito, atin ipaplot ang bawat kategorya ng kalabasa gamit ang iba't ibang kulay. Sa pamamagitan ng pagpasa ng `ax` parameter sa `scatter` plotting function ay maaaring i-plot ang lahat ng puntos sa parehong graph:
```python
ax=None
@ -139,18 +139,18 @@ for i,var in enumerate(new_pumpkins['Variety'].unique()):
df = new_pumpkins[new_pumpkins['Variety']==var]
ax = df.plot.scatter('DayOfYear','Price',ax=ax,c=colors[i],label=var)
```
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/tl/scatter-dayofyear-color.65790faefbb9d54f.webp" width="50%" />
Sinasabi ng imbestigasyon natin na mas malaki ang epekto ng variety sa kabuoang presyo kaysa sa aktwal na petsa ng pagbebenta. Makikita natin ito sa isang bar graph:
Ang ating pagsisiyasat ay nagpapahiwatig na ang variety ay may mas malaking epekto sa kabuuang presyo kaysa sa aktwal na petsa ng pagbebenta. Makikita natin ito gamit ang bar graph:
```python
new_pumpkins.groupby('Variety')['Price'].mean().plot(kind='bar')
```
<img alt="Bar graph of price vs variety" src="../../../../translated_images/tl/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
Magtuon muna tayo sa isang uri ng kalabasa, ang 'pie type', at tingnan kung ano ang epekto ng petsa sa presyo:
Mag-focus muna tayo sa isang uri ng kalabasa, ang 'pie type', at tingnan kung ano ang epekto ng petsa sa presyo:
```python
pie_pumpkins = new_pumpkins[new_pumpkins['Variety']=='PIE TYPE']
@ -158,56 +158,56 @@ pie_pumpkins.plot.scatter('DayOfYear','Price')
```
<img alt="Scatter plot of Price vs. Day of Year" src="../../../../translated_images/tl/pie-pumpkins-scatter.d14f9804a53f927e.webp" width="50%" />
Kung kakalkulahin natin ngayon ang korelasyon sa pagitan ng `Price` at `DayOfYear` gamit ang `corr` function, makakakuha tayo ng mga tulad ng `-0.27` - ibig sabihin ay may saysay ang pagsasanay ng predictive model.
Kung kakalkulahin natin ang korelasyon sa pagitan ng `Price` at `DayOfYear` gamit ang `corr` function, makakakuha tayo ng mga halagang tulad ng `-0.27` - ibig sabihin ay may saysay ang pagsasanay ng predictive model.
> Bago magsanay ng linear regression model, mahalagang tiyakin na malinis ang ating data. Hindi maganda ang linear regression kapag may mga missing values, kaya nararapat na alisin ang lahat ng walang lamang cells:
> Bago magsanay ng linear regression model, mahalagang siguraduhin na malinis ang ating data. Hindi maganda ang linear regression sa mga nawawalang halaga, kaya makatwiran na alisin ang lahat ng walang laman na cell:
```python
pie_pumpkins.dropna(inplace=True)
pie_pumpkins.info()
```
Isa pang paraan ay punan ang mga walang laman na halaga gamit ang mean values mula sa katugmang kolum.
Isa pang paraan ay punuan ang mga walang laman na halaga gamit ang mean na halaga mula sa katumbas na kolum.
## Simple Linear Regression
[![ML for beginners - Linear and Polynomial Regression using Scikit-learn](https://img.youtube.com/vi/e4c_UP2fSjg/0.jpg)](https://youtu.be/e4c_UP2fSjg "ML for beginners - Linear and Polynomial Regression using Scikit-learn")
> 🎥 I-click ang larawan sa itaas para sa maikling video overview ng linear at polynomial regression.
> 🎥 I-click ang larawang nasa itaas para sa maikling video overview ng linear at polynomial regression.
Para sanayin ang Linear Regression model natin, gagamitin natin ang **Scikit-learn** library.
Para sanayin ang ating Linear Regression model, gagamit tayo ng **Scikit-learn** library.
```python
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
```
Sinisimulan natin sa paghihiwalay ng mga input values (features) at ang inaasahang output (label) sa magkahiwalay na numpy arrays:
Nagsisimula tayo sa paghihiwalay ng input na mga halaga (features) at ang inaasahang output (label) sa magkahiwalay na numpy arrays:
```python
X = pie_pumpkins['DayOfYear'].to_numpy().reshape(-1,1)
y = pie_pumpkins['Price']
```
> Pansinin na kailangan nating gawin ang `reshape` sa input na data upang maunawaan ito nang tama ng Linear Regression package. Inaasahan ng Linear Regression ang isang 2D-array bilang input, kung saan ang bawat hilera ng array ay tumutugma sa isang vector ng input features. Sa ating kaso, dahil isa lang ang input kailangan natin ng array na may hugis na N×1, kung saan ang N ay ang laki ng dataset.
> Tandaan na kinailangan nating gawin ang `reshape` sa input na data upang maintindihan ito ng Linear Regression package nang tama. Ang Linear Regression ay inaasahan ang 2D-array bilang input, kung saan bawat hilera ng array ay tumutukoy sa isang vector ng input na mga katangian. Sa ating kaso, dahil isa lang ang input, kailangan natin ng array na may hugis na N&times;1, kung saan ang N ay ang laki ng dataset.
Pagkatapos, kailangan nating hatiin ang data sa train at test datasets, upang ma-validate natin ang model pagkatapos ng training:
Pagkatapos, kailangan nating hatiin ang data sa train at test datasets, upang ma-validate natin ang modelo pagkatapos ng pagsasanay:
```python
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
```
Sa wakas, ang pagsasanay ng aktwal na Linear Regression model ay ginagawa lamang sa dalawang linya ng code. Idefine natin ang `LinearRegression` object, at i-fit ito sa ating data gamit ang `fit` method:
Sa wakas, ang pagsasanay ng aktuwal na Linear Regression model ay nangangailangan lang ng dalawang linya ng code. I-define natin ang `LinearRegression` na object, at i-fit ito sa ating data gamit ang `fit` method:
```python
lin_reg = LinearRegression()
lin_reg.fit(X_train,y_train)
```
Ang `LinearRegression` na object pagkatapos mag-`fit` ay naglalaman ng lahat ng coefficients ng regression, na maaaring ma-access gamit ang `.coef_` na property. Sa ating kaso, may isa lamang coefficient, na dapat ay nasa paligid ng `-0.017`. Ibig sabihin nito, tila bumababa ang mga presyo kasabay ng paglipas ng panahon, ngunit hindi masyadong malaki, mga 2 sentimo bawat araw. Maaari rin nating i-access ang punto ng intersection ng regression sa Y-axis gamit ang `lin_reg.intercept_` - ito ay magiging mga `21` sa ating kaso, na nagpapahiwatig ng presyo sa simula ng taon.
Ang `LinearRegression` na object pagkatapos ma-`fit` ay naglalaman ng lahat ng coefficients ng regression, na maaaring ma-access gamit ang `.coef_` na property. Sa aming kaso, may isang coefficient lamang, na dapat ay nasa paligid ng `-0.017`. Ibig sabihin nito, tila bumababa ng bahagya ang mga presyo sa paglipas ng panahon, ngunit hindi masyado, mga 2 sentimo kada araw. Maaari din nating ma-access ang punto ng pag-intersect ng regression sa Y-axis gamit ang `lin_reg.intercept_` - ito ay magiging nasa paligid ng `21` sa aming kaso, na nagpapahiwatig ng presyo sa simula ng taon.
Para makita kung gaano kasaktong ang ating modelo, maaari nating i-predict ang mga presyo sa test dataset, at pagkatapos ay sukatin kung gaano kalapit ang ating mga prediction sa inaasahang mga halaga. Maaari itong gawin gamit ang root mean square error (RMSE) metrics, na siyang root ng mean ng lahat ng squared differences sa pagitan ng inaasahan at predicted na halaga.
Para makita kung gaano katumpak ang ating modelo, maaari nating hulaan ang mga presyo sa test dataset, at pagkatapos ay sukatin kung gaano kalapit ang ating mga prediksyon sa mga inaasahang halaga. Maaari itong gawin gamit ang root mean square error (RMSE) metrics, na siyang root ng mean ng lahat ng squared differences sa pagitan ng inaasahan at prediktadong halaga.
```python
pred = lin_reg.predict(X_test)
@ -216,16 +216,16 @@ rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
```
Ang ating error ay tila nasa paligid ng 2 puntos, na mga ~17%. Hindi masyadong maganda. Isa pang tagapagpahiwatig ng kalidad ng modelo ay ang **coefficient of determination**, na maaaring makuha nang ganito:
Tila ang error natin ay nasa paligid ng 2 points, na humigit-kumulang ~17%. Hindi masyadong maganda. Ang isa pang indikasyon ng kalidad ng modelo ay ang **coefficient of determination**, na maaaring makuha sa ganitong paraan:
```python
score = lin_reg.score(X_train,y_train)
print('Model determination: ', score)
```
Kung ang halaga ay 0, ibig sabihin ay hindi isinasaalang-alang ng modelo ang input data, at kumikilos bilang *pinakapangit na linear predictor*, na simpleng mean value ng resulta. Ang halaga na 1 ay nangangahulugang maaari nating perpektong mahulaan ang lahat ng inaasahang output. Sa ating kaso, ang coefficient ay mga 0.06, na medyo mababa.
Kung ang halaga ay 0, ibig sabihin ay hindi isinasaalang-alang ng modelo ang input data, at kumikilos bilang *pinakamasamang linear predictor*, na simpleng mean value ng resulta. Ang halaga na 1 ay nangangahulugan na maaari nating perpektong mahulaan lahat ng inaasahang output. Sa aming kaso, ang coefficient ay nasa paligid ng 0.06, na medyo mababa.
Maaari rin nating i-plot ang test data kasama ang regression line upang mas makita nang mabuti kung paano gumagana ang regression sa ating kaso:
Maaari din nating i-plot ang test data kasama ang regression line upang mas makita kung paano gumagana ang regression sa aming kaso:
```python
plt.scatter(X_test,y_test)
@ -236,17 +236,17 @@ plt.plot(X_test,pred)
## Polynomial Regression
Isa pang uri ng Linear Regression ay Polynomial Regression. Habang minsan ay may linear na relasyon sa pagitan ng mga variable - mas malaki ang kalabasa sa volume, mas mataas ang presyo - minsan hindi maaaring i-plot ang mga relasyong ito bilang isang patag o tuwid na linya.
Isa pang uri ng Linear Regression ang Polynomial Regression. Habang minsan may linear na ugnayan sa pagitan ng mga variable - mas malaki ang kalabasa sa volume, mas mataas ang presyo - minsan ang mga ugnayang ito ay hindi maipapakita bilang isang patag o tuwid na linya.
✅ Narito ang [ilang karagdagang halimbawa](https://online.stat.psu.edu/stat501/lesson/9/9.8) ng data na maaaring gumamit ng Polynomial Regression
Tingnan pang muli ang relasyon sa pagitan ng Date at Price. Para bang ang scatterplot ba ay dapat talagang suriin gamit ang tuwid na linya? Hindi ba maaaring mag-fluctuate ang mga presyo? Sa kasong ito, maaari mong subukan ang polynomial regression.
Tingnan muli ang relasyon sa pagitan ng Date at Price. Mukhang dapat bang pag-aralan ito gamit ang isang tuwid na linya? Hindi ba pwedeng mag-iba-iba ang mga presyo? Sa kasong ito, maaari mong subukan ang polynomial regression.
✅ Ang mga polynomial ay mga matematikal na ekspresyon na maaaring binubuo ng isa o higit pang mga variable at coefficients
✅ Ang mga polynomial ay mga matematikal na ekspresyon na maaaring binubuo ng isa o higit pang mga variable at mga coefficient
Ang polynomial regression ay lumilikha ng kurbadang linya upang mas maiangkop ang nonlinear na data. Sa ating kaso, kung isasama natin ang squared `DayOfYear` na variable sa input data, dapat nating magawang i-fit ang ating data gamit ang parabolic curve, na magkakaroon ng minimum sa isang tiyak na punto sa loob ng taon.
Ang polynomial regression ay lumilikha ng isang kurbadang linya upang mas angkop sa nonlinear na data. Sa aming kaso, kung isasama natin ang squared `DayOfYear` variable sa input data, dapat nating magawa na i-fit ang data gamit ang isang parabolic curve, na magkakaroon ng minimum sa isang partikular na punto sa loob ng taon.
Kasama sa Scikit-learn ang kapaki-pakinabang na [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) upang pagsamahin ang iba't ibang mga hakbang ng data processing. Ang **pipeline** ay isang chain ng **estimators**. Sa ating kaso, gagawa tayo ng pipeline na unang nagdaragdag ng polynomial features sa ating modelo, at pagkatapos ay nagtetrain ng regression:
Kasama sa Scikit-learn ang kapaki-pakinabang na [pipeline API](https://scikit-learn.org/stable/modules/generated/sklearn.pipeline.make_pipeline.html?highlight=pipeline#sklearn.pipeline.make_pipeline) upang pagsamahin ang iba't ibang hakbang ng pagproseso ng data. Ang **pipeline** ay isang chain ng mga **estimators**. Sa aming kaso, gagawa kami ng pipeline na una magdaragdag ng polynomial features sa aming modelo, at pagkatapos ay magte-train ng regression:
```python
from sklearn.preprocessing import PolynomialFeatures
@ -257,36 +257,58 @@ pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
```
Ang paggamit ng `PolynomialFeatures(2)` ay nangangahulugan na isasama natin ang lahat ng second-degree polynomials mula sa input data. Sa ating kaso, ito ay nangangahulugang `DayOfYear`<sup>2</sup> lamang, ngunit kung merong dalawang input na variable na X at Y, ito ay magdaragdag ng X<sup>2</sup>, XY at Y<sup>2</sup>. Maaari din nating gamitin ang mga polynomial ng mas mataas na degree kung nais natin.
Ang paggamit ng `PolynomialFeatures(2)` ay nangangahulugan na isasama natin ang lahat ng pangalawang-degree polynomials mula sa input data. Sa aming kaso, ito ay nangangahulugan lamang ng `DayOfYear`<sup>2</sup>, ngunit kung mayroon tayong dalawang input variables na X at Y, idaragdag nito ang X<sup>2</sup>, XY at Y<sup>2</sup>. Maaari rin tayong gumamit ng mas mataas na degree polynomials kung nais.
Maaaring gamitin ang mga pipeline sa parehong paraan tulad ng orihinal na `LinearRegression` na object, ibig sabihin maaari nating `fit` ang pipeline, at pagkatapos ay gamitin ang `predict` upang makuha ang mga resulta ng prediksyon:
```python
pred = pipeline.predict(X_test)
rmse = np.sqrt(mean_squared_error(y_test,pred))
print(f'RMSE: {rmse:3.3} ({rmse/np.mean(pred)*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
Para i-plot ang smooth approximation curve, ginamit natin ang `np.linspace` upang gumawa ng uniform na range ng input values, sa halip na mag-plot direkta sa unordered test data (na magreresulta sa zigzag na linya):
```python
X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)
y_range = pipeline.predict(X_range)
plt.scatter(X_test, y_test)
plt.plot(X_range, y_range)
```
Maaaring gamitin ang mga pipelines sa parehong paraan tulad ng orihinal na `LinearRegression` object, ibig sabihin maaari nating `fit` ang pipeline, at pagkatapos ay gamitin ang `predict` upang makuha ang mga resulta ng prediction. Narito ang graph na nagpapakita ng test data, at ang approximation curve:
Narito ang graph na nagpapakita ng test data, at ang approximation curve:
<img alt="Polynomial regression" src="../../../../translated_images/tl/poly-results.ee587348f0f1f60b.webp" width="50%" />
Gamit ang Polynomial Regression, makakakuha tayo ng bahagyang mas mababang MSE at mas mataas na coefficient of determination, ngunit hindi gaanong malaki ang kaibahan. Kailangan nating isaalang-alang ang ibang mga features!
Sa paggamit ng Polynomial Regression, makakakuha tayo ng bahagyang mas mababang RMSE at mas mataas na determination, ngunit hindi ito malaki ang pagkakaiba. Kailangan nating isaalang-alang ang iba pang mga features!
> Makikita mo na ang pinakamababang presyo ng kalabasa ay naobserbahan sa paligid ng Halloween. Paano mo ito maipapaliwanag?
> Makikita mo na ang pinakamababang presyo ng kalabasa ay naobserbahan sa paligid ng Halloween. Paano mo ito maipapaliwanag?
🎃 Congratulations, kakagawa mo lang ng isang modelo na makakatulong mag-predict ng presyo ng pie pumpkins. Maaari mong ulitin ang parehong proseso para sa lahat ng uri ng kalabasa, ngunit ito ay magiging mahirap. Alamin natin ngayon kung paano isaalang-alang ang iba't ibang uri ng kalabasa sa ating modelo!
🎃 Congratulations, nakagawa ka lang ng isang modelo na maaaring makatulong hulaan ang presyo ng pie pumpkins. Maaari mo marahil ulitin ang parehong proseso para sa lahat ng uri ng kalabasa, ngunit ito ay magiging matrabaho. Alamin natin ngayon kung paano isaalang-alang ang variety ng kalabasa sa ating modelo!
## Categorical Features
Sa perpektong mundo, gusto nating makapag-predict ng presyo para sa iba't ibang variety ng kalabasa gamit ang parehong modelo. Ngunit, ang column na `Variety` ay medyo iba sa mga column tulad ng `Month`, dahil naglalaman ito ng mga non-numeric na halaga. Ang mga ganitong uri ng column ay tinatawag na **categorical**.
Sa ideal na mundo, nais nating mahulaan ang mga presyo para sa iba't ibang varieties ng kalabasa gamit ang parehong modelo. Gayunpaman, ang column na `Variety` ay medyo iba sa mga column tulad ng `Month`, dahil naglalaman ito ng mga hindi numerikong halaga. Ang mga ganitong column ay tinatawag na **categorical**.
[![ML for beginners - Categorical Feature Predictions with Linear Regression](https://img.youtube.com/vi/DYGliioIAE0/0.jpg)](https://youtu.be/DYGliioIAE0 "ML for beginners - Categorical Feature Predictions with Linear Regression")
> 🎥 I-click ang larawan sa itaas para sa isang maikling video overview ng paggamit ng categorical features.
> 🎥 I-click ang imahe sa itaas para sa isang maikling video overview tungkol sa paggamit ng categorical features.
Dito makikita mo kung paano ang average price ay nakasalalay sa variety:
Dito makikita kung paano ang average na presyo ay nakadepende sa variety:
<img alt="Average price by variety" src="../../../../translated_images/tl/price-by-variety.744a2f9925d9bcb4.webp" width="50%" />
Para isaalang-alang ang variety, kailangan muna natin itong i-convert sa numeric na anyo, o **i-encode** ito. May ilang paraan kung paano natin ito magagawa:
Para isaalang-alang ang variety, kailangan muna natin itong i-convert sa numerikong anyo, o **i-encode** ito. May ilang mga paraan upang gawin ito:
* Ang simpleng **numeric encoding** ay gagawa ng talaan ng iba't ibang variety, at pagkatapos ay papalitan ang pangalan ng variety ng isang index sa talaang iyon. Hindi ito pinakamagandang ideya para sa linear regression, dahil ang linear regression ay kumukuha ng aktwal na numeric value ng index, at ina-add ito sa resulta, na minamultiply ng isang coefficient. Sa ating kaso, ang relasyon sa pagitan ng bilang ng index at presyo ay malinaw na hindi linear, kahit na siguraduhin natin na ang mga index ay nakaayos sa isang tiyak na paraan.
* Ang **one-hot encoding** ay papalitan ang `Variety` column ng 4 na magkakaibang columns, isa para sa bawat variety. Bawat column ay magkakaroon ng `1` kung ang katumbas na row ay nasa isang partikular na variety, at `0` kung hindi. Ibig sabihin nito ay magkakaroon ng apat na coefficients sa linear regression, isa para sa bawat variety ng kalabasa, na responsable para sa "starting price" (o mas tama "karagdagang presyo") para sa partikular na variety na iyon.
* Ang simpleng **numeric encoding** ay gagawa ng isang talaan ng iba't ibang varieties, at pagkatapos ay papalitan ang pangalan ng variety ng isang index sa talaang iyon. Hindi ito ang pinakamahusay na ideya para sa linear regression, dahil kinukuha ng linear regression ang aktwal na numerikong halaga ng index, at dinadagdagan ito sa resulta, na minumultiply ng isang coefficient. Sa aming kaso, ang relasyon sa pagitan ng numero ng index at ng presyo ay malinaw na hindi linear, kahit na siguraduhin nating nakaayos ang mga indices sa isang partikular na paraan.
* Ang **one-hot encoding** ay papalitan ang column na `Variety` ng 4 na magkakaibang columns, isa para sa bawat variety. Ang bawat column ay maglalaman ng `1` kung ang katumbas na row ay mula sa isang partikular na variety, at `0` naman kung hindi. Nangangahulugan ito na mayroong apat na coefficients sa linear regression, isa para sa bawat variety ng kalabasa, na responsable para sa "starting price" (o mas tamang sabihin ay "karagdagang presyo") para sa partikular na variety na iyon.
Ipinapakita ng code sa ibaba kung paano natin mae-one-hot encode ang variety:
Ipinapakita ng code sa ibaba kung paano natin magagawa ang one-hot encode ng variety:
```python
pd.get_dummies(new_pumpkins['Variety'])
@ -303,14 +325,14 @@ pd.get_dummies(new_pumpkins['Variety'])
1741 | 0 | 1 | 0 | 0
1742 | 0 | 1 | 0 | 0
Para mag-train ng linear regression gamit ang one-hot encoded na variety bilang input, kailangan lang nating i-initialize ang `X` at `y` na data nang tama:
Para mag-train ng linear regression gamit ang one-hot encoded na variety bilang input, kailangan lamang natin i-initialize ang `X` at `y` data nang tama:
```python
X = pd.get_dummies(new_pumpkins['Variety'])
y = new_pumpkins['Price']
```
Ang natitirang bahagi ng code ay pareho sa ginamit natin sa itaas para mag-train ng Linear Regression. Kung susubukan mo ito, makikita mo na halos pareho ang mean squared error, ngunit makakakuha tayo ng mas mataas na coefficient of determination (~77%). Para makakuha pa ng mas tumpak na predictions, maaari nating isaalang-alang ang mas maraming categorical na features, pati na rin ang numeric na features, tulad ng `Month` o `DayOfYear`. Para makuha ang isang malaking array ng features, maaari nating gamitin ang `join`:
Ang natitirang bahagi ng code ay pareho tulad ng ginamit natin sa itaas para mag-train ng Linear Regression. Kung susubukan mo ito, makikita mong ang mean squared error ay halos pareho, ngunit nakakakuha tayo ng mas mataas na coefficient of determination (~77%). Upang makakuha ng mas tumpak na mga prediksyon, maaari nating isaalang-alang pa ang mas maraming categorical features, pati na rin ang mga numeric features tulad ng `Month` o `DayOfYear`. Para makabuo ng isang malaking array ng mga features, maaari nating gamitin ang `join`:
```python
X = pd.get_dummies(new_pumpkins['Variety']) \
@ -320,60 +342,60 @@ X = pd.get_dummies(new_pumpkins['Variety']) \
y = new_pumpkins['Price']
```
Dito isinaalang-alang din natin ang `City` at uri ng `Package`, na nagbigay sa atin ng MSE 2.84 (10%), at determination na 0.94!
Dito kinokonsidera rin natin ang `City` at `Package` type, na nagreresulta sa RMSE na 2.84 (10.5%), at determination na 0.94!
## Pagsasama-sama ng lahat
Para makagawa ng pinakamahusay na modelo, maaari nating gamitin ang pinagsamang (one-hot encoded categorical + numeric) data mula sa halimbawa sa itaas kasabay ng Polynomial Regression. Narito ang buong code para sa iyong kaginhawaan:
Para gumawa ng pinakamahusay na modelo, maaari nating gamitin ang pinagsamang (one-hot encoded categorical + numeric) data mula sa naunang halimbawa kasama ang Polynomial Regression. Narito ang kumpletong code para sa iyong kaginhawaan:
```python
# ayusin ang data para sa pagsasanay
# ihanda ang data para sa pagsasanay
X = pd.get_dummies(new_pumpkins['Variety']) \
.join(new_pumpkins['Month']) \
.join(pd.get_dummies(new_pumpkins['City'])) \
.join(pd.get_dummies(new_pumpkins['Package']))
y = new_pumpkins['Price']
# gawin ang hati ng pagsasanay-pagsubok
# gawin ang paghahati ng train at test
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)
# ayusin at sanayin ang pipeline
pipeline = make_pipeline(PolynomialFeatures(2), LinearRegression())
pipeline.fit(X_train,y_train)
# hulaan ang mga resulta para sa test data
# hulaan ang mga resulta para sa test na data
pred = pipeline.predict(X_test)
# kalkulahin ang MSE at determinasyon
mse = np.sqrt(mean_squared_error(y_test,pred))
print(f'Mean error: {mse:3.3} ({mse/np.mean(pred)*100:3.3}%)')
# kalkulahin ang RMSE at determinasyon
rmse = mean_squared_error(y_test, pred, squared=False)
print(f'RMSE: {rmse:3.3} ({rmse/pred.mean()*100:3.3}%)')
score = pipeline.score(X_train,y_train)
print('Model determination: ', score)
```
Dapat magbigay ito sa atin ng pinakamagandang coefficient of determination na halos 97%, at MSE=2.23 (~8% na prediction error).
Dapat itong magbigay sa atin ng pinakamahusay na determination coefficient na halos 97%, at RMSE=2.23 (~8% prediction error).
| Model | MSE | Determination |
| Modelo | RMSE | Determination |
|-------|-----|---------------|
| `DayOfYear` Linear | 2.77 (17.2%) | 0.07 |
| `DayOfYear` Polynomial | 2.73 (17.0%) | 0.08 |
| `Variety` Linear | 5.24 (19.7%) | 0.77 |
| All features Linear | 2.84 (10.5%) | 0.94 |
| All features Polynomial | 2.23 (8.25%) | 0.97 |
| Lahat ng features Linear | 2.84 (10.5%) | 0.94 |
| Lahat ng features Polynomial | 2.23 (8.25%) | 0.97 |
🏆 Magaling! Nakagawa ka ng apat na Regression models sa isang aralin, at napabuti ang kalidad ng modelo hanggang 97%. Sa huling bahagi tungkol sa Regression, matututuhan mo ang tungkol sa Logistic Regression para tukuyin ang mga kategorya.
🏆 Magaling! Nakagawa ka ng apat na Regression models sa isang lesson, at napabuti ang kalidad ng modelo hanggang 97%. Sa huling bahagi tungkol sa Regression, matututuhan mo ang tungkol sa Logistic Regression upang matukoy ang mga kategorya.
---
## 🚀Challenge
Subukan ang ilang iba't ibang mga variable sa notebook na ito upang makita kung paano ang korelasyon ay tumutugma sa katumpakan ng modelo.
Subukan ang iba't ibang variables sa notebook na ito upang makita kung paano naaayon ang correlation sa katumpakan ng modelo.
## [Post-lecture quiz](https://ff-quizzes.netlify.app/en/ml/)
## Review & Self Study
Sa araling ito natutunan natin ang tungkol sa Linear Regression. May iba pang mahahalagang uri ng Regression. Basahin tungkol sa Stepwise, Ridge, Lasso at Elasticnet techniques. Isang magandang kurso para pag-aralan upang matuto nang higit pa ay ang [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
Sa lesson na ito natutunan natin ang tungkol sa Linear Regression. May iba pang mahahalagang uri ng Regression. Basahin ang tungkol sa Stepwise, Ridge, Lasso at Elasticnet na mga teknik. Isang magandang kurso na pag-aralan para matuto pa ay ang [Stanford Statistical Learning course](https://online.stanford.edu/courses/sohs-ystatslearning-statistical-learning)
## Assignment
@ -383,5 +405,5 @@ Sa araling ito natutunan natin ang tungkol sa Linear Regression. May iba pang ma
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Paunawa**:
Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagamat aming nilalayon ang katumpakan, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o di-katumpakan. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pangunahing sanggunian. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasaling-tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.
Ang dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't nagsusumikap kami para sa kawastuhan, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o kamalian. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pinagmulan ng katotohanan. Para sa mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaintindihan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -4,14 +4,14 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"## Linear at Polynomial Regression para sa Pagpepresyo ng Kalabasa - Aralin 3\n",
"## Linear and Polynomial Regression for Pumpkin Pricing - Leksyon 3\n",
"\n",
"I-load ang mga kinakailangang library at dataset. I-convert ang data sa isang dataframe na naglalaman ng subset ng data:\n",
"I-load ang mga kinakailangang library at dataset. I-convert ang data sa isang dataframe na naglalaman ng isang subset ng data:\n",
"\n",
"- Kunin lamang ang mga kalabasa na may presyo batay sa bushel\n",
"- I-convert ang petsa sa buwan\n",
"- Kunin lamang ang mga kalabasa na may presyo kada bushel\n",
"- I-convert ang petsa sa isang buwan\n",
"- Kalkulahin ang presyo bilang average ng mataas at mababang presyo\n",
"- I-convert ang presyo upang ipakita ang pagpepresyo batay sa dami ng bushel\n"
"- I-convert ang presyo upang ipakita ang pagpepresyo ayon sa dami ng bushel\n"
]
},
{
@ -377,7 +377,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Ang scatterplot ay nagpapaalala sa atin na mayroon lamang tayong datos mula Agosto hanggang Disyembre. Malamang na kailangan pa natin ng mas maraming datos upang makagawa ng mga konklusyon sa isang linyar na paraan.\n"
"Ang scatterplot ay nagpapaalala sa atin na mayroon lamang tayong data ng buwan mula Agosto hanggang Disyembre. Marahil kailangan pa natin ng mas maraming data upang makabuo ng mga konklusyon sa isang linear na paraan.\n"
]
},
{
@ -447,7 +447,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"Tingnan natin kung may korelasyon:\n"
]
},
{
"cell_type": "code",
@ -472,7 +474,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Mukhang maliit ang ugnayan, ngunit may iba pang mas mahalagang relasyon - dahil ang mga presyo sa plot sa itaas ay tila may ilang magkakaibang kumpol. Gumawa tayo ng plot na magpapakita ng iba't ibang uri ng kalabasa:\n"
"Mukhang maliit ang korelasyon, pero may iba pang mas mahalagang relasyon - dahil ang mga price points sa plot sa itaas ay mukhang may ilang natatanging mga cluster. Gumawa tayo ng plot na magpapakita ng iba't ibang mga uri ng kalabasa:\n"
]
},
{
@ -535,7 +537,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"Sa ngayon, magpokus muna tayo sa isang uri lamang - **pie type**.\n"
]
},
{
"cell_type": "code",
@ -584,7 +588,7 @@
"source": [
"### Linear Regression\n",
"\n",
"Gagamitin natin ang Scikit Learn upang magsanay ng linear regression model:\n"
"Gagamitin natin ang Scikit Learn upang mag-train ng linear regression model:\n"
]
},
{
@ -688,7 +692,9 @@
{
"cell_type": "markdown",
"metadata": {},
"source": []
"source": [
"Maaari nating gamitin ang sinanay na modelo upang hulaan ang presyo:\n"
]
},
{
"cell_type": "code",
@ -718,9 +724,9 @@
"source": [
"### Polynomial Regression\n",
"\n",
"Minsan, ang relasyon sa pagitan ng mga tampok at resulta ay likas na hindi linear. Halimbawa, maaaring mataas ang presyo ng kalabasa tuwing taglamig (mga buwan=1,2), pagkatapos ay bumaba sa tag-init (mga buwan=5-7), at pagkatapos ay tumaas muli. Hindi kayang mahanap ng linear regression ang relasyong ito nang tama.\n",
"Minsan ang relasyon sa pagitan ng mga katangian at mga resulta ay likas na hindi linear. Halimbawa, maaaring mataas ang presyo ng kalabasa sa taglamig (mga buwan=1,2), pagkatapos bumaba sa tag-init (mga buwan=5-7), at muling tumaas. Hindi kayang tuklasin nang tumpak ng linear regression ang relasyong ito.\n",
"\n",
"Sa ganitong kaso, maaari nating isaalang-alang ang pagdaragdag ng mga karagdagang tampok. Isang simpleng paraan ay ang paggamit ng mga polynomial mula sa mga input na tampok, na magreresulta sa **polynomial regression**. Sa Scikit Learn, maaari nating awtomatikong i-pre-compute ang mga polynomial na tampok gamit ang pipelines:\n"
"Sa kasong ito, maaari nating isaalang-alang ang pagdagdag ng dagdag na mga katangian. Madaling paraan ay ang paggamit ng mga polinomial mula sa mga input na katangian, na magreresulta sa **polynomial regression**. Sa Scikit Learn, maaari nating awtomatikong i-precompute ang mga polynomial na katangian gamit ang pipelines: \n"
]
},
{
@ -775,22 +781,25 @@
"score = pipeline.score(X_train,y_train)\n",
"print('Model determination: ', score)\n",
"\n",
"plt.scatter(X_test,y_test)\n",
"plt.plot(sorted(X_test),pipeline.predict(sorted(X_test)))"
"X_range = np.linspace(X_test.min(), X_test.max(), 100).reshape(-1,1)\n",
"y_range = pipeline.predict(X_range)\n",
"\n",
"plt.scatter(X_test, y_test)\n",
"plt.plot(X_range, y_range)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Pag-encode ng mga uri\n",
"### Mga Uri ng Encoding\n",
"\n",
"Sa ideal na mundo, nais nating magawang hulaan ang mga presyo para sa iba't ibang uri ng kalabasa gamit ang parehong modelo. Upang maisaalang-alang ang uri, kailangan muna nating i-convert ito sa numerikong anyo, o **i-encode**. Mayroong ilang mga paraan upang gawin ito:\n",
"Sa ideal na mundo, gusto nating maging kaya nating mahulaan ang mga presyo para sa iba't ibang uri ng kalabasa gamit ang parehong modelo. Upang isaalang-alang ang uri, kailangan muna natin itong i-convert sa numerikal na anyo, o **i-encode**. May ilang paraan para gawin ito:\n",
"\n",
"* Simpleng numerikong encoding na gagawa ng isang talahanayan ng iba't ibang uri, at pagkatapos ay papalitan ang pangalan ng uri ng isang index sa talahanayan na iyon. Hindi ito ang pinakamainam na ideya para sa linear regression, dahil isinasaalang-alang ng linear regression ang numerikong halaga ng index, at ang numerikong halaga ay malamang na hindi tumutugma nang numerikal sa presyo.\n",
"* One-hot encoding, na papalitan ang kolum na `Variety` ng 4 na magkakaibang kolum, isa para sa bawat uri, na maglalaman ng 1 kung ang kaukulang hilera ay kabilang sa ibinigay na uri, at 0 kung hindi.\n",
"* Simpleng numerikal na encoding na gagawa ng isang talahanayan ng iba't ibang uri, at pagkatapos ay papalitan ang pangalan ng uri ng isang indeks sa talahanayang iyon. Hindi ito ang pinakamainam na ideya para sa linear regression, dahil iniisip ng linear regression ang numerikal na halaga ng indeks, at malamang na hindi numerikal na makakaugnay ang numerikal na halaga sa presyo.\n",
"* One-hot encoding, na papalitan ang kolum na `Variety` ng 4 na iba't ibang kolum, isa para sa bawat uri, na maglalaman ng 1 kung ang katumbas na hilera ay sa tinukoy na uri, at 0 kung hindi.\n",
"\n",
"Ang code sa ibaba ay nagpapakita kung paano natin maaaring i-one-hot encode ang isang uri:\n"
"Ipinapakita ng code sa ibaba kung paano natin maaaring i-one-hot encode ang isang uri:\n"
]
},
{
@ -938,9 +947,9 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"### Linear Regression sa Iba't Ibang Uri\n",
"### Linear Regression sa Variety\n",
"\n",
"Gagamitin natin ngayon ang parehong code tulad ng nasa itaas, ngunit sa halip na `DayOfYear`, gagamitin natin ang ating one-hot-encoded na uri bilang input:\n"
"Gagamitin na natin ang parehong code tulad ng nasa itaas, ngunit sa halip na `DayOfYear` ay gagamitin natin ang ating one-hot-encoded variety bilang input:\n"
]
},
{
@ -988,7 +997,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"Maaari rin nating subukang gumamit ng iba pang mga tampok sa parehong paraan, at pagsamahin ang mga ito sa mga numerikal na tampok, tulad ng `Month` o `DayOfYear`:\n"
"Maaari rin nating subukan gamitin ang ibang mga tampok sa parehong paraan, at pagsamahin ang mga ito sa mga numerikal na tampok, tulad ng `Month` o `DayOfYear`:\n"
]
},
{
@ -1021,7 +1030,7 @@
"source": [
"### Polynomial Regression\n",
"\n",
"Ang polynomial regression ay maaari ring gamitin sa mga kategoryang tampok na naka-one-hot-encode. Ang code para sa pagsasanay ng polynomial regression ay halos pareho sa nakita natin sa itaas.\n"
"Maaaring gamitin ang polynomial regression sa mga categorical na katangian na naka-one-hot-encode. Ang code para mag-train ng polynomial regression ay halos pareho lamang ng nakita natin sa itaas.\n"
]
},
{
@ -1068,7 +1077,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"\n---\n\n**Paunawa**: \nAng dokumentong ito ay isinalin gamit ang AI translation service na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagama't sinisikap naming maging tumpak, pakitandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o hindi pagkakatugma. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na opisyal na sanggunian. Para sa mahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaunawaan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.\n"
"---\n\n<!-- CO-OP TRANSLATOR DISCLAIMER START -->\n**Paunawa**: \nAng dokumentong ito ay isinalin gamit ang serbisyong AI translation na [Co-op Translator](https://github.com/Azure/co-op-translator). Bagamat pinagsisikapan naming maging tumpak, pakatandaan na ang mga awtomatikong pagsasalin ay maaaring maglaman ng mga pagkakamali o di-tiyak na impormasyon. Ang orihinal na dokumento sa orihinal nitong wika ang dapat ituring na pinagmulan ng katotohanan. Para sa mga mahahalagang impormasyon, inirerekomenda ang propesyonal na pagsasalin ng tao. Hindi kami mananagot sa anumang hindi pagkakaintindihan o maling interpretasyon na maaaring magmula sa paggamit ng pagsasaling ito.\n<!-- CO-OP TRANSLATOR DISCLAIMER END -->\n"
]
}
],
@ -1098,13 +1107,7 @@
"hash": "70b38d7a306a849643e446cd70466270a13445e5987dfa1344ef2b127438fa4d"
}
},
"orig_nbformat": 2,
"coopTranslator": {
"original_hash": "d77bd89ae7e79780c68c58bab91f13f8",
"translation_date": "2025-08-29T14:42:08+00:00",
"source_file": "2-Regression/3-Linear/solution/notebook.ipynb",
"language_code": "tl"
}
"orig_nbformat": 2
},
"nbformat": 4,
"nbformat_minor": 2

Loading…
Cancel
Save