Fungsi boxcox() SciPy mengimplementasikan metode Box-Cox. Dibutuhkan argumen, yang disebut lambda, yang mengontrol jenis transformasi yang akan dilakukan Show
from scipy.stats import boxcoxy,fitted_lambda= boxcox(y,lmbda=None) Di sklearn from sklearn.preprocessing import PowerTransformer_
Metode Transformasi Yeo-Johnson
Di SciPy from scipy.stats import yeojohnsony,fitted_lambda = yeojohnson(y,lmbda=None) Di Sklearn Kita dapat menerapkan transformasi dengan mendefinisikan objek PowerTransform dan menyetel argumen "metode" menjadi "yeo-johnson" from sklearn.preprocessing import PowerTransformer Suka artikel saya? . Selain itu, saya memposting artikel baru setiap hari Minggu jadi tetap terhubung untuk artikel mendatang tentang dasar-dasar ilmu data dan seri pembelajaran mesin Dalam pencarian saya, saya berfokus pada transformasi eksponensial karena kita dapat dengan mudah menetapkan eksponen sebagai parameter dan menyediakan rentang berkelanjutan untuk dijelajahi. Meskipun pilihan ini mengecualikan beberapa batas non-linier yang kuat, ini mengembalikan hasil yang baik secara umum Mari kita siapkan data uji dan buat dua variabel terkait x,y, di mana y sama dengan x yang dinaikkan menjadi eksponen e, ditambah beberapa noise Gaussian. Untuk kenyamanan saya telah menetapkan varian noise Gaussian yang bergantung pada eksponen juga #test data setting _Jika kita memplot data dengan plot regresi Fungsi BiayaYang kita butuhkan sekarang adalah fungsi biaya, ukuran 'kebaikan' dari hubungan linier yang ingin kita maksimalkan. Indikator yang baik adalah koefisien korelasi momen-produk Pearson r, yang mengidentifikasi kekuatan korelasi linier antara dua variabel Mari kita definisikan fungsi biaya #define cost function Mengoptimalkan fungsiPada titik ini, kita harus memanggil salah satu metode Scipy #define cost function _1 karena fungsi biaya kita adalah fungsi skalar. Algoritme di balik paket ini adalah metode Brent, sebuah algoritma pencarian akar tanpa estimasi gradienSaya telah menemukan video yang sangat lengkap dari saluran Oscar Veliz tentang metode Brent dan ketergantungannya pada metode Dekker dan garis potong. Lihat jika Anda ingin tahu lebih banyak tentang ini, dan lainnya, fungsi pengoptimalan Mari kita mengimpor dan memanggil fungsi #define cost function _1from scipy.optimize import minimize_scalarminimize_scalar(cost_function)_ Kami juga dapat mengatur rentang pencarian, menghindari nilai 0 untuk eksponen yang menyiratkan r Pearson untuk mengembalikan nilai yang tidak valid, bahkan jika #define cost function 3 dapat menanganinyaKoefisien sebenarnya didefinisikan sebagai Jika x dinaikkan menjadi 0, standar deviasinya adalah 0, dan rasio mengembalikan nilai yang tidak valid. Untuk melakukan pencarian terbatas, mari kita panggil minimize_scalar(cost_function,bounds=(0.1, 10), method='bounded') Daftar yang dihasilkan adalah r value: 0.9242 exp: 3.8815 Eksponen yang dihasilkan ditemukan, hanya dalam 12 iterasi, adalah 2. 482, sangat dekat dengan eksponen yang kita gunakan untuk menghasilkan data yaitu 2. 465 Suara #define cost function _4 menunjukkan nilai nilai absolut negatif dari Pearson r, yang tampaknya cukup tinggi. Mari kita plot lagi y dan x menerapkan eksponen yang ditemukan pada x, kita akan melihat hubungan linier yang kuatJika kita menyimpan setiap eksponen iterasi dan koefisien Pearson terkait, kita dapat memplot kurva r-eksponen Tes lainnyaBagaimana jika kita meningkatkan dampak noise pada data pengujian? y = (x**e) + np.random.normal(0,20**e,x.shape) Eksekusi fungsi optimasi mengembalikan hasil berikut fun: -0.42597730774659237 Eksponen optimal yang ditemukan tidak setepat hasil sebelumnya, tetapi masih memiliki aproksimasi yang baik Meningkatkan lebih banyak dampak kebisingan akan menyebabkan hasil yang menyesatkan karena mengatasi kebisingan pada data inti KesimpulanMetode pengoptimalan adalah tambang emas bagi banyak aplikasi yang siap dieksplorasi. Dengan artikel ini, saya tidak ingin mengajarkan teknik baru tetapi saya ingin mempromosikan eksperimen metode efektif ini pada masalah 'tidak biasa' Bagaimana Anda mengubah distribusi eksponensial menjadi distribusi normal?Lagipula, jika f. R→R adalah fungsi yang f(X) memiliki distribusi Normal(μ,σ) setiap kali X memiliki distribusi Eksponensial(λ), maka fungsi g(x)=τ( . τ. ) distribusi. has a Normal(ν,|τ|) distribution.
Bagaimana Anda mengonversi data ke distribusi normal dengan Python?Memeriksa distribusi dengan Skewness Pengecekan distribusi beberapa variabel menggunakan Histogram Memeriksa distribusi variabel menggunakan plot KDE Memeriksa distribusi variabel menggunakan plot Q-Q Transformasi untuk mengubah distribusi fitur Bagaimana Anda mengonversi nonPada dasarnya ini hanya meningkatkan distribusi menjadi pangkat lambda (λ) untuk mengubah distribusi non-normal menjadi distribusi normal. Parameter lambda (λ) untuk Box-Cox memiliki rentang -5 < λ < 5. Jika parameter lambda (λ) ditentukan menjadi 2, maka distribusi akan dipangkatkan menjadi 2 — Y2.
Bagaimana cara mengubah data miring ke distribusi normal dengan Python?Mencatat Transformasi Data Miring untuk mendapatkan Distribusi Normal . Langkah 1. Muat perpustakaan yang diperlukan Langkah 2. Muat kumpulan data Langkah 3. Gambarlah plot distribusi Langkah 4. Log Mengubah Variabel Miring. Mari kita ubah log variabel ini dan lihat apakah distribusi variabel ini bisa mendekati normal |