Penggunaan keacakan adalah bagian penting dari konfigurasi dan evaluasi algoritma pembelajaran mesin Show
Dari inisialisasi bobot secara acak dalam jaringan syaraf tiruan, hingga pemisahan data menjadi rangkaian uji dan rangkaian uji acak, hingga pengacakan acak dari rangkaian data pelatihan dalam penurunan gradien stokastik, menghasilkan angka acak dan memanfaatkan keacakan adalah keterampilan yang diperlukan Dalam tutorial ini, Anda akan menemukan cara menghasilkan dan bekerja dengan bilangan acak dengan Python Setelah menyelesaikan tutorial ini, Anda akan tahu
Mulailah proyek Anda dengan buku baru saya Statistics for Machine Learning, termasuk tutorial langkah demi langkah dan file kode sumber Python untuk semua contoh Mari kita mulai Cara Menghasilkan Angka Acak dengan Python Sekilas TutorialTutorial ini dibagi menjadi 3 bagian;
1. Generator Nomor PseudorandomSumber keacakan yang kami masukkan ke dalam program dan algoritme kami adalah trik matematika yang disebut generator bilangan acak semu Generator angka acak adalah sistem yang menghasilkan angka acak dari sumber keacakan yang sebenarnya. Seringkali sesuatu yang fisik, seperti penghitung Geiger, di mana hasilnya diubah menjadi angka acak. Kami tidak membutuhkan keacakan yang sebenarnya dalam pembelajaran mesin. Sebagai gantinya kita bisa menggunakan pseudorandomness. Pseudorandomness adalah sampel angka yang terlihat mendekati acak, tetapi dihasilkan menggunakan proses deterministik Mengacak data dan menginisialisasi koefisien dengan nilai acak menggunakan generator bilangan acak semu. Program kecil ini seringkali merupakan fungsi yang dapat Anda panggil yang akan mengembalikan nomor acak. Dipanggil lagi, mereka akan mengembalikan nomor acak baru. Fungsi pembungkus sering juga tersedia dan memungkinkan Anda mendapatkan keacakan sebagai bilangan bulat, floating point, dalam distribusi tertentu, dalam rentang tertentu, dan seterusnya Angka-angka dihasilkan secara berurutan. Urutan bersifat deterministik dan diunggulkan dengan nomor awal. Jika Anda tidak secara eksplisit meng-seed generator nomor pseudorandom, maka mungkin menggunakan waktu sistem saat ini dalam hitungan detik atau milidetik sebagai seed Nilai benih tidak masalah. Pilih apa pun yang Anda inginkan. Yang penting adalah bahwa penyemaian proses yang sama akan menghasilkan urutan angka acak yang sama Mari kita buat ini konkret dengan beberapa contoh 2. Angka Acak dengan Perpustakaan Standar PythonPustaka standar Python menyediakan modul yang disebut acak yang menawarkan serangkaian fungsi untuk menghasilkan angka acak Python menggunakan generator nomor pseudorandom yang populer dan kuat yang disebut Mersenne Twister Pada bagian ini, kita akan melihat sejumlah kasus penggunaan untuk membuat dan menggunakan angka acak dan acak dengan API Python standar Butuh bantuan dengan Statistik untuk Pembelajaran Mesin?Ikuti kursus kilat email 7 hari gratis saya sekarang (dengan kode contoh) Klik untuk mendaftar dan juga dapatkan kursus versi Ebook PDF gratis Unduh Kursus Mini GRATIS Anda Benih Generator Angka AcakGenerator nomor pseudorandom adalah fungsi matematika yang menghasilkan urutan angka yang hampir acak Dibutuhkan parameter untuk memulai urutan, yang disebut benih. Fungsi tersebut bersifat deterministik, artinya dengan seed yang sama, maka akan menghasilkan barisan bilangan yang sama setiap waktu. Pilihan benih tidak masalah Fungsi akan memunculkan generator nomor pseudorandom, mengambil nilai bilangan bulat sebagai argumen, seperti 1 atau 7. Jika fungsi seed() tidak dipanggil sebelum menggunakan keacakan, defaultnya adalah menggunakan waktu sistem saat ini dalam milidetik dari zaman (1970) Contoh di bawah ini menunjukkan penyemaian generator nomor pseudorandom, menghasilkan beberapa angka acak, dan menunjukkan bahwa penyemaian ulang generator akan menghasilkan urutan angka yang sama yang dihasilkan 1 2 3 4 5 6 7 8 9 10 11 # seed generator nomor pseudorandom dari acak impor benih dari acak impor acak # penghasil nomor acak benih benih(1) # menghasilkan beberapa angka acak cetak(acak(), random(), random()) # setel ulang benih benih(1) # menghasilkan beberapa angka acak cetak(acak(), random(), random()) Menjalankan contoh menyemai generator bilangan acak semu dengan nilai 1, menghasilkan 3 bilangan acak, memasang kembali generator, dan menunjukkan bahwa tiga bilangan acak yang sama dihasilkan 1 2 0. 13436424411240122 0. 8474337369372327 0. 763774618976614 0. 13436424411240122 0. 8474337369372327 0. 763774618976614 Akan berguna untuk mengontrol keacakan dengan menyetel seed untuk memastikan bahwa kode Anda menghasilkan hasil yang sama setiap saat, seperti dalam model produksi Untuk menjalankan percobaan di mana pengacakan digunakan untuk mengontrol variabel perancu, seed yang berbeda dapat digunakan untuk setiap percobaan yang dijalankan Nilai Titik Mengambang AcakNilai floating point acak dapat dihasilkan menggunakan fungsi. Nilai akan dihasilkan dalam rentang antara 0 dan 1, khususnya dalam interval [0,1) Nilai diambil dari distribusi yang seragam, artinya setiap nilai memiliki peluang yang sama untuk ditarik Contoh di bawah menghasilkan 10 nilai floating point acak 1 2 3 4 5 6 7 8 9 # menghasilkan nilai floating point acak dari acak impor benih dari acak impor acak # penghasil nomor acak benih benih(1) # menghasilkan angka acak antara 0-1 untuk _ dalam rentang(10): nilai = acak() cetak(nilai) Menjalankan contoh menghasilkan dan mencetak setiap nilai floating point acak 1 2 3 4 5 6 7 8 9 10 0. 13436424411240122 0. 8474337369372327 0. 763774618976614 0. 2550690257394217 0. 49543508709194095 0. 4494910647887381 0. 651592972722763 0. 7887233511355132 0. 0938595867742349 0. 02834747652200631 Nilai floating point dapat diubah skalanya ke rentang yang diinginkan dengan mengalikannya dengan ukuran rentang baru dan menambahkan nilai min, sebagai berikut 1 nilai yang diskalakan = min + (nilai * (maks - min)) Di mana min dan maks masing-masing adalah nilai minimum dan maksimum dari kisaran yang diinginkan, dan nilai adalah nilai floating point yang dihasilkan secara acak dalam kisaran antara 0 dan 1 Nilai Bilangan Bulat AcakNilai bilangan bulat acak dapat dihasilkan dengan fungsi Fungsi ini membutuhkan dua argumen. awal dan akhir rentang untuk nilai bilangan bulat yang dihasilkan. Bilangan bulat acak dihasilkan di dalam dan termasuk nilai awal dan akhir rentang, khususnya dalam interval [mulai, akhir]. Nilai acak diambil dari distribusi yang seragam Contoh di bawah menghasilkan 10 nilai integer acak antara 0 dan 10 1 2 3 4 5 6 7 8 9 # menghasilkan nilai bilangan bulat acak dari acak impor benih dari acak impor randint # penghasil nomor acak benih benih(1) # menghasilkan beberapa bilangan bulat untuk _ dalam rentang(10): nilai = randint(0, 10) cetak(nilai) Menjalankan contoh menghasilkan dan mencetak 10 nilai bilangan bulat acak 1 2 3 4 5 6 7 8 9 10 2 9 1 4 1 7 7 7 10 6 Nilai Gaussian AcakNilai floating point acak dapat diambil dari distribusi Gaussian menggunakan fungsi Fungsi ini membutuhkan dua argumen yang sesuai dengan parameter yang mengontrol ukuran distribusi, khususnya rata-rata dan standar deviasi Contoh di bawah menghasilkan 10 nilai acak yang diambil dari distribusi Gaussian dengan rata-rata 0. 0 dan standar deviasi 1. 0 Perhatikan bahwa parameter ini bukan batas pada nilai dan bahwa penyebaran nilai akan dikendalikan oleh bentuk lonceng dari distribusi, dalam hal ini kemungkinan proporsional di atas dan di bawah 0. 0 1 2 3 4 5 6 7 8 9 # menghasilkan nilai Gaussian acak dari acak impor benih dari acak impor gauss # penghasil nomor acak benih benih(1) # menghasilkan beberapa nilai Gaussian untuk _ dalam rentang(10): nilai = gauss(0, 1) cetak(nilai) Menjalankan contoh menghasilkan dan mencetak 10 nilai acak Gaussian 1 2 3 4 5 6 7 8 9 10 1. 2881847531554629 1. 449445608699771 0. 06633580893826191 -0. 7645436509716318 -1. 0921732151041414 0. 03133451683171687 -1. 022103170010873 -1. 4368294451025299 0. 19931197648375384 0. 13337460465860485 Memilih Secara Acak Dari DaftarAngka acak dapat digunakan untuk memilih item secara acak dari daftar Misalnya, jika daftar memiliki 10 item dengan indeks antara 0 dan 9, Anda dapat membuat bilangan bulat acak antara 0 dan 9 dan menggunakannya untuk memilih item secara acak dari daftar. Fungsi mengimplementasikan perilaku ini untuk Anda. Pilihan dibuat dengan kemungkinan seragam Contoh di bawah menghasilkan daftar 20 bilangan bulat dan memberikan lima contoh memilih satu item acak dari daftar 1 2 3 4 5 6 7 8 9 10 11 12 # pilih elemen acak dari daftar dari acak impor benih dari acak impor pilihan # penghasil nomor acak benih benih(1) # siapkan urutan urutan = [i untuk i in range(20)] cetak(urutan) # membuat pilihan dari urutan untuk _ dalam rentang(5): pilihan = pilihan(urutan) cetak(pemilihan) Menjalankan contoh terlebih dahulu akan mencetak daftar nilai bilangan bulat, diikuti dengan lima contoh memilih dan mencetak nilai acak dari daftar 1 2 3 4 5 6 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] 4 18 2 8 3 Subsampel Acak Dari DaftarKami mungkin tertarik untuk mengulangi pemilihan item secara acak dari daftar untuk membuat subset yang dipilih secara acak Yang penting, setelah item dipilih dari daftar dan ditambahkan ke subset, item tersebut tidak boleh ditambahkan lagi. Ini disebut pemilihan tanpa penggantian karena setelah item dari daftar dipilih untuk subset, item tersebut tidak ditambahkan kembali ke daftar awal (i. e. tidak tersedia untuk seleksi ulang) Perilaku ini disediakan dalam fungsi ) yang memilih sampel acak dari daftar tanpa penggantian. Fungsi mengambil daftar dan ukuran subset untuk dipilih sebagai argumen. Perhatikan bahwa item sebenarnya tidak dihapus dari daftar asli, hanya dipilih ke dalam salinan daftar Contoh di bawah menunjukkan memilih subset dari lima item dari daftar 20 bilangan bulat 1 2 3 4 5 6 7 8 9 10 11 # pilih sampel acak tanpa penggantian dari acak impor benih dari acak impor sampel # penghasil nomor acak benih benih(1) # siapkan urutan urutan = [i untuk i in range(20)] cetak(urutan) # pilih subset tanpa penggantian subset = sampel(urutan, 5) cetak(subset) Menjalankan contoh terlebih dahulu mencetak daftar nilai bilangan bulat, kemudian sampel acak dipilih dan dicetak untuk perbandingan 1 2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] [4, 18, 2, 8, 3] Acak Daftar Secara AcakKeacakan dapat digunakan untuk mengocok daftar item, seperti mengocok setumpuk kartu Fungsi shuffle() dapat digunakan untuk mengocok daftar. Pengacakan dilakukan di tempat, artinya daftar yang disediakan sebagai argumen untuk fungsi dikocok, bukan salinan acak dari daftar yang dibuat dan dikembalikan Contoh di bawah ini menunjukkan pengacakan daftar nilai bilangan bulat secara acak 1 2 3 4 5 6 7 8 9 10 11 # mengacak urutan secara acak dari acak impor benih dari acak impor acak # penghasil nomor acak benih benih(1) # siapkan urutan urutan = [i untuk i in range(20)] cetak(urutan) # mengacak urutan secara acak acak(urutan) cetak(urutan) Menjalankan contoh terlebih dahulu mencetak daftar bilangan bulat, lalu daftar yang sama setelah diacak secara acak 1 2 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19] [11, 5, 17, 19, 9, 0, 16, 1, 15, 6, 10, 13, 14, 12, 7, 3, 8, 2, 18, 4] 3. Angka Acak dengan NumPyDalam pembelajaran mesin, Anda mungkin menggunakan pustaka seperti scikit-learn dan Keras Pustaka ini menggunakan NumPy di balik sampul, pustaka yang bekerja dengan vektor dan matriks angka menjadi sangat efisien NumPy juga memiliki implementasi sendiri dari generator nomor pseudorandom dan fungsi pembungkus kenyamanan NumPy juga mengimplementasikan generator nomor pseudorandom Mersenne Twister Mari kita lihat beberapa contoh menghasilkan angka acak dan menggunakan keacakan dengan array NumPy Benih Generator Angka AcakGenerator nomor pseudorandom NumPy berbeda dari generator nomor pseudorandom perpustakaan standar Python Yang penting, penyemaian generator nomor pseudorandom Python tidak memengaruhi generator nomor pseudorandom NumPy. Itu harus diunggulkan dan digunakan secara terpisah Fungsi seed() dapat digunakan untuk seed generator nomor pseudorandom NumPy, mengambil bilangan bulat sebagai nilai seed Contoh di bawah ini menunjukkan bagaimana melakukan seed generator dan bagaimana reseeding generator akan menghasilkan urutan angka acak yang sama. 1 2 3 4 5 6 7 8 9 10 11 # seed generator nomor pseudorandom dari numpy. acak impor benih dari numpy. acak impor random # penghasil nomor acak benih benih(1) # menghasilkan beberapa angka acak cetak(dan(3)) # setel ulang benih benih(1) # menghasilkan beberapa angka acak cetak(dan(3)) Menjalankan contoh menyemai generator nomor acak semu, mencetak urutan angka acak, lalu mengulang generator yang menunjukkan bahwa urutan angka acak yang sama persis dihasilkan 1 2 [4. 17022005e-01 7. 20324493e-01 1. 14374817e-04] [4. 17022005e-01 7. 20324493e-01 1. 14374817e-04] Susunan Nilai Titik Acak AcakArray nilai floating point acak dapat dihasilkan dengan fungsi rand() NumPy Jika tidak ada argumen yang diberikan, maka satu nilai acak dibuat, jika tidak, ukuran array dapat ditentukan Contoh di bawah ini membuat larik 10 nilai floating point acak yang diambil dari distribusi yang seragam 1 2 3 4 5 6 7 8 # menghasilkan nilai floating point acak dari numpy. acak impor benih dari numpy. acak impor random # penghasil nomor acak benih benih(1) # menghasilkan angka acak antara 0-1 nilai = rand(10) cetak(nilai) Menjalankan contoh menghasilkan dan mencetak larik NumPy dari nilai floating point acak 1 2 3 [4. 17022005e-01 7. 20324493e-01 1. 14374817e-04 3. 02332573e-01 1. 46755891e-01 9. 23385948e-02 1. 86260211e-01 3. 45560727e-01 3. 96767474e-01 5. 38816734e-01] Larik Nilai Bilangan Bulat AcakArray bilangan bulat acak dapat dihasilkan menggunakan fungsi randint() NumPy Fungsi ini membutuhkan tiga argumen, ujung bawah rentang, ujung atas rentang, dan jumlah nilai integer yang akan dihasilkan atau ukuran array. Bilangan bulat acak akan diambil dari distribusi yang seragam termasuk nilai yang lebih rendah dan tidak termasuk nilai yang lebih tinggi, mis. g. dalam interval [bawah, atas) Contoh di bawah ini menunjukkan pembuatan array bilangan bulat acak 1 2 3 4 5 6 7 8 # menghasilkan nilai bilangan bulat acak dari numpy. acak impor benih dari numpy. acak impor randint # penghasil nomor acak benih benih(1) # menghasilkan beberapa bilangan bulat nilai = randint(0, 10, 20) cetak(nilai) Menjalankan contoh menghasilkan dan mencetak larik berisi 20 nilai bilangan bulat acak antara 0 dan 10 1 [5 8 9 5 0 0 1 7 6 9 2 4 5 2 4 2 4 7 7 9] Array Nilai Gaussian AcakArray nilai Gaussian acak dapat dihasilkan menggunakan fungsi randn() NumPy Fungsi ini membutuhkan satu argumen untuk menentukan ukuran array yang dihasilkan. Nilai Gaussian diambil dari distribusi Gaussian standar; . 0 dan standar deviasi 1. 0 Contoh di bawah ini menunjukkan cara menghasilkan array nilai Gaussian acak 1 2 3 4 5 6 7 8 # menghasilkan nilai Gaussian acak dari numpy. acak impor benih dari numpy. acak impor randn # penghasil nomor acak benih benih(1) # menghasilkan beberapa nilai Gaussian nilai = randn(10) cetak(nilai) Menjalankan contoh menghasilkan dan mencetak larik 10 nilai acak dari distribusi Gaussian standar 1 2 [ 1. 62434536 -0. 61175641 -0. 52817175 -1. 07296862 0. 86540763 -2. 3015387 1. 74481176 -0. 7612069 0. 3190391 -0. 24937038] Nilai dari distribusi Gaussian standar dapat diskalakan dengan mengalikan nilai dengan standar deviasi dan menambahkan rata-rata dari distribusi skala yang diinginkan. Misalnya 1 nilai skala = rata-rata + nilai * stdev Di mana rata-rata dan stdev adalah rata-rata dan deviasi standar untuk distribusi Gaussian skala yang diinginkan dan nilai adalah nilai yang dihasilkan secara acak dari distribusi Gaussian standar Acak NumPy ArrayArray NumPy dapat diacak secara acak di tempat menggunakan fungsi shuffle() NumPy Contoh di bawah ini menunjukkan cara mengocok array NumPy 1 2 3 4 5 6 7 8 9 10 11 # mengacak urutan secara acak dari numpy. acak impor benih dari numpy. acak impor acak # penghasil nomor acak benih benih(1) # siapkan urutan urutan = [i untuk i in range(20)] cetak(urutan) # mengacak urutan secara acak acak(urutan) cetak(urutan) Menjalankan contoh terlebih dahulu menghasilkan daftar 20 nilai bilangan bulat, lalu mengocok dan mencetak larik yang diacak Bagaimana Anda memilih nomor acak dari 1 hingga 100 dengan Python?Hasilkan angka acak antara 1 dan 100
. x = randint(1, 100) # Pilih angka acak antara 1 dan 100. print(randint(1, 100)) # Pick a random number between 1 and 100. x = randint(1, 100) # Pick a random number between 1 and 100.
Bagaimana Anda bisa memilih item acak dari rentang dengan Python?Metode 1. Buat bilangan bulat acak menggunakan acak. metode randrange() . Python menyediakan fungsi bernama randrange() dalam paket acak yang dapat menghasilkan angka acak dari rentang yang diberikan sementara masih memungkinkan ruang untuk memasukkan langkah-langkah. Contoh di bawah ini menggunakan randrange() untuk mencetak bilangan bulat secara acak. |