Menu
CoddyTech

PCA

Termasuk bagian Pembelajaran Tanpa Pengawasan dalam perjalanan Machine Learning di Coddy. Pelajaran 26 dari 51.

PCA mencari arah dengan sebaran paling luas, lalu arah terbaik yang tegak lurus terhadapnya, dan seterusnya: komponen. Pada wine twins:

Wine twins yang telah diskalakan sebagai kumpulan titik yang naik ke kanan, dengan dua panah merah dari pusat: panah panjang, komponen 1, mengikuti kumpulan titik, dan panah pendek, komponen 2, melintasinya

Bayangan setiap baris pada beberapa komponen pertama menjadi fitur barunya:

from sklearn.decomposition import PCA
scaled = StandardScaler().fit_transform(X)
points = PCA(n_components=2).fit_transform(scaled)
print(X.shape, points.shape)

Untuk semua 13 pengukuran wine, ini mencetak (178, 13) (178, 2).

Skalakan terlebih dahulu. PCA mengejar sebaran, jadi fitur dengan satuan besar, seperti proline yang nilainya mencapai ratusan, unggul hanya karena ukurannya:

Dua peta PCA untuk 178 wine. Kiri, tanpa penskalaan: ketiga kultivar bertumpang tindih dalam satu gumpalan. Kanan, setelah diskalakan: tiga kelompok yang jelas

challenge icon

Tantangan

Sedang

Sebuah laboratorium air menguji botol dari tiga mata air, masing-masing dengan 8 pengukuran. Bisakah peta 2D membedakan mata air tersebut? draw_springs(ax, points) memberi warna pada setiap titik 2D berdasarkan mata airnya.

  1. Skalakan X, lalu kurangi dimensinya menjadi 2 komponen dengan PCA, dan simpan hasilnya ke points.
  2. Cetak jumlah fitur sebelum dan sesudahnya.
  3. Gambarkan titik-titik dengan draw_springs lalu tampilkan.

Untuk laboratorium lain, dengan 6 pengukuran:

From 6 features to 2

Grafik berjudul Spring Waters in 2D dengan komponen pertama pada sumbu mendatar dan komponen kedua pada sumbu tegak: botol alpine di kiri bawah, volcanic di kanan bawah, coastal di bagian atas, dengan legenda

Coddy menjelaskan petamu.

Coba sendiri

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA

# Laboratorium air: 8 pengukuran untuk setiap botol dari 120 botol yang berasal dari tiga mata air
waters = pd.read_csv("waters.csv")
X = waters.drop(columns="spring")


# Menampilkan titik-titik 2D dalam diagram sebar, satu kelompok per mata air, dengan legenda
def draw_springs(ax, points):
    for spring in ["alpine", "volcanic", "coastal"]:
        rows = (waters["spring"] == spring).to_numpy()
        ax.scatter(points[rows, 0], points[rows, 1], s=16, label=spring)
    ax.legend()


fig, ax = plt.subplots()
ax.set_title("Spring Waters in 2D")
ax.set_xlabel("First component")
ax.set_ylabel("Second component")

# Tulis kodemu di bawah ini
quiz iconUji dirimu

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

Semua pelajaran di Pembelajaran Tanpa Pengawasan

Latihan sendiri: Compiler Python online