サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
災害への備え
sinhrks.hatenablog.com
著者の松浦さんから「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
ネタ記事です。/ This is a joke post which makes no practical sense. 過去にこんなエントリを書いた。 sinhrks.hatenablog.com R では パイプ演算子 %>% を使って連続した処理を記述できる。式に含まれる x, y, z は非標準評価 (NSE) によって data.frame の列として解決される。 # R (magrittr + dplyr) df %>% mutate(x = y + z) %>% group_by(x) %>% summarize_each(funs(sum)) Python (pandas) ではほぼ同じ処理をメソッドチェインを使って書ける。チェインとパイプ演算子でどちらが読みやすいかは好みの問題だと思うものの、式の中に 何度も df が出てくるのはちょっとすっきりしない。 # Python
21日、22日と PyCon JP に参加させていただきました。ご参加いただいた皆様、スタッフの皆様ありがとうございました。資料はこちらになります。 pandas による時系列データ処理 pandas を使った時系列データの前処理と、statsmodels での時系列モデリングの触りをご紹介しました。 speakerdeck.com 時系列モデルの考え方については全く説明していないので、以下書籍などをご参照ください。 経済・ファイナンスデータの計量時系列分析 (統計ライブラリー) 作者: 沖本竜義出版社/メーカー: 朝倉書店発売日: 2010/02/01メディア: 単行本購入: 4人 クリック: 101回この商品を含むブログ (6件) を見る 元ネタ 以下のエントリをベースに新しい内容を追加しています。 sinhrks.hatenablog.com 時系列モデルを含む Python パッケ
データの前処理にはいくつかの工程がある。書籍「データ分析プロセス」には 欠損など 前処理に必要なデータ特性の考慮とその対処方法が詳しく記載されている。 が、書籍のサンプルは R なので、Python でどうやればよいかよく分からない。同じことを pandas でやりたい。 データ分析プロセス (シリーズ Useful R 2) 作者: 福島真太朗,金明哲出版社/メーカー: 共立出版発売日: 2015/06/25メディア: 単行本この商品を含むブログ (2件) を見る とはいえ、pandas 自身は統計的 / 機械学習的な前処理手法は持っていない。また Python には R と比べると統計的な前処理手法のパッケージは少なく、自分で実装しないと使えない方法も多い。ここではそういった方法は省略し、pandas でできる前処理 / 可視化を中心に書く。 また、方法自体の説明は記載しないので、詳細
はじめに 正方行列 を となる下三角行列 と 上三角行列 に分解することを LU 分解という。LU 分解ができると連立方程式の解や逆行列が 前進/後退代入でかんたんに求められてうれしい。 Dask を使って LU 分解を Out-Of-Core / 並列でやりたい。 LU 分解の並列化にはいくつかやり方があるようで、東大講義 スパコンプログラミング(1)、スパコンプログラミング(I) の 第10回 LU分解法 にまとまっている。この講義、ガイダンス資料の単位取得状況を見るとかなり楽しそうな感じだ。 ここでは、Dask での実装がかんたんそうなブロック形式ガウス法 (資料 P33-) をやりたい。 ブロック形式ガウス法 ブロック形式ガウス法では入力となる行列をいくつかのブロックに区切り、ブロックごとに処理を行う。具体的には、左上の対角ブロックからはじめて、以下の順番で処理していく。 対角ブロ
3D 地図を表示する JavaScript ライブラリである Cesium.js を Python から簡単に使いたい。Cesium.js についてはこちらを。 sinhrks.hatenablog.com 上に記載した方法は、可視化したい内容に応じて JavaScript のテンプレートを作成し、Python からデータを埋め込むというものだった。が、都度 テンプレートを作るのはさっと可視化したい場合にはめんどくさい。 ということでこれを Python のみ / JavaScript なしで利用できるパッケージを書いた。 github.com 使い方 サンプルデータは前と同じく こちらのエントリのものを利用する。作成した DataFrame は変数 df に入っているとする。 Python pandas + folium で Leaflet をもっと使いたい - StatsFragmen
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 の取得が必要。利用ガイドに沿って登録する。
Cesium.js とは Web GL を利用して 3D 地図を描画する JavaScript ライブラリ。かなり多機能で様々な見せ方ができるようだ。詳しく知りたい方は公式サイトの Demos を見ればいい。 cesiumjs.org これを Jupyter Notebook に埋め込んで使いたい。Cesium.js には Python の wrapper などはないため、直接 JavaScript を書いて使う。従って、利用できる機能に差異はない。このエントリでは Cesium.js の機能の詳細には触れず、Jupyter に関係する内容のみ記載する。 具体的なやり方はこちらと同じ。 sinhrks.hatenablog.com データの準備 先日のエントリで作成した、 アメリカの国立公園 のデータを使う。 sinhrks.hatenablog.com 以降、すべて Jupyter No
先日参加させていただいた Japan.R でこんな話を聞いた。 RPubs - leafletではじめるRによる地図プロット Python でも folium というパッケージを使うと JavaScript を書かなくても Leaflet.js の一部機能が使えるのだがあまり情報がない。上の資料に書いてあるようなことが folium でもできるのか調べたい。 folium については前にこんなエントリを書いた。 sinhrks.hatenablog.com データの準備 import numpy as np np.__version__ # '1.10.2' import pandas as pd pd.__version__ # u'0.17.1' サンプルデータとして Wikipedia にある アメリカの国立公園 のデータを使う。まずは pd.read_html でデータを読みこむ。
この記事は Julia Advent Calendar 2015 23 日目の記事です。 Julia で DataFrame を扱うパッケージ DataFrames.jl の使い方をまとめたい。 下の pandas ドキュメントにあるような処理が DataFrames.jl でどう書けるのかを整理する。 10 Minutes to pandas — pandas 0.17.1 documentation versioninfo() # Julia Version 0.4.2 # Commit bb73f34 (2015-12-06 21:47 UTC) インストール Pkg.add("DataFrames") Pkg.installed("DataFrames") # v"0.6.10" using DataFrames データの作成 DataFrames.jl では 1 次元データ構造で
この記事は Chainer Advent Calendar 2015 17 日目の記事です。 はじめに サイズが大きいデータを Deep Learning すると学習に時間がかかってつらい。時間がかかってつらいので並列処理して高速化したい。 並列化するのに良さそうなパッケージないかな? と探してみると、Dask という並列 / Out-Of-Core 計算パッケージを見つけた。これと Chainer を組み合わせると並列処理が簡単に書けそうな気がする。 最初は MNIST を並列化してみたが、データが小さすぎるせいか むしろ遅くなってしまった。もう少し大きいデータである CIFAR-10 を使い、より深いネットワーク構造でその効果を確かめたい。 最終的には以下二つの処理を並列化することを目指す。 Data Augmentation DNN の学習 1. Data Augmentation
この記事は 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
この記事は Rust Advent Calendar 2015 7 日目の記事です。 簡単な統計/機械学習のアルゴリズムを実装しつつ Rust を学びたい。こちらの続き。 Rust で重回帰 - StatsFragments Rust で主成分分析 - StatsFragments Rust で階層的クラスタリング - StatsFragments 環境: Rust(Nightly) rustc 1.6.0-nightly (d49e36552 2015-12-05) rust-csv 0.14.3 : CSV の読み込みに利用 nalgebra 0.3.2 : 行列/ベクトルの処理に利用 rand 0.3.12 : 乱数生成に利用 gnuplot 0.0.19 : プロットに利用 k-means クラスタリングとは 非階層型クラスタリングの一種。下のアニメーションがわかりやすい。 tec
この記事は R Advent Calendar 2015 4 日目の記事です。 {ggplot2} でのサブプロット {ggplot2} でサブプロットを描画したいことがある。同じ種類のプロットを水準別に描画するなど、単純なものであれば facet で描ける。例えば 適当な散布図を Species 別に描きたい場合、 library(dplyr) library(ggplot2) ggplot(iris, aes(Sepal.Width, Sepal.Length)) + geom_point() + facet_wrap(~ Species) facet では異なる種類のプロットをサブプロットとすることはできない。例えば散布図の縦軸/横軸をそれぞれ変えたい、といった場合には gridExtra::grid.arrange を使う。 library(gridExtra) p1 <- ggp
R で関数型プログラミングを行うためのパッケージである {purrr}、すこし使い方がわかってきたので整理をしたい。RStudio のブログの記載をみると、とくにデータ処理フローを関数型のように記述することが目的のようだ。 purrr 0.1.0 | RStudio Blog The core of purrr is a set of functions for manipulating vectors (atomic vectors, lists, and data frames). The goal is similar to dplyr: help you tackle the most common 90% of data manipulation challenges. ここでいう"関数型プログラミング言語"とは Haskell のような静的型の言語を想定しており、型チェック、ガ
先日 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
少し前に 自作パッケージを CRAN で公開したのだが ブログに書くのを忘れていた。CRAN 公開時の注意点に関して、日本語の説明があまりない / 情報が古いので簡単にまとめたい。 パッケージの作成 この資料を読みましょう。 東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法 from tera monagi www.slideshare.net 継続的インテグレーション (CI) Travis CI は R をサポート (community supportだが) しているため、.travis.yml に2行記載するだけで利用できる。CI 上でパッケージのチェック (R CMD check) も走るので利用したほうが楽。 Building an R Project - Travis CI 複数の環境でテストを実行したい場合、Travis CI では Build Matrix とい
こちらの続き。 Rust で重回帰 - StatsFragments Rust で主成分分析 - StatsFragments 階層的クラスタリングについてはこちらを。サンプルデータもリンク先のものを利用させていただく。 Rとクラスター(1) 再帰的なデータ構造の作成 階層的クラスタリングでは もっとも距離の小さいクラスタ同士を順に併合していく。そのため併合元となるクラスタ (子) と 作成される新しいクラスタ (親) に親子関係をもたせたい。 こういったとき、親から子に参照を持たせればいいかな? と思うのだが、Rust でこれをやろうとすると "親のインスタンスが存在している間は子への参照が有効となっている" ということを lifetime として記述しなければならず、すこし面倒である。 そのため、参照ではなく所有権を移してしまうのが一般的なようだ。 参考 The idea behind
Rust で重回帰に続き、今日は 主成分分析をやりたい。 Rust(Nightly) rustc 1.6.0-nightly (d5fde83ae 2015-11-12) rust-csv 0.14.3 : CSV の読み込みに利用 nalgebra 0.3.2 : 行列/ベクトルの処理に利用 rust-csv での CSV ファイルの読み込み 今回は ローカルのCSV ファイル (iris.csv) を読みとる処理を加える。CSV が単一の型しか含まない場合、 前の記事 のように読み取った値をそのまま Vec に追加していけばよい。 iris のように複数の型を含むデータから特定の型のみを抜き出すには以下のような処理を書く必要がある。 まず Reader.byte_records() で各行のエントリをバイト列として読み取る。 let mut reader = csv::Reader::
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
簡単なアルゴリズムを実装しつつ 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}
ご恵贈いただきました。 ありがとうございます! あわせてタスクもいただきました (下部)。 書籍のコンテンツ 各章ごとの内容は id:sfchaos さんが詳しく紹介されています。 d.hatena.ne.jp まだ すべて読めていないのですが、以下 3 点がよいポイントだと思います。 理論 と サンプルプログラム 両方の記載がある BUGS, Stan, PyMC3 と主要なパッケージが網羅されている サンプルは単純な回帰だけでなく 時系列 / 空間ベイズを含む 補足 書籍には コラム "Pythonとは" という データ分析視点での Python 紹介があるのですが、中身は結構な pandas 推しでした。著者の方、いったい何者なんだ...。 Stan 入門 依頼により、著者の松浦さんが作成した RStan サンプルの PyStan 版を作成させていただきました。 以下リポジトリの "
先日 10/9 に pandas 0.17.0 がリリースされた。直近のバージョンアップの中では かなり機能追加が多いリリースとなった。 重要な変更は リリースノート にハイライトとして列挙しているのだが、これらはある程度 pandas を使いこなしている方向けの記載となっている。 そのため、ここでは よりライトなユーザ向けに重要と思われる変更を書く。特に、ユーザ側のプログラムに影響がある以下の3点について記載する。 ソート API の統合 ( sort_values / sort_index ) 重複削除 API の改善 ( drop_duplicates / duplicated ) .plot アクセサの追加 準備 import numpy as np import pandas as pd np.__version__ # '1.10.1' pd.__version__ # u'0
10日、11日と PyCon JP に参加させていただきました。ご参加いただいた皆様、スタッフの皆様ありがとうございました。資料はこちらになります。 pandas internals パフォーマンス向上のための pandas 内部実装の説明といくつかの TIPS について。そのうち翻訳するかもしれません。 speakerdeck.com Dask: 軽量並列分散フレームワーク (LT) speakerdeck.com 元ネタ 以下のエントリをベースに、それぞれ新しい内容を追加しています。 sinhrks.hatenablog.com sinhrks.hatenablog.com
一部 こちらの続き。その後 いくつかプルリクを送り、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
はじめに 先日のエントリで少し記載した 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
このところ、たびたび NumPy 後継が...とか 並列処理が...という話を聞くので、この秋 注目の多次元配列パッケージをまとめたい。 バックエンド系 NumPy のように数値計算処理を自前で実装しているパッケージ。 DyND Blaze プロジェクトのひとつ。C++ 実装 + Python バインディング。GitHub にいくつか Example があがっているが、複合型やカテゴリカル型、GroupBy 操作がサポートされていて熱い。ラベルデータも NumPy より簡単に実装できそうだ。 speakerdeck.com 並列分散系 自身では直接 数値計算処理を行わず、バックエンド ( 主に NumPy )を利用して並列/分散処理を行うパッケージ。1 物理PC/複数コアでの並列計算を主用途とし、NumPy, pandas では少し苦しいが PySpark などを使うほどじゃない...とい
はじめに Python での数値計算の基盤をなす NumPy 、直感的なスライスやブロードキャスト、関数のベクトル適用など大変便利だ。 import numpy as np np.__version__ # '1.9.2' np.array([1, 2, 3]) # array([1, 2, 3]) np.array([1, 2, 3])[:2] # array([1, 2]) np.array([1, 2, 3]) + 1 # array([2, 3, 4]) が、用途によっては NumPy 標準ではその機能を実現できない場合がある。例えば、 配列とメタデータをひとつのクラスで扱いたい 配列への入力や型を制約/検証したい 自作クラスを NumPy の Universal Functions (ufunc) に対応させたい 新しい型 ( dtype ) を作りたい こういったとき、NumP
ネタ記事です。/ 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 から利用できるようになる予定。 このメソッドチェインによ
次のページ
このページを最初にブックマークしてみませんか?
『StatsFragments』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く