vector_of_kll_floats_sketches.get_quantiles() returns wrong values with float32
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 3/5
- Geschätzter Aufwand
- 1-2 Tage
- Anfängerfreundlichkeit
- 45/100
Rechercherichtung
Beginne mit der bereitgestellten Python-Reproduktion unter Verwendung von vector_of_kll_floats_sketches.get_quantiles() und vergleiche dabei float32- und float64-Rang-Arrays. Verfolge die Verarbeitung der float32-Ränge und füge einen Regressionstest hinzu, der Ränge nahe 0 und 1 abdeckt; abgeschlossen ist die Aufgabe, wenn float32 und float64 für das Beispiel äquivalente Quantile zurückgeben.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
#!/usr/bin/env python3
"""
Minimal example: vector_of_kll_floats_sketches.get_quantiles() returns WRONG VALUES with float32
"""
import numpy as np
from datasketches import vector_of_kll_floats_sketches
# Create test data: 1000 samples between -100 and -10
np.random.seed(42)
test_data = np.random.uniform(-100, -10, size=(1000, 1)).astype(np.float32)
print("Test data: 1000 samples between -100 and -10")
print(f"True min: {test_data.min():.2f}, True max: {test_data.max():.2f}")
# Create sketch and add data
kll = vector_of_kll_floats_sketches(200, 1)
kll.update(test_data)
# Request p0.0001 (should be ~-100) and p0.9999 (should be ~-10)
ranks_list = [0.0001, 0.9999]
ranks_array32 = np.array(ranks_list, dtype=np.float32)
ranks_array64 = np.array(ranks_list, dtype=np.float64)
print("\n" + "="*60)
print("BUG: numpy array with dtype=np.float32 returns WRONG quantiles")
print("="*60)
quants_array = kll.get_quantiles(ranks_array32)
print(f"\nWith numpy array with dtype=np.float32: {ranks_array32}")
print(f" p0.0001 = {quants_array[0][0]:.2f} (expected: ~-100)")
print(f" p0.9999 = {quants_array[0][1]:.2f} (expected: ~-10)")
print(f" ✗ WRONG: Both values near minimum!")
quants_array64 = kll.get_quantiles(ranks_array64)
print(f"\nWith numpy array with dtype=np.float64: {ranks_array64}")
print(f" p0.0001 = {quants_array64[0][0]:.2f} (expected: ~-100)")
print(f" p0.9999 = {quants_array64[0][1]:.2f} (expected: ~-10)")
print(f" ✓ CORRECT")
Test data: 1000 samples between -100 and -10
True min: -99.58, True max: -10.03
============================================================
BUG: numpy array with dtype=np.float32 returns WRONG quantiles
============================================================
With numpy array with dtype=np.float32: [1.000e-04 9.999e-01]
p0.0001 = -98.69 (expected: ~-100)
p0.9999 = -99.50 (expected: ~-10)
✗ WRONG: Both values near minimum!
With numpy array with dtype=np.float64: [1.000e-04 9.999e-01]
p0.0001 = -99.50 (expected: ~-100)
p0.9999 = -10.28 (expected: ~-10)
✓ CORRECT
- Vorherrschende Sprache
- Jupyter Notebook
- Sterne
- 46
- Forks
- 11
- PR-Merge-Kennzahlen
- Keine gemergten PRs in 30 T.
Entwicklungsumgebung
Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus apache/datasketches-python
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 35/100
apache/datasketches-python#65 · 3 Reaktionen ·
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 55/100
apache/datasketches-python#46 · 2 Kommentare ·
-
Vectorize update()Offen
Schwierigkeit 5/5 Über eine Woche Anfängerfreundlichkeit 25/100
apache/datasketches-python#21 · 2 Kommentare ·
Alle Issues in apache/datasketches-python
Ähnliche Issues
-
[Bug]: iter_batches falls back to a full scan when channel_ids is empty or names no known channelOffenbug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Hebbian-Robotics/hflow#669 · 2 Kommentare ·
Maintainer antworten meist innerhalb von 1 Tag
-
bug
Schwierigkeit 1/5 1-3 Stunden Anfängerfreundlichkeit 87/100
-
documentation
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 78/100
transitmatters/data-ingestion#209 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Component: R Type: bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
apache/arrow#51695 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 2 Tagen
-
bug 🔥 diagnostics outputs hybrid
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
Maintainer antworten meist innerhalb von 3 Tagen