ベンチマーク · coding
DS-1000
DS-1000 は Stack Overflow から収集した 1000 件の実際のデータサイエンス・コーディング問題からなるベンチマークで、7 つの Python ライブラリ(NumPy、Pandas、SciPy、scikit-learn、PyTorch、TensorFlow、Matplotlib)をカバーします。モデルが各問題を正しく解くコードを生成できるかを測り、pass@1 の実行精度として報告します。
詳しく見る
- 例
- 代表的な項目は、特定のライブラリで何かを行う方法についての自然言語の質問です。たとえば Pandas DataFrame のフィルタリングや形状変換、NumPy 配列の計算、Matplotlib のプロットなどで、モデルが補完すべき初期コードコンテキストが付随します(Completion と Insertion の 2 形式で提供)。
- 採点方法
- 指標は pass@1 の実行精度です。生成された各解答は隠れたテストケースで実行され、すべてのテストに合格し、かつ surface-form 制約(必要な API が使われ、禁止された近道が使われていないかを regex で確認)を満たした場合にのみ解決とみなされます。スコアは 1000 問中の解決割合です。
- 検証方法
- 受理は完全に自動です。補完されたプログラムはサンドボックスで実行され、その出力がテストケースに対する機能的正しさと surface-form 制約と併せて検査されます。この多基準チェックは誤受理・誤棄却の率を低く保つよう設計されており、問題は暗記を減らすために Stack Overflow の原文から摂動(perturb)されています。
- 重要な理由
- 合成パズルではなく、現実的で日常的なデータサイエンスのコーディング需要を反映し、広く使われる 7 つのライブラリをカバーします。信頼性の高い実行ベースの採点により、実務的な DS 作業でコード生成モデルを評価する共通の物差しになっています。
解説付きの例
課題
問題: 数値列 'value' を持つ Pandas DataFrame df が与えられたとき、'value' がその列の平均より大きい行だけを含む DataFrame を作成してください。
<code>
import pandas as pd
df = pd.DataFrame({'value': [1, 5, 3, 9, 2]})
</code>
BEGIN SOLUTION — 答えを
result に代入してください。(説明用であり、公式問題の逐語ではありません。)解答
result = df[df['value'] > df['value'].mean()]
解説
ブールマスクにより 'value' が df['value'].mean() を超える行を残します。ハーネスは補完済みスクリプトを実行し、result を期待される DataFrame と(たとえば pandas のテストユーティリティで)比較します。一方 surface-form 制約は、これが本物の Pandas による解であることを確認します。実行結果に基づき pass/fail で採点されます。
このベンチマークの検証済みスコアはまだありません。