0% menganggap dokumen ini bermanfaat (0 suara)
24 tayangan8 halaman

Manipulasi Array NumPy untuk ML

Diunggah oleh

farmsiapoteker
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
24 tayangan8 halaman

Manipulasi Array NumPy untuk ML

Diunggah oleh

farmsiapoteker
Hak Cipta
© All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOCX, PDF, TXT atau baca online di Scribd

Chapter 5

Index, Slice and Reshape NumPy


Arrays
Data pembelajaran mesin direpresentasikan sebagai array. Di
Python, data diwakili hampir secara universal
sebagai array NumPy. Jika Anda baru mengenal Python, Anda
mungkin bingung dengan beberapa Pythonic
cara mengakses data, seperti pengindeksan negatif dan
pemotongan array. Dalam tutorial ini, Anda akan melakukannya
temukan cara memanipulasi dan mengakses data Anda dengan
benar dalam array NumPy. Setelah menyelesaikan
tutorial ini, Anda akan tahu:
 Cara mengonversi data daftar Anda ke array NumPy.
 Cara mengakses data menggunakan pengindeksan dan
pengirisan Pythonic.
 Cara mengubah ukuran data Anda untuk memenuhi harapan
beberapa API pembelajaran mesin.
Mari kita mulai.
5.1 Ringkasan Tutorial

Dari Daftar ke Array


1. Array Indexing
2. Mengiris Array
3. Pembentukan Ulang Array
5.2 Dari Daftar ke Array
Secara umum, saya sarankan memuat data Anda dari file
menggunakan Pandas atau bahkan fungsi NumPy.
Bagian ini mengasumsikan Anda telah memuat atau menghasilkan
data Anda dengan cara lain dan sekarang
diwakili menggunakan daftar Python. Mari kita lihat mengonversi
data Anda dalam daftar menjadi array NumPy.
5.2.1 Daftar Satu Dimensi ke Larik
Anda dapat memuat data Anda atau menghasilkan data Anda dan
memiliki akses ke sana sebagai daftar. Anda dapat mengubah file
daftar data satu dimensi ke array dengan memanggil fungsi array ()
NumPy.
# create one-dimensional array
from numpy import array
# list of data
data = [11, 22, 33, 44, 55]
# array of data
data = array(data)
print(data)
print(type(data))

Menjalankan contoh mengonversi daftar satu dimensi menjadi


array NumPy.
[11 22 33 44 55]
<class ✬[Link]✬>
5.2.2 Daftar Dua Dimensi dari Daftar ke Larik
Kemungkinan besar dalam pembelajaran mesin Anda akan memiliki
data dua dimensi. Itu adalah tabel
data di mana setiap baris mewakili pengamatan baru dan setiap
kolom merupakan fitur baru. Mungkin Anda
menghasilkan data atau memuatnya menggunakan kode khusus
dan sekarang Anda memiliki daftar daftar. Setiap daftar
mewakili pengamatan baru. Anda dapat mengonversi daftar daftar
Anda ke array NumPy dengan cara yang sama
seperti di atas, dengan memanggil fungsi array ().
# create two-dimensional array
from numpy import array
# list of data
data = [[11, 22],
[33, 44],
[55, 66]]
# array of data
data = array(data)
print(data)
print(type(data))
Menjalankan contoh menunjukkan data berhasil dikonversi.
[[11 22]
[33 44]
[55 66]]
<class ✬[Link]✬>
5.3 Array Indexing
Setelah data Anda direpresentasikan menggunakan array NumPy,
Anda dapat mengaksesnya menggunakan pengindeksan. Ayo
lihat beberapa contoh mengakses data melalui pengindeksan.
5.3.1 Pengindeksan Satu Dimensi
Umumnya, pengindeksan berfungsi seperti yang Anda harapkan
dari pengalaman Anda dengan program lain
bahasa ming, seperti Java, C #, dan C ++. Misalnya, Anda dapat
mengakses elemen menggunakan
operator braket [] menentukan indeks zero-offffset untuk nilai yang
akan diambil.
# index a one-dimensional array
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
# index data
print(data[0])
print(data[4])
Menjalankan contoh mencetak nilai pertama dan terakhir dalam
larik.
11
55
Menentukan bilangan bulat yang terlalu besar untuk batas larik
akan menyebabkan kesalahan.
# index array out of bounds
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
# index data
print(data[5])
Menjalankan contoh mencetak kesalahan berikut:
IndexError: index 5 is out of bounds for axis 0 with size 5
Satu perbedaan utama adalah Anda dapat menggunakan indeks
negatif untuk mengambil nilai offset dari akhir
dari larik. Misalnya, indeks -1 merujuk ke item terakhir dalam larik.
Indeks -2 kembali
item terakhir kedua kembali ke -5 untuk item kelima dalam contoh
saat ini.
# negative array indexing
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
# index data
print(data[-1])
print(data[-5])
Menjalankan contoh mencetak item terakhir dan kelima dalam
larik.
55
11
5.3.2 Two-Dimensional Indexing
Mengindeks data dua dimensi mirip dengan mengindeks data satu
dimensi, kecuali koma
digunakan untuk memisahkan indeks untuk setiap dimensi.
data[0,0]
Ini berbeda dari bahasa berbasis C di mana operator braket
terpisah digunakan untuk masing-masing
dimensi.
data[0][0]
Sebagai contoh, kita dapat mengakses baris kelima dan kolom
kelima sebagai berikut:
# index two-dimensional array
from numpy import array
# define array
data = array([
[11, 22],
[33, 44],
[55, 66]])
# index data
print(data[0,0])
Menjalankan contoh mencetak item kelima dalam kumpulan data.
11
Jika kita tertarik pada semua item di baris kelima, kita bisa
meninggalkan indeks dimensi kedua
kosong, misalnya:
# index row of two-dimensional array
from numpy import array
# define array
data = array([
[11, 22],
[33, 44],
[55, 66]])
# index data
print(data[0,])
Ini mencetak baris data pertama.
[11 22]
5.4 Mengiris Array

Sejauh ini bagus; membuat dan mengindeks array terlihat familiar.


Sekarang kita sampai pada pengiris array, dan
ini adalah salah satu fitur yang menyebabkan masalah bagi pemula
untuk array Python dan NumPy. Struktur
seperti daftar dan array NumPy dapat diiris. Ini berarti struktur
selanjutnya
dapat diindeks dan diambil kembali. Ini paling berguna dalam
pembelajaran mesin saat menentukan input
variabel dan variabel keluaran, atau memisahkan baris pelatihan
dari baris pengujian. Mengiris ditentukan
menggunakan operator titik dua: dengan dari dan ke indeks
masing-masing sebelum dan sesudah kolom.
Irisan memanjang dari indeks from dan mengakhiri satu item
sebelum indeks ke.
data[from:to]
5.4.1 One-Dimensional Slicing
Anda dapat mengakses semua data dalam dimensi array dengan
menentukan potongan ':' tanpa indeks.
# slice a one-dimensional array
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print(data[:])
Menjalankan contoh mencetak semua elemen dalam array.
[11 22 33 44 55]
Item kelima dari array dapat dipotong dengan menentukan
potongan yang dimulai pada indeks 0 dan berakhir
pada indeks 1 (satu item sebelum indeks ke).
# slice a subset of a one-dimensional array
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print(data[0:1])
Menjalankan contoh mengembalikan sub-larik dengan elemen
fifirst.
[11]
5.4. Array Slicing
Kami juga dapat menggunakan indeks negatif dalam irisan.
Misalnya, kita dapat memotong dua item terakhir masuk
daftar dengan memulai irisan di -2 (item terakhir kedua) dan tidak
menentukan indeks ke; bahwa
membawa potongan itu ke ujung dimensi.
# negative slicing of a one-dimensional array
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print(data[-2:])
Menjalankan contoh akan mengembalikan sub-larik dengan hanya
dua item terakhir.
[44 55]
5.4.2 Two-Dimensional Slicing
Mari kita lihat dua contoh pemotongan dua dimensi yang paling
mungkin Anda gunakan di mesin
belajar.
Split Input and Output Features
Merupakan hal yang umum untuk membagi data yang Anda muat
menjadi variabel input (X) dan variabel output (y). Kita
dapat melakukan ini dengan memotong semua baris dan semua
kolom hingga, tetapi sebelum kolom terakhir, lalu secara terpisah
mengindeks kolom terakhir. Untuk fitur input, kita dapat memilih
semua baris dan semua kolom kecuali
yang terakhir dengan menentukan: untuk di indeks baris, dan: -1 di
indeks kolom.
X = [:, :-1]
Untuk kolom keluaran, kita dapat memilih semua baris lagi
menggunakan: dan mengindeks kolom terakhir saja
dengan menentukan indeks -1.
y = [:, -1]
Dengan menggabungkan semua ini, kita dapat memisahkan dataset
2D 3-kolom menjadi input dan output
data sebagai berikut:
# split input and output data
from numpy import array
# define array
data = array([
[11, 22, 33],
[44, 55, 66],
[77, 88, 99]])
# separate data
X, y = data[:, :-1], data[:, -1]
print(X)
print(y)
5.4. Array Slicing
Menjalankan contoh mencetak elemen X dan y yang terpisah.
Perhatikan bahwa X adalah larik 2D dan
y adalah larik 1D.
[[11 22]
[44 55]
[77 88]]
[33 66 99]
Split Train and Test Rows
Merupakan hal yang umum untuk membagi kumpulan data yang
dimuat menjadi rangkaian rangkaian dan pengujian terpisah. Ini
adalah pemisahan dari
baris di mana sebagian akan digunakan untuk melatih model dan
sebagian sisanya akan digunakan
untuk memperkirakan keterampilan model yang dilatih. Ini akan
melibatkan pemotongan semua kolom dengan menentukan:
dalam indeks dimensi kedua. Dataset pelatihan akan menjadi
semua baris dari awal hingga
titik pisah.
train = data[:split, :]
Dataset pengujian akan menjadi semua baris mulai dari titik
pemisah hingga akhir dimensi.
test = data[split:, :]
Dengan menggabungkan semua ini, kita dapat membagi dataset
pada titik pisah 2 yang dibuat-buat.
# split train and test data
from numpy import array
# define array
data = array([
[11, 22, 33],
[44, 55, 66],
[77, 88, 99]])
# separate data
split = 2
train,test = data[:split,:],data[split:,:]
print(train)
print(test)
Menjalankan contoh akan memilih dua baris kelima untuk
pelatihan dan baris terakhir untuk set pengujian.
[[11 22 33]
[44 55 66]]
[[77 88 99]]
5.5 Array Reshaping
Setelah memotong data Anda, Anda mungkin perlu membentuknya
kembali. Misalnya, beberapa pustaka, seperti
scikit-learn, mungkin memerlukan array satu dimensi dari variabel
output (y) dibentuk sebagai a
array dua dimensi dengan satu kolom dan hasil untuk setiap kolom.
Beberapa algoritme, seperti
Jaringan saraf berulang Memori Jangka Pendek di Keras,
memerlukan masukan untuk ditentukan
sebagai larik tiga dimensi yang terdiri dari sampel, langkah waktu,
dan fitur. Ini penting untuk
tahu bagaimana membentuk kembali array NumPy Anda sehingga
data Anda memenuhi harapan yang spesifik
Perpustakaan Python. Kami akan melihat dua contoh ini.
5.5.1 Data Shape
Array NumPy memiliki atribut bentuk yang mengembalikan tupel
dengan panjang setiap dimensi
larik. Sebagai contoh:
# shape of one-dimensional array
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print([Link])
Menjalankan contoh mencetak tupel untuk satu dimensi.
(5,)
Tupel dengan dua panjang dikembalikan untuk larik dua dimensi.
# shape of a two-dimensional array
from numpy import array
# list of data
data = [[11, 22],
[33, 44],
[55, 66]]
# array of data
data = array(data)
print([Link])
Menjalankan contoh mengembalikan tupel dengan jumlah baris dan
kolom.
(3, 2)
Anda dapat menggunakan ukuran dimensi array Anda dalam
dimensi bentuk, seperti menentukan
parameter. Elemen tupel dapat diakses seperti array, dengan
indeks ke-0 untuk
jumlah baris dan indeks pertama untuk jumlah kolom. Sebagai
contoh:
# row and column shape of two-dimensional array
from numpy import array
# list of data
data = [[11, 22],
[33, 44],
[55, 66]]
# array of data
data = array(data)
print(✬Rows: %d✬ % [Link][0])
print(✬Cols: %d✬ % [Link][1])
Menjalankan contoh mengakses ukuran spesifik dari setiap
dimensi.
Rows: 3
Cols: 2
5.5.2 Reshape 1D to 2D Array
Merupakan hal yang umum untuk perlu membentuk kembali larik
satu dimensi menjadi larik dua dimensi dengan
satu kolom dan beberapa array. NumPy menyediakan fungsi
reshape () pada array NumPy
objek yang dapat digunakan untuk membentuk kembali data.
Fungsi reshape () mengambil satu argumen
yang menentukan bentuk baru dari larik. Dalam kasus
pembentukan kembali larik satu dimensi menjadi
array dua dimensi dengan satu kolom, tupel akan menjadi bentuk
array sebagai yang kelima
dimensi ([Link] [0]) dan 1 untuk dimensi kedua.
data = [Link](([Link][0], 1))
Menggabungkan semua ini, kami mendapatkan contoh yang
berhasil berikut ini.
# reshape 1D array to 2D
from numpy import array
# define array
data = array([11, 22, 33, 44, 55])
print([Link])
# reshape
data = [Link](([Link][0], 1))
print([Link])
Menjalankan contoh mencetak bentuk larik satu dimensi,
membentuk larik menjadi
memiliki 5 baris dengan 1 kolom, lalu cetak bentuk baru ini.
(5,)
(5, 1)
5.5.3 Reshape 2D to 3D Array
Merupakan hal yang umum untuk perlu membentuk kembali data
dua dimensi di mana setiap baris mewakili suatu urutan
ke dalam array tiga dimensi untuk algoritme yang mengharapkan
banyak sampel dalam satu waktu atau lebih
langkah dan satu atau lebih fitur. Contoh yang bagus adalah model
jaringan saraf berulang LSTM
di pustaka deep learning Keras. Fungsi pembentukan kembali
dapat digunakan secara langsung, dengan menetapkan
dimensi baru. Ini jelas dengan contoh di mana setiap urutan
memiliki beberapa langkah waktu
dengan satu pengamatan (fitur) di setiap langkah waktu. Kita dapat
menggunakan ukuran di atribut bentuk di
larik untuk menentukan jumlah sampel (baris) dan kolom (langkah
waktu) dan limaix nomor
fitur di 1.
[Link](([Link][0], [Link][1], 1))
Menggabungkan semua ini, kami mendapatkan contoh yang
berhasil berikut ini.
# reshape 2D array to 3D
from numpy import array
# list of data
data = [[11, 22],
[33, 44],
[55, 66]]
# array of data
data = array(data)
print([Link])
# reshape
data = [Link](([Link][0], [Link][1], 1))
print([Link])
Menjalankan contoh pertama mencetak ukuran setiap dimensi
dalam larik 2D, membentuk ulang
larik, lalu meringkas bentuk larik 3D baru.
(3, 2)
(3, 2, 1)
5.6 Extensions
Bagian ini mencantumkan beberapa ide untuk memperluas tutorial
yang mungkin ingin Anda jelajahi.
 Kembangkan satu contoh pengindeksan, pemotongan, dan
pembentukan kembali array data kecil Anda sendiri.
 Muat set data nyata kecil dari CSV fifile dan bagi menjadi
elemen masukan dan keluaran
 Muat set data nyata kecil dari CSV fifile dan bagi menjadi
elemen pelatihan dan pengujian.
Jika Anda menjelajahi salah satu ekstensi ini, saya ingin tahu.
5.7 Further Reading
Bagian ini memberikan lebih banyak sumber daya tentang topik
tersebut jika Anda ingin mempelajari lebih dalam.

Anda mungkin juga menyukai