タグ

ブックマーク / sinhrks.hatenablog.com (28)

  • Rust で重回帰 - StatsFragments

    簡単なアルゴリズムを実装しつつ Rust を学びたい。環境はこちら。 Rust(Nightly) rustc 1.6.0-nightly (d5fde83ae 2015-11-12) rust-csv 0.14.3 : CSV の読み込みに利用 nalgebra 0.3.1 : 行列/ベクトルの処理に利用 Python や R と比較すると、型のために Vec や slice が透過的に扱えず戸惑う。また、 Generics を使った場合に所有権まわりのエラーが出て解決できなかったため、浮動小数点 f64 のみの定義とした。もう少し理解できたら書き直したい。 extern crate csv; extern crate nalgebra; use std::vec::Vec; use nalgebra::{DVec, DMat, Inv, Mean, ColSlice, Iterable}

    Rust で重回帰 - StatsFragments
    xiangze
    xiangze 2017/12/10
  • PyStan で「StanとRでベイズ統計モデリング」11.3節 - StatsFragments

    著者の松浦さんから「StanとRでベイズ統計モデリング」をいただきました。ありがとうございます! 書籍では Stan の R バインディングである RStan を利用していますが、Stan には Python 用の PyStan もあります。松浦さんが書籍 5.1節の PyStan での実行例を書かれています。 statmodeling.hatenablog.com 補足 PyStan については過去にも書いた内容があります。 sinhrks.hatenablog.com 同じように、「StanとRでベイズ統計モデリング」の内容を Python で実施してみました。 11.3 ゼロ過剰ポアソン分布 以降、書籍 "11.3節 ゼロ過剰ポアソン分布" の流れに沿って Python のスクリプトを記載します。ロジックや処理自体の説明は書籍をご参照ください。データと Stan のスクリプトは Gi

    PyStan で「StanとRでベイズ統計モデリング」11.3節 - StatsFragments
  • PyConJP 2016: pandasでの時系列処理についてお話させていただきました - StatsFragments

    21日、22日と PyCon JP に参加させていただきました。ご参加いただいた皆様、スタッフの皆様ありがとうございました。資料はこちらになります。 pandas による時系列データ処理 pandas を使った時系列データの前処理と、statsmodels での時系列モデリングの触りをご紹介しました。 speakerdeck.com 時系列モデルの考え方については全く説明していないので、以下書籍などをご参照ください。 経済・ファイナンスデータの計量時系列分析 (統計ライブラリー) 作者: 沖竜義出版社/メーカー: 朝倉書店発売日: 2010/02/01メディア: 単行購入: 4人 クリック: 101回この商品を含むブログ (6件) を見る 元ネタ 以下のエントリをベースに新しい内容を追加しています。 sinhrks.hatenablog.com 時系列モデルを含む Python パッケ

    PyConJP 2016: pandasでの時系列処理についてお話させていただきました - StatsFragments
  • 簡単なデータ操作を PySpark & pandas の DataFrame で行う - StatsFragments

    Spark v1.3.0 で追加された DataFrame 、結構いいらしいという話は聞いていたのだが 自分で試すことなく時間が過ぎてしまっていた。ようやく PySpark を少し触れたので pandas との比較をまとめておきたい。内容に誤りや よりよい方法があればご指摘 下さい。 過去に基的なデータ操作について 以下 ふたつの記事を書いたことがあるので、同じ処理のPySpark 版を加えたい。今回は ひとつめの "簡単なデータ操作〜" に相当する内容。 pandas 版 簡単なデータ操作を Python pandas で行う - StatsFragments Python pandas でのグルーピング/集約/変換処理まとめ - StatsFragments 準備 環境は EC2 に作る。Spark のインストールについてはそのへんに情報あるので省略。サンプルデータは iris を

    簡単なデータ操作を PySpark & pandas の DataFrame で行う - StatsFragments
  • Python XGBoost の変数重要度プロット / 可視化の実装 - StatsFragments

    Gradient Boosting Decision Tree の C++ 実装 & 各言語のバインディングである XGBoost、かなり強いらしいという話は伺っていたのだが自分で使ったことはなかった。こちらの記事で Python 版の使い方が記載されていたので試してみた。 puyokw.hatenablog.com その際、Python でのプロット / 可視化の実装がなかったためプルリクを出した。無事 マージ & リリースされたのでその使い方を書きたい。まずはデータを準備し学習を行う。 import numpy as np import xgboost as xgb from sklearn import datasets import matplotlib.pyplot as plt plt.style.use('ggplot') xgb.__version__ # '0.4' ir

    Python XGBoost の変数重要度プロット / 可視化の実装 - StatsFragments
  • Python pandas strアクセサによる文字列処理 - StatsFragments

    概要 今週の 週刊 pandas は文字列処理について。やたらと文字数が多くなったのだが、これはデータを都度表示しているせいであって自分の話がムダに長いわけではない、、、と思いたい。 今回はこちらの記事に書いた内容も使うので、適宜ご参照ください。 サンプルデータ なんか適当な実データないかな?と探していたら 週間少年ジャンプの過去作品の連載作品 / ジャンルなどがまとめられているサイトをみつけた。これを pandas で集計できる形まで整形することをゴールにしたい。 KTR's Comic Room: Weekly Jump Database データの読み込み 上記リンクの "ジャンプ連載データ表" を、ファイル名 "jump_db.html" としてローカルに保存した。 補足 pd.read_html では引数に URL を渡して 直接ネットワークからファイルを読むこともできる。が、今回

    Python pandas strアクセサによる文字列処理 - StatsFragments
  • Python Dask で Out-Of-Core / 並列 LU 分解 - StatsFragments

    はじめに 正方行列 を となる下三角行列 と 上三角行列 に分解することを LU 分解という。LU 分解ができると連立方程式の解や逆行列が 前進/後退代入でかんたんに求められてうれしい。 Dask を使って LU 分解を Out-Of-Core / 並列でやりたい。 LU 分解の並列化にはいくつかやり方があるようで、東大講義 スパコンプログラミング(1)、スパコンプログラミング(I) の 第10回 LU分解法 にまとまっている。この講義、ガイダンス資料の単位取得状況を見るとかなり楽しそうな感じだ。 ここでは、Dask での実装がかんたんそうなブロック形式ガウス法 (資料 P33-) をやりたい。 ブロック形式ガウス法 ブロック形式ガウス法では入力となる行列をいくつかのブロックに区切り、ブロックごとに処理を行う。具体的には、左上の対角ブロックからはじめて、以下の順番で処理していく。 対角ブロ

    Python Dask で Out-Of-Core / 並列 LU 分解 - StatsFragments
  • Python pandas で e-Stat のデータを取得したい - StatsFragments

    e-Stat とは "「政府統計の総合窓口(e-Stat)」は、各府省が公表する統計データを一つにまとめ、統計データの検索をはじめとした、さまざまな機能を備えた政府統計のポータルサイト" だそうだ。このデータを pandas で読めるとうれしい...ということで対応した。 github.com インストール $ pip install japandas パッケージのインポート import numpy as np np.__version__ # '1.10.2' import pandas as pd pd.__version__ # u'0.17.1' import japandas as jpd jpd.__version__ # '0.2.0' アプリケーション ID の取得 e-Stat を利用するには 利用登録とアプリケーション ID の取得が必要。利用ガイドに沿って登録する。

    Python pandas で e-Stat のデータを取得したい - StatsFragments
  • Python pandas 関連エントリの目次 - StatsFragments

    このブログ中の pandas 関連のエントリをまとめた目次です。 最近 pandas 開発チーム と PyData グループ の末席に加えていただき、パッケージ自体の改善にもより力を入れたいと思います。使い方についてご質問などありましたら Twitter で @ ください。 目次につけた絵文字は以下のような意味です。 🔰: 最初に知っておけば一通りの操作ができそうな感じのもの。 🚧: v0.16.0 時点で少し情報が古く、機能の改善を反映する必要があるもの。 🚫: 当該の機能が deprecate 扱いとなり、将来的に 代替の方法が必要になるもの。 基 簡単なデータ操作を Python pandas で行う 🔰 Python pandas でのグルーピング/集約/変換処理まとめ 🔰 また、上記に対応した比較エントリ: R {dplyr}, {tidyr} Rの data.tab

    Python pandas 関連エントリの目次 - StatsFragments
  • Rの data.table と data.frame を dplyr で区別なく扱う - StatsFragments

    R を使っていると、組み込み型の data.frame と大規模データ用パッケージである data.table の差異で思わずはまることがあるので使い方をまとめる。どちらか一方しか使わないようにすれば 差異を気にする必要はないのかも知れないが、、。 基的には データ操作用パッケージ dplyr が data.frame と data.table 両方に対して同じように使えるので、できるだけ dplyr を使って操作するのがよい。 ある程度 複雑な操作であれば最初から dplyr を使うと思うが、列選択, 行選択, 代入など 比較的シンプルな操作はつい 通常の書式で書いてしまう (そしてはまる、、)。また、列名を文字列に入れて処理するなど、dplyr 0.2以前では(シンプルには)書けない処理もあった。 dplyr 0.3でこのあたりの処理が素直に書けるようになっているので、その方法と 通

    Rの data.table と data.frame を dplyr で区別なく扱う - StatsFragments
  • Python Dask.Array で 並列 / Out-Of-Core 処理 - StatsFragments

    この記事は Python Advent Calendar 2015 13 日目の記事です。 Python で手軽に並列 / Out-Of-Core 処理を行うためのパッケージである Dask について書きたい。Dask を使うと以下のようなメリットが得られる。 環境構築 / インストールが pip で簡単にできる 手軽に並列処理ができる Out-Of-Core (メモリに乗らないデータ) 処理ができる 補足 Dask は手持ちの PC の シングルコア / 物理メモリでは処理が少しきついかな、といった場合に利用するパッケージのため、より大規模 / 高速 / 安定した処理を行いたい場合には Hadoop や Spark を使ったほうがよい。 Dask は以下 3 つのサブパッケージを持つ。 サブモジュール ベースパッケージ dask.array NumPy dask.bag PyToolz

    Python Dask.Array で 並列 / Out-Of-Core 処理 - StatsFragments
  • Python Jupyter + pandas で DataFrame 表示をカスタマイズする - StatsFragments

    先日 pandas v0.17.1 がリリースされた。v0.17.0 に対するバグフィックスがメインだが、以下の追加機能もあるため その内容をまとめたい。 HTML 表示のカスタマイズ Jupyer 上では pandasの DataFrame は自動的に HTML として描画される。この HTML に対して、さまざまな CSS を柔軟に設定できるようになった。 このエントリでは、添付した公式ドキュメントとは少し違う例を記載する。 Style -- pandas documentation @TomAugspurger (コミッタの一人) 作成の Jupyter Notebook 重要 公式ドキュメントにも記載がされているが v0.17.1 時点で開発中 / Experimental な追加のため、今後 破壊的な変更が発生する可能性がある。ご要望やお気づきの点があれば GitHub issu

    Python Jupyter + pandas で DataFrame 表示をカスタマイズする - StatsFragments
  • Python pandas アクセサ / Grouperで少し高度なグルーピング/集計 - StatsFragments

    語の説明がなさそうなので。 概要 pandas では groupby メソッドを使って、指定したカラムの値でデータをグループ分けできる。ここでは少し凝った方法を説明。 ※ dtアクセサ の追加、またグルーピング関連のバグ修正がいろいろ入っているので、0.15以降が必要。 ※簡単な処理については下の記事でまとめ。 はじめに 例えばこんなデータがあったとして、 import pandas as pd import datetime df = pd.DataFrame({'dt1': [datetime.datetime(2014, 10, 1), datetime.datetime(2014, 10, 2), datetime.datetime(2014, 10, 3), datetime.datetime(2014, 10, 4), datetime.datetime(2014, 10,

    Python pandas アクセサ / Grouperで少し高度なグルーピング/集計 - StatsFragments
  • Python pandas プロット機能を使いこなす - StatsFragments

    pandas は可視化のための API を提供しており、折れ線グラフ、棒グラフといった基的なプロットを簡易な API で利用することができる。一般的な使い方は公式ドキュメントに記載がある。 Visualization — pandas 0.17.1 documentation これらの機能は matplotlib に対する 薄い wrapper によって提供されている。ここでは pandas 側で一処理を加えることによって、ドキュメントに記載されているプロットより少し凝った出力を得る方法を書きたい。 補足 サンプルデータに対する見せ方として不適切なものがあるが、プロットの例ということでご容赦ください。 パッケージのインポート import matplotlib.pyplot as plt plt.style.use('ggplot') import matplotlib as mpl m

    Python pandas プロット機能を使いこなす - StatsFragments
  • Python XGBoost + pandas 連携の改善 - StatsFragments

    一部 こちらの続き。その後 いくつかプルリクを送り、XGBoost と pandas を連携させて使えるようになってきたため、その内容を書きたい。 sinhrks.hatenablog.com できるようになったことは 以下 3 点。 DMatrix でのラベルと型の指定 pd.DataFrame からの DMatrix の作成 xgb.cv の結果を pd.DataFrame として取得 補足 XGBoost では PyPI の更新をスクリプトで不定期にやっているようで、同一バージョンに見えても枝番が振られていたりして見分けにくい。記載は日時点のこのコミットの情報。 %matplotlib inline import numpy as np import xgboost as xgb from sklearn import datasets import matplotlib.pypl

    Python XGBoost + pandas 連携の改善 - StatsFragments
  • Python Dask で 並列 DataFrame 処理 - StatsFragments

    はじめに 先日のエントリで少し記載した Dask について、その使い方を書く。Dask を使うと、NumPy や pandas の API を利用して並列計算/分散処理を行うことができる。また、Dask は Out-Of-Core (データ量が多くメモリに乗らない場合) の処理も考慮した実装になっている。 sinhrks.hatenablog.com 上にも書いたが、Daskは NumPy や pandas を置き換えるものではない。数値計算のためのバックエンドとして NumPy や pandas を利用するため、むしろこれらのパッケージが必須である。 Dask は NumPy や pandas の API を完全にはサポートしていないため、並列 / Out-Of-Core 処理が必要な場面では Dask を、他では NumPy / pandas を使うのがよいと思う。pandasとDas

    Python Dask で 並列 DataFrame 処理 - StatsFragments
  • Python でパイプ演算子を使いたい - StatsFragments

    ネタ記事です。/ This is a joke post which makes no practical sense. はじめに Python pandas では主要な操作を以下のようにメソッドチェインの形で書くことができる。 # Python (pandas) df.assign(x=df['y'] + df['z']).groupby('x').sum() pandas v0.16.2 で DataFrame と Series に .pipe というメソッドが追加され、このチェインを外部の関数/メソッドに対して連結できるようになった。利用例は以下のリンクを。 statsmodels を利用する例 seaborn を利用する例 補足 matplotlib でも v1.5.0 で ラベルデータ対応 が追加され、各関数が .pipe から利用できるようになる予定。 このメソッドチェインによ

    Python でパイプ演算子を使いたい - StatsFragments
  • R {arules} によるアソシエーション分析をちょっと詳しく <1> - StatsFragments

    今週は系列パターンマイニング用 R パッケージ {arulesSequences} と格闘していた。使い方にところどころよくわからないポイントがあり、思ったよりも時間がかかってしまった。 関連パッケージである {arules} ともども、ネットには簡単な分析についての情報はあるが、 データの作り方/操作についてはまとまったものがないようだ。とりあえず自分が調べたことをまとめておきたい。2 パッケージで結構なボリュームになるため、全 4 記事分くらいの予定。 概要 まずはパターンマイニングの手法を簡単に整理する。いずれもトランザクションと呼ばれるデータの系列を対象にする。トランザクションとは 1レコード中に複数の要素 (アイテム) を含むもの。例えば、 POSデータ: 1トランザクション = POSレジの売上 1回。アイテムはそのときに売れた個々の商品。 アンケート調査: 1トランザクション

    R {arules} によるアソシエーション分析をちょっと詳しく <1> - StatsFragments
  • Chainer で Deep Learning: Bokeh で Live Monitoring したい - StatsFragments

    概要 Deep Learning の学習には時間がかかるため、進捗が都度 確認できるとうれしい。その際、テキストのログ出力では味気ないので、リアルタイムでプロットを眺めたい。 いくつかの Deep Learning パッケージではそういった機能 (Live Monitoring) が提供されている。 Undefined Intelligence: Monitoring Experiments in Pylearn2 Live plotting — Blocks 0.0.1 documentation fchollet/hualos · GitHub 同じことを Chainer でやりたい。自分は EC2 を使うことが多いので、リモート環境でも利用できるものがいい。そのため、ここでは Bokeh を使うことにした。 Bokeh とは Bokeh とは、D3.js を利用したブラウザベースのイ

    Chainer で Deep Learning: Bokeh で Live Monitoring したい - StatsFragments
  • Chainer で Deep Learning: model zoo で R-CNN やりたい - StatsFragments

    ニューラルネットワークを使ったオブジェクト検出の手法に R-CNN (Regions with CNN) というものがある。簡単にいうと、R-CNN は以下のような処理を行う。 入力画像中からオブジェクトらしい領域を検出し切り出す。 各領域を CNN (畳み込みニューラルネットワーク) にかける。 2での特徴量を用いて オブジェクトかどうかをSVMで判別する。 R-CNN については 論文著者の方が Caffe (Matlab) での実装 (やその改良版) を公開している。 [1311.2524] Rich feature hierarchies for accurate object detection and semantic segmentation github.com が、自分は Matlab のライセンスを持っていないので Python でやりたい。Python でやるなら 今

    Chainer で Deep Learning: model zoo で R-CNN やりたい - StatsFragments