Menu
CoddyTech

Menangani Nilai Pencilan

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

Sepuluh unit apartemen masing-masing menggunakan sekitar 10 m³ air, tetapi kebocoran membuat satu unit menggunakan 64 m³. Kamu bisa menghapusnya, atau membatasinya pada pagar terdekat:

Penggunaan air oleh 10 unit apartemen dalam tiga baris. Pertahankan: sembilan titik di dekat 10 dan kebocoran pada 64, rata-rata 15.2. Hapus: kebocoran dihilangkan, rata-rata 9.8. Batasi: kebocoran ditarik kembali ke pagar pada 14, rata-rata 10.2

np.clip(a, low, high) membatasi seluruh array:

water = np.array([8, 11, 9, 10, 12, 9, 64, 10, 11, 8])
low, high = 6.0, 14.0  # batas IQR
dropped = water[(water >= low) & (water <= high)]
capped = np.clip(water, low, high)
print(len(dropped), len(capped))
print(capped)

Ini mencetak:

9 10
[ 8. 11.  9. 10. 12.  9. 14. 10. 11.  8.]

Model bisa mengejar satu nilai datar itu, jadi tentukan sebelum pelatihan. Perbaiki atau hapus salah ketik, pertahankan atau batasi nilai ekstrem yang sebenarnya. Jangan pernah menghapusnya tanpa memberi tahu: sebutkan berapa banyak yang kamu ubah.

challenge icon

Tantangan

Sedang

Aplikasi bersepeda mencatat kecepatan rata-rata 15 perjalanan dalam speeds; dua di antaranya tampak tidak wajar. Kode awal menyimpan batas IQR dalam low dan high.

  1. Buat dropped, yaitu kecepatan yang berada di antara batas-batas tersebut, termasuk kedua batasnya, dan capped.
  2. Cetak satu baris untuk masing-masing keep, drop, dan cap: jumlah perjalanan, nilai rata-ratanya, dan .std(), dibulatkan menjadi 2 angka desimal.
  3. Cetak jumlah perjalanan yang nilainya berubah karena pembatasan.

Untuk 10 perjalanan pengendara lain:

Keep: 10 rides, mean 21.38, std 6.58
Drop: 9 rides, mean 19.2, std 0.77
Cap: 10 rides, mean 19.45, std 1.04
Capping changed 1 of 10 rides

Coba sendiri

import numpy as np


# Mengembalikan batas IQR bawah dan atas dari sebuah array
def iqr_fences(a):
    q1 = np.percentile(a, 25)
    q3 = np.percentile(a, 75)
    iqr = q3 - q1
    return q1 - 1.5 * iqr, q3 + 1.5 * iqr


speeds = np.array([24.5, 22.8, 26.1, 23.9, 3.1, 25.4, 21.7, 24.2, 27.3, 78.4, 23.1, 25.8, 22.4, 24.9, 26.6])
low, high = iqr_fences(speeds)

# Tulis kodemu di bawah ini
quiz iconUji dirimu

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

Semua pelajaran di Statistik untuk ML

Latihan sendiri: Compiler Python online