PCA Sebelum Model
Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 32 dari 51.
Fitur yang lebih sedikit membuat model lebih cepat dan mengurangi noise yang perlu ditangani. PCA dapat ditempatkan dalam pipeline, tepat sebelum model:
for n in [2, 5, 10, 20, 40, 64]:
model = make_pipeline(PCA(n_components=n), KNeighborsClassifier())
print(n, f"{cross_val_score(model, X, y, cv=5).mean():.3f}")Pada dataset digits:
Akurasi mulai stabil di sekitar 20: 44 arah lainnya hampir tidak menambah apa pun. Setiap lipatan menyesuaikan PCA dengan baris latihannya sendiri, jadi tidak ada data yang bocor.
Satuannya berbeda? Letakkan StandardScaler() di awal, seperti biasa.
Tantangan
SedangSebuah laboratorium minyak zaitun menilai minyak berdasarkan cahaya yang diserapnya pada 36 panjang gelombang, ditambah 4 uji laboratorium. Berapa sedikit fitur yang diperlukan? Program membaca nilai toleransi.
- Untuk setiap
ndalamsizes, lakukan validasi silang (5 lipatan) pada pipeline: scaler, PCA dengannkomponen,LogisticRegression(max_iter=1000). Cetak setiap skor. - Cetak jumlah komponen paling sedikit yang skornya berada dalam batas toleransi dari skor terbaik.
Untuk laboratorium lain dan 0.05:
2 components: 0.817
3 components: 0.833
4 components: 0.889
5 components: 0.928
10 components: 0.928
20 components: 0.917
40 components: 0.922
Fewest within 0.05 of the best: 4 componentsCoba sendiri
import pandas as pd
from sklearn.pipeline import make_pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
# 180 sampel minyak zaitun: cahaya yang diserap pada 36 panjang gelombang, 4 uji laboratorium, dan tingkat mutunya
oils = pd.read_csv("oils.csv")
X = oils.drop(columns=["oil", "grade"])
y = oils["grade"]
sizes = [2, 3, 4, 5, 10, 20, 40]
slack = float(input())
# Tulis kodemu di bawah ini
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Tanpa Pengawasan
1Menemukan Kelompok
Belajar Tanpa LabelMengukur KemiripanK-Means secara ManualK-Means dengan scikit-learnRangkuman: Anggota Gym4Pengelompokan Hierarkis
Penggabungan Langkah demi LangkahModel AglomeratifDendrogramRingkasan: Ras Anjing7PCA dalam Praktik
Melihat 64 DimensiKomponen sebagai PolaKompres dan RekonstruksiPCA Sebelum ModelRangkuman: Pemindai Wajah10Proyek: Penjelajah Digit
Amati DigitnyaPerkecil dengan PCAKelompokkan DigitBeri Nama pada KelompokTemukan yang Tidak BiasaLatihan sendiri: Compiler Python online