abstractqqq/polars_ds_extension
Polars extension for general data science use cases
PDS (polars_ds) — Polarsのためのデータサイエンスツールキット
概要: PDSは、高速なデータフレームライブラリである Polars の上にデータサイエンスツールを追加するPythonパッケージです。すでにPolarsを使用しており、Pandasやscikit-learnなどの他のツールに切り替えることなく、統計分析、機械学習モデル、特徴量エンジニアリングを行いたいユーザー向けに設計されています。
インストール: pip install polars-ds
主な機能
1. 機械学習メトリクス(並列)
Polarsの遅延評価を利用して、データの異なるスライスに対してROC AUCやlog lossなどのメトリクスを一度に計算できます。READMEの例:
df.lazy().group_by("segments").agg(
pds.query_roc_auc("actual", "predicted").alias("roc_auc"),
pds.query_log_loss("actual", "predicted").alias("log_loss"),
).collect()
これは、各セグメントに対してROC AUCとlog-lossの値を持つテーブルを返します。
2. 高速モデリング(非永続的)
個別のトレーニングステップなしで、データフレーム式の中で直接シンプルなモデルを実行できます。利用可能なモデル:
- 線形回帰(オプションでL1/L2正則化 → Lasso, Ridge, Elastic Net)
- 非負線形回帰
- ローリングおよび再帰的線形回帰
- 二項ロジスティック回帰(L1/L2付き)
- statsmodelsスタイルの回帰要約テーブル(係数、標準誤差、t統計量、p値、R²)
例:pds.lin_reg(pl.col("x1"), pl.col("x2"), target=pl.col("y"), add_bias=False, return_pred=True) は予測値を構造体列として返します。
3. 距離関数
- 文字列距離: Levenshtein, Optimal String Alignment, Jaro-Winkler(RapidFuzzにより非常に高速)
- 配列/リスト距離: 2つの配列列間の二乗L2(ユークリッド)距離
4. 統計検定
group_by 集計内で実行可能な組み込み検定:
- 独立したt検定(オプションで不等分散)
- カイ二乗検定
- F検定(ANOVAスタイル、グループ平均の比較)
それぞれ、統計量とp値を含む構造体を返します。
5. 便利なヘルパー
pds.E(['a', 'b'], ["min", "max", "n_unique", "len"]) は、複数の集計式を一度に生成するため、手動で記述する必要がありません。
6. データ変換パイプライン
再利用可能な前処理ステップを構築するための Blueprint/Pipeline システム:
- 行のフィルタリング
- 欠損値の補完(線形または中央値)
- カスタム式の追加(対数変換、クリッピングなど)
- 数値列のスケーリング(標準化)
- ワンホットエンコーディング、Weight of Evidenceエンコーディング、ターゲットエンコーディング
- 新しいデータを変換できる
Pipelineオブジェクトへの具体化
ストリーミング機械学習ワークフロー向けに collect_batches() を介したバッチ処理をサポートしています。
7. 最近傍クエリ
各点から指定された半径内にあるすべての点を検索し(二乗L2距離を使用)、近傍IDを返します。READMEによると、大きなk値や高次元データでは高速ではないとのことです。
8. 他のデータフレームとの互換性
polars_ds.compat モジュールを介して、列が to_numpy() を実装していれば、PDS関数は他のEagerデータフレーム(Pandasなど)でも動作します。例:pds2.lin_reg(df_pd["x1"], df_pd["x2"], target=df_pd["y"], return_pred=True)。
その他の注意点
- パフォーマンス: READMEでは、特に多くの式を一度に評価する場合やマルチコアマシンにおいて、Pandas + SciPy/Sklearn/NumPyよりも一般的に高速であると主張されています。
- 依存関係: Polars ≥ 1.4.0が必要です。Python 3.9はPolars 1.xを使用し、Polars 2はPython ≥ 3.10を必要とします。
- ソースからのビルド: Rustと
maturinが必要です。LTS CPUサポートまたはネイティブCPU用にRUSTFLAGSを設定できます。 - クレジット: Statrs(統計)、faer(線形代数)、RapidFuzz(文字列類似度)を使用しています。
- メンテナンス: 主に1人でメンテナンスされています。AI支援コードはメンテナによってレビューされ、AI生成のPRは精査されます。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト