Membuat grafik perbandingan#
ChartGenerator membandingkan dua dataset atau lebih, misalnya latency pencarian di Milvus dan Redis. Satu pemanggilan menghasilkan grafik perbandingan dan ringkasan statistik beserta uji signifikansinya.
Sebelum mulai: kamu butuh Zul yang sudah ter-install (Instalasi Zul) dan data berupa daftar angka untuk setiap hal yang dibandingkan.
Membuat grafik pertama#
-
Install Zul dengan extra
analysis: -
Jelaskan grafik dalam satu dict. Kunci
databerisi dataset yang dibandingkan: nama dataset sebagai kunci, daftar angka sebagai nilai: -
Gambar grafiknya.
create_comparison_chartmengembalikan statistiknya: -
Simpan grafik ke file, lalu tutup supaya memori tidak menumpuk saat kamu membuat banyak grafik:
Di notebook, panggil
chart.show()sebelumchart.clear()untuk menampilkan grafik tanpa menyimpannya.
Memilih tipe grafik#
-
Pilih nilai
chart_typesesuai yang ingin kamu lihat:bar: nilai per kategori, dengan selisih persen terhadap dataset pertama.line: tren dari waktu ke waktu, dengan garis rata-rata.box: sebaran dan kestabilan tiap dataset.histogram: bentuk distribusi nilai.dashboard: gabungan keempatnya dan ringkasan teks, untuk laporan satu metrik.
-
Pada
bardandashboard, tulis sistem yang menjadi acuan sebagai dataset pertama didata. Dataset pertama dianggap pembanding (baseline). -
Taruh opsi khusus sebuah tipe di
additional_options. Contoh berikut mengatur histogram:before = [102.0, 98.5, 110.2, 95.1, 104.7, 99.3] after = [88.4, 91.0, 85.2, 90.6, 87.9, 89.5] histogram_stats = chart.create_comparison_chart({ "chart_type": "histogram", "data": {"Sebelum": before, "Sesudah": after}, "additional_options": {"bins": 30, "overlay": True, "density": True}, }) chart.save("distribusi.png") chart.clear()Semua kunci konfigurasi dan opsi tiap tipe ada di Referensi ChartGenerator.
Membaca hasil statistik#
Bagian ini memakai stats dari grafik bar di Membuat grafik pertama.
-
Ambil ringkasan statistik sebuah dataset lewat namanya:
Untuk data contoh, kode itu mencetak:
-
Periksa apakah perbedaannya signifikan. Jika ada dua dataset atau lebih, kunci
statistical_testsberisi hasil uji. Setiap hasil punyap_valuedansignificant, yang bernilai true jikap_valuedi bawah 0.05:test = stats["statistical_tests"]["t_test"] if test["significant"]: print(f"Perbedaannya signifikan (p = {test['p_value']:.4f})")Dengan dua dataset, uji yang tersedia adalah
t_test,mann_whitney, dankolmogorov_smirnov. Dengan tiga dataset atau lebih, uji yang tersedia adalahanovadankruskal_wallis. -
Untuk membandingkan rata-rata dengan baseline, buat grafik
dashboardlalu bacaperformance_comparisons:dashboard_stats = chart.create_comparison_chart({**chart_config, "chart_type": "dashboard"}) chart.clear() comparison = dashboard_stats["performance_comparisons"]["Milvus_vs_Redis"] print(f"{comparison['improvement_percentage']:.1f}")Untuk data contoh, kode itu mencetak selisih rata-rata Redis terhadap Milvus dalam persen:
Note
improvement_percentage dan is_better menganggap nilai yang lebih rendah lebih baik, seperti pada latency: nilai positif berarti rata-ratanya lebih rendah dari baseline. Untuk metrik yang lebih tinggi lebih baik, seperti throughput atau akurasi, baca tandanya terbalik.
Membuat grafik dari CSV#
-
Siapkan file CSV dengan satu kolom per dataset dan, jika ada, satu kolom label:
-
Panggil
create_chart_from_csv. Sebut kolom dataset didata_columnsdan kolom label dilabel_column:from zul.utilities.analysis import ChartGenerator, create_chart_from_csv chart = ChartGenerator() csv_stats = create_chart_from_csv(chart, "hasil_benchmark.csv", { "chart_type": "line", "data_columns": ["milvus_ms", "redis_ms"], "label_column": "query", "title": "Latency per query", "ylabel": "ms", }) chart.save("latency_per_query.png") chart.clear()Kolom di
data_columnsyang tidak ada di file dilewati.
Membuat banyak grafik sekaligus#
-
Tulis satu konfigurasi per grafik. Tambahkan
save_filenameagar grafik disimpan, dan"show": Falsesaat menjalankan di script atau server supaya grafik tidak dibuka di jendela:latency = {"Milvus": [12.1, 11.8, 12.4], "Redis": [9.7, 10.2, 9.9]} memory = {"Milvus": [512, 520, 508], "Redis": [480, 485, 475]} configs = [ {"chart_type": "bar", "data": latency, "title": "Latency", "save_filename": "batch_latency.png", "show": False}, {"chart_type": "box", "data": memory, "title": "Memory", "save_filename": "batch_memory.png", "show": False}, ] -
Berikan daftar itu ke
batch_create_charts:from zul.utilities.analysis import ChartGenerator, batch_create_charts results = batch_create_charts(ChartGenerator(), configs)resultsberisi satu dict statistik untuk setiap grafik, dalam urutan yang sama.
Memeriksa hasilnya#
Untuk memastikan grafik pertama tersimpan dan statistiknya terhitung, periksa file dan isi stats dari Membuat grafik pertama:
Kode itu mencetak True, lalu nama kedua dataset dan kunci hasil uji:
Buka latency.png untuk melihat grafiknya.
Halaman terkait#
- Referensi ChartGenerator untuk semua kunci konfigurasi, tipe grafik, dan kunci statistik.
- Memakai helper kecil untuk
TimerDecorator, yang mengumpulkan durasi untuk dibandingkan, dansave_latency_to_csv. - Menyimpan dan mencari vektor di Milvus dan Menyimpan dan mencari vektor di Redis untuk sistem yang dibandingkan di contoh.