View a markdown version of this page

Mengaitkan Hasil Prediksi dengan Catatan Input - Amazon SageMaker AI

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengaitkan Hasil Prediksi dengan Catatan Input

Saat membuat prediksi pada dataset besar, Anda dapat mengecualikan atribut yang tidak diperlukan untuk prediksi. Setelah prediksi dibuat, Anda dapat mengaitkan beberapa atribut yang dikecualikan dengan prediksi tersebut atau dengan data input lain dalam laporan Anda. Dengan menggunakan transformasi batch untuk melakukan langkah-langkah pemrosesan data ini, Anda sering dapat menghilangkan preprocessing atau postprocessing tambahan. Anda dapat menggunakan file input dalam format JSON dan CSV saja.

Alur Kerja untuk Mengaitkan Kesimpulan dengan Catatan Input

Diagram berikut menunjukkan alur kerja untuk mengaitkan kesimpulan dengan catatan input.

Alur kerja untuk mengaitkan kesimpulan dengan catatan input.

Untuk mengaitkan kesimpulan dengan data input, ada tiga langkah utama:

  1. Filter data input yang tidak diperlukan untuk inferensi sebelum meneruskan data input ke pekerjaan transformasi batch. Gunakan InputFilter parameter untuk menentukan atribut mana yang akan digunakan sebagai input untuk model.

  2. Mengaitkan data input dengan hasil inferensi. Gunakan JoinSource parameter untuk menggabungkan data input dengan inferensi.

  3. Filter data gabungan untuk mempertahankan input yang diperlukan untuk memberikan konteks untuk menafsirkan prediksi dalam laporan. Gunakan OutputFilter untuk menyimpan bagian tertentu dari dataset yang bergabung dalam file output.

Gunakan Pemrosesan Data dalam Pekerjaan Transformasi Batch

Saat membuat pekerjaan transformasi batch dengan CreateTransformJob memproses data:

  1. Tentukan bagian input untuk diteruskan ke model dengan InputFilter parameter dalam struktur DataProcessing data.

  2. Gabungkan data input mentah dengan data yang diubah dengan JoinSource parameter.

  3. Tentukan bagian mana dari input gabungan dan data transformasi dari pekerjaan transformasi batch untuk disertakan dalam file output dengan OutputFilter parameter.

  4. Pilih JSON- atau CSV-formatted file untuk input:

    • Untuk file Lines-formatted input JSON atau JSON, SageMaker AI menambahkan SageMakerOutput atribut ke file input atau membuat file output JSON baru dengan SageMakerOutput atribut SageMakerInput dan. Untuk informasi selengkapnya, lihat DataProcessing.

    • Untuk file CSV-formatted input, data input yang digabungkan diikuti oleh data yang diubah dan outputnya adalah file CSV.

Jika Anda menggunakan algoritma dengan DataProcessing struktur, itu harus mendukung format yang Anda pilih untuk file input dan output. Misalnya, dengan TransformOutput bidang CreateTransformJob API, Anda harus mengatur Accept parameter ContentType dan ke salah satu nilai berikut:text/csv,application/json, atauapplication/jsonlines. Sintaks untuk menentukan kolom dalam file CSV dan menentukan atribut dalam file JSON berbeda. Menggunakan sintaks yang salah menyebabkan kesalahan. Untuk informasi selengkapnya, lihat Contoh Transformasi Batch. Untuk informasi selengkapnya tentang format file input dan output untuk algoritma bawaan, lihatBuilt-in algoritma dan model terlatih di Amazon SageMaker.

Pembatas rekaman untuk input dan output juga harus konsisten dengan input file yang Anda pilih. SplitTypeParameter menunjukkan cara membagi catatan dalam dataset input. AssembleWithParameter menunjukkan cara merakit kembali catatan untuk output. Jika Anda mengatur format input dan output ketext/csv, Anda juga harus mengatur AssembleWith parameter SplitType dan keline. Jika Anda mengatur format input dan output keapplication/jsonlines, Anda dapat mengatur keduanya SplitType dan AssembleWith keline.

Untuk file CSV, Anda tidak dapat menggunakan karakter baris baru yang disematkan. Untuk file JSON, nama atribut SageMakerOutput dicadangkan untuk output. File input JSON tidak dapat memiliki atribut dengan nama ini. Jika ya, data dalam file input mungkin akan diganti.

Operator JsonPath yang Didukung

Untuk memfilter dan menggabungkan data input dan inferensi, gunakan subexpression JsonPath. SageMaker AI hanya mendukung subset dari operator JSONPath yang ditentukan. Tabel berikut mencantumkan operator JSONPath yang didukung. Untuk data CSV, setiap baris diambil sebagai array JSON, jadi hanya JSONPaths berbasis indeks yang dapat diterapkan, misalnya,. $[0] $[1:] Data CSV juga harus mengikuti format https://tools.ietf.org/html/rfc4180 RFC.

JsonPath Operator Deskripsi Contoh
$

Elemen root untuk query. Operator ini diperlukan di awal semua ekspresi jalur.

$
.<name>

Elemen anak bernotasi titik.

$.id

*

Sebuah wildcard. Gunakan sebagai pengganti nama atribut atau nilai numerik.

$.id.*

['<name>' (,'<name>')]

Elemen bernotasi tanda kurung atau beberapa elemen anak.

$['id','SageMakerOutput']

[<number> (,<number>)]

Indeks atau array indeks. Nilai indeks negatif juga didukung. -1Indeks mengacu pada elemen terakhir dalam array.

$[1] , $[1,3,5]

[<start>:<end>]

Operator irisan array. Metode array slice () mengekstrak bagian dari array dan mengembalikan array baru. Jika Anda menghilangkan<start>, SageMaker AI menggunakan elemen pertama dari array. Jika Anda menghilangkan<end>, SageMaker AI menggunakan elemen terakhir dari array.

$[2:5], $[:5], $[2:]

Saat menggunakan notasi tanda kurung untuk menentukan beberapa elemen anak dari bidang tertentu, sarang anak tambahan dalam tanda kurung tidak didukung. Misalnya, $.field1.['child1','child2'] didukung sementara $.field1.['child1','child2.grandchild'] tidak.

Untuk informasi lebih lanjut tentang operator JSONPath, lihat JsonPath di. GitHub

Contoh Transformasi Batch

Contoh berikut menunjukkan beberapa cara umum untuk menggabungkan data input dengan hasil prediksi.

Contoh: Kesimpulan Hanya Keluaran

Secara default, DataProcessing parameter tidak menggabungkan hasil inferensi dengan input. Ini hanya menghasilkan hasil inferensi.

Jika Anda ingin secara eksplisit menentukan untuk tidak menggabungkan hasil dengan input, gunakan Amazon SageMaker Python SDK dan tentukan pengaturan berikut dalam panggilan transformer.

sm_transformer = sagemaker.transformer.Transformer(…) sm_transformer.transform(…, input_filter="$", join_source= "None", output_filter="$")

Untuk mengeluarkan kesimpulan menggunakan AWS SDK untuk Python, tambahkan kode berikut ke CreateTransformJob permintaan Anda. Kode berikut meniru perilaku default.

{ "DataProcessing": { "InputFilter": "$", "JoinSource": "None", "OutputFilter": "$" } }

Contoh: Inferensi Output Bergabung dengan Data Input

Jika Anda menggunakan Amazon SageMaker Python SDK untuk menggabungkan data input dengan kesimpulan dalam file output, tentukan accept parameter assemble_with dan saat menginisialisasi objek transformer. Saat Anda menggunakan panggilan transformasi, tent Input ukan untuk join_source parameter, dan tent split_type ukan content_type parameter dan juga. split_typeParameter harus memiliki nilai yang sama denganassemble_with, dan content_type parameter harus memiliki nilai yang sama denganaccept. Untuk informasi selengkapnya tentang parameter dan nilai yang diterima, lihat halaman Transformer di Amazon SageMaker AI Python SDK.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, join_source="Input", split_type="Line", content_type="text/csv")

Jika Anda menggunakan AWS SDK untuk Python (Boto 3), gabungkan semua data input dengan inferensi dengan menambahkan kode berikut ke permintaan Anda CreateTransformJob. Nilai untuk Accept dan ContentType harus cocok, dan nilai untuk AssembleWith dan juga SplitType harus cocok.

{ "DataProcessing": { "JoinSource": "Input" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }

Untuk file input JSON atau JSON Lines, hasilnya ada di SageMakerOutput kunci dalam file JSON input. Misalnya, jika input adalah file JSON yang berisi pasangan kunci-nilai{"key":1}, hasil transformasi data mungkin. {"label":1}

SageMaker AI menyimpan keduanya dalam file input di SageMakerInput kunci.

{ "key":1, "SageMakerOutput":{"label":1} }
catatan

Hasil gabungan untuk JSON harus berupa objek pasangan kunci-nilai. Jika input bukan objek pasangan kunci-nilai, SageMaker AI membuat file JSON baru. Dalam file JSON baru, data input disimpan dalam SageMakerInput kunci dan hasilnya disimpan sebagai SageMakerOutput nilai.

Untuk file CSV, misalnya, jika rekaman itu[1,2,3], dan hasil labelnya adalah[1], maka file output akan berisi[1,2,3,1].

Contoh: Inferensi Output Bergabung dengan Data Input dan Kecualikan Kolom ID dari Input (CSV)

Jika Anda menggunakan Amazon SageMaker Python SDK untuk menggabungkan data input Anda dengan output inferensi sambil mengecualikan kolom ID dari input transformator, tentukan parameter yang sama dari contoh sebelumnya serta subexpresi JSONPath untuk panggilan transformator Anda. input_filter Misalnya, jika data input Anda mencakup lima kolom dan yang pertama adalah kolom ID, gunakan permintaan transformasi berikut untuk memilih semua kolom kecuali kolom ID sebagai fitur. Transformator masih mengeluarkan semua kolom input yang bergabung dengan kesimpulan. Untuk informasi selengkapnya tentang parameter dan nilai yang diterima, lihat halaman Transformer di Amazon SageMaker AI Python SDK.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input")

Jika Anda menggunakan AWS SDK untuk Python (Boto 3), tambahkan kode berikut ke CreateTransformJob permintaan Anda.

{ "DataProcessing": { "InputFilter": "$[1:]", "JoinSource": "Input" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }

Untuk menentukan kolom di SageMaker AI, gunakan indeks elemen array. Kolom pertama adalah indeks 0, kolom kedua adalah indeks 1, dan kolom keenam adalah indeks 5.

Untuk mengecualikan kolom pertama dari input, atur InputFilter ke"$[1:]". Colon (:) memberitahu SageMaker AI untuk memasukkan semua elemen di antara dua nilai, inklusif. Misalnya, $[1:4] menentukan kolom kedua hingga kelima.

Jika Anda menghilangkan angka setelah titik dua, misalnya[5:], subset mencakup semua kolom dari kolom ke-6 hingga kolom terakhir. Jika Anda menghilangkan angka sebelum titik dua, misalnya[:5], subset mencakup semua kolom dari kolom pertama (indeks 0) hingga kolom keenam.

Contoh: Inferensi Output Bergabung dengan Kolom ID dan Kecualikan Kolom ID dari Input (CSV)

Jika Anda menggunakan Amazon SageMaker Python SDK, Anda dapat menentukan output untuk menggabungkan hanya kolom input tertentu (seperti kolom ID) dengan kesimpulan dengan menentukan output_filter dalam panggilan transformator. Menggunakan output_filter subexpression JsonPath untuk menentukan kolom mana yang akan dikembalikan sebagai output setelah menggabungkan data input dengan hasil inferensi. Permintaan berikut menunjukkan bagaimana Anda dapat membuat prediksi sambil mengecualikan kolom ID dan kemudian menggabungkan kolom ID dengan kesimpulan. Perhatikan bahwa dalam contoh berikut, kolom terakhir (-1) dari output berisi kesimpulan. Jika Anda menggunakan file JSON, SageMaker AI menyimpan hasil inferensi dalam atributSageMakerOutput. Untuk informasi selengkapnya tentang parameter dan nilai yang diterima, lihat halaman Transformer di Amazon SageMaker AI Python SDK.

sm_transformer = sagemaker.transformer.Transformer(…, assemble_with="Line", accept="text/csv") sm_transformer.transform(…, split_type="Line", content_type="text/csv", input_filter="$[1:]", join_source="Input", output_filter="$[0,-1]")

Jika Anda menggunakan AWS SDK untuk Python (Boto 3), gabungkan hanya kolom ID dengan kesimpulan dengan menambahkan kode berikut ke permintaan Anda CreateTransformJob.

{ "DataProcessing": { "InputFilter": "$[1:]", "JoinSource": "Input", "OutputFilter": "$[0,-1]" }, "TransformOutput": { "Accept": "text/csv", "AssembleWith": "Line" }, "TransformInput": { "ContentType": "text/csv", "SplitType": "Line" } }
Awas

Jika Anda menggunakan file JSON-formatted input, file tersebut tidak dapat berisi nama atributSageMakerOutput. Nama atribut ini dicadangkan untuk kesimpulan dalam file output. Jika file JSON-formatted input Anda berisi atribut dengan nama ini, nilai dalam file input mungkin diganti dengan inferensi.