読者です 読者をやめる 読者になる 読者になる

StatsFragments

Python, R, Rust, 統計, 機械学習とか

PyStan で「StanとRでベイズ統計モデリング」11.3節

著者の松浦さんから「StanとRでベイズ統計モデリング」をいただきました。ありがとうございます! 書籍では Stan の R バインディングである RStan を利用していますが、Stan には Python 用の PyStan もあります。松浦さんが書籍 5.1節の PyStan での実行例…

Python でパイプ演算子を使いたい <2>

ネタ記事です。/ This is a joke post which makes no practical sense. 過去にこんなエントリを書いた。 sinhrks.hatenablog.com R では パイプ演算子 %>% を使って連続した処理を記述できる。式に含まれる x, y, z は非標準評価 (NSE) によって data.frame…

PyConJP 2016: pandasでの時系列処理についてお話させていただきました

21日、22日と PyCon JP に参加させていただきました。ご参加いただいた皆様、スタッフの皆様ありがとうございました。資料はこちらになります。 pandas による時系列データ処理 pandas を使った時系列データの前処理と、statsmodels での時系列モデリングの…

Python pandas 欠損値/外れ値/離散化の処理

データの前処理にはいくつかの工程がある。書籍「データ分析プロセス」には 欠損など 前処理に必要なデータ特性の考慮とその対処方法が詳しく記載されている。 が、書籍のサンプルは R なので、Python でどうやればよいかよく分からない。同じことを pandas …

Python Dask で Out-Of-Core / 並列 LU 分解

はじめに 正方行列 を となる下三角行列 と 上三角行列 に分解することを LU 分解という。LU 分解ができると連立方程式の解や逆行列が 前進/後退代入でかんたんに求められてうれしい。 Dask を使って LU 分解を Out-Of-Core / 並列でやりたい。 LU 分解の並…

Cesium.js を Python から使うパッケージを作った

3D 地図を表示する JavaScript ライブラリである Cesium.js を Python から簡単に使いたい。Cesium.js についてはこちらを。 sinhrks.hatenablog.com 上に記載した方法は、可視化したい内容に応じて JavaScript のテンプレートを作成し、Python からデータを…

Python pandas で e-Stat のデータを取得したい

e-Stat とは "「政府統計の総合窓口(e-Stat)」は、各府省が公表する統計データを一つにまとめ、統計データの検索をはじめとした、さまざまな機能を備えた政府統計のポータルサイト" だそうだ。このデータを pandas で読めるとうれしい...ということで対応…

Python Jupyter + Cesium.js で 3D 地図が描きたい

Cesium.js とは Web GL を利用して 3D 地図を描画する JavaScript ライブラリ。かなり多機能で様々な見せ方ができるようだ。詳しく知りたい方は公式サイトの Demos を見ればいい。 cesiumjs.org これを Jupyter Notebook に埋め込んで使いたい。Cesium.js に…

Python pandas + folium で Leaflet をもっと使いたい

先日参加させていただいた Japan.R でこんな話を聞いた。 RPubs - leafletではじめるRによる地図プロット Python でも folium というパッケージを使うと JavaScript を書かなくても Leaflet.js の一部機能が使えるのだがあまり情報がない。上の資料に書いて…

10 Minutes to DataFrames.jl

この記事は Julia Advent Calendar 2015 23 日目の記事です。 Julia で DataFrame を扱うパッケージ DataFrames.jl の使い方をまとめたい。 下の pandas ドキュメントにあるような処理が DataFrames.jl でどう書けるのかを整理する。 10 Minutes to pandas —…

Chainer + Dask で 並列 Deep Learning したい <1>

この記事は Chainer Advent Calendar 2015 17 日目の記事です。 はじめに サイズが大きいデータを Deep Learning すると学習に時間がかかってつらい。時間がかかってつらいので並列処理して高速化したい。 並列化するのに良さそうなパッケージないかな? と探…

Python Dask.Array で 並列 / Out-Of-Core 処理

この記事は Python Advent Calendar 2015 13 日目の記事です。 Python で手軽に並列 / Out-Of-Core 処理を行うためのパッケージである Dask について書きたい。Dask を使うと以下のようなメリットが得られる。 環境構築 / インストールが pip で簡単にできる…

Rust で k-means クラスタリング

この記事は Rust Advent Calendar 2015 7 日目の記事です。 簡単な統計/機械学習のアルゴリズムを実装しつつ Rust を学びたい。こちらの続き。 Rust で重回帰 - StatsFragments Rust で主成分分析 - StatsFragments Rust で階層的クラスタリング - StatsFrag…

R {ggplot2} で 少し複雑なサブプロットが描きたい

この記事は R Advent Calendar 2015 4 日目の記事です。 {ggplot2} でのサブプロット {ggplot2} でサブプロットを描画したいことがある。同じ種類のプロットを水準別に描画するなど、単純なものであれば facet で描ける。例えば 適当な散布図を Species 別に…

{purrr} でリストデータを操作する <2>

前の記事に続けて、{purrr} で {rlist} 相当の処理を行う。今回はレコードの選択とソート。 sinhrks.hatenablog.com サンプルデータは前回と同じものを利用する。リストの表示も同じく Hmisc::list.tree を使う。 library(rlist) library(pipeR) library(pur…

{purrr} でリストデータを操作する <1>

R で関数型プログラミングを行うためのパッケージである {purrr}、すこし使い方がわかってきたので整理をしたい。RStudio のブログの記載をみると、とくにデータ処理フローを関数型のように記述することが目的のようだ。 purrr 0.1.0 | RStudio Blog The cor…

Python Jupyter + pandas で DataFrame 表示をカスタマイズする

先日 pandas v0.17.1 がリリースされた。v0.17.0 に対するバグフィックスがメインだが、以下の追加機能もあるため その内容をまとめたい。 HTML 表示のカスタマイズ Jupyer 上では pandasの DataFrame は自動的に HTML として描画される。この HTML に対して…

R パッケージを CRAN で公開する

少し前に 自作パッケージを CRAN で公開したのだが ブログに書くのを忘れていた。CRAN 公開時の注意点に関して、日本語の説明があまりない / 情報が古いので簡単にまとめたい。 パッケージの作成 この資料を読みましょう。 東京R非公式おじさんが教える本当…

Rust で階層的クラスタリング

こちらの続き。 Rust で重回帰 - StatsFragments Rust で主成分分析 - StatsFragments 階層的クラスタリングについてはこちらを。サンプルデータもリンク先のものを利用させていただく。 Rとクラスター(1) 再帰的なデータ構造の作成 階層的クラスタリングで…

Rust で主成分分析

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 ファイルの読み込み 今回は ロー…

Python pandas プロット機能を使いこなす

pandas は可視化のための API を提供しており、折れ線グラフ、棒グラフといった基本的なプロットを簡易な API で利用することができる。一般的な使い方は公式ドキュメントに記載がある。 Visualization — pandas 0.17.1 documentation これらの機能は matplo…

Rust で重回帰

簡単なアルゴリズムを実装しつつ Rust を学びたい。環境はこちら。 Rust(Nightly) rustc 1.6.0-nightly (d5fde83ae 2015-11-12) rust-csv 0.14.3 : CSV の読み込みに利用 nalgebra 0.3.1 : 行列/ベクトルの処理に利用 Python や R と比較すると、型のために …

岩波データサイエンス Vol.1

ご恵贈いただきました。 ありがとうございます! あわせてタスクもいただきました (下部)。 書籍のコンテンツ 各章ごとの内容は id:sfchaos さんが詳しく紹介されています。 d.hatena.ne.jp まだ すべて読めていないのですが、以下 3 点がよいポイントだと思…

pandas 0.17.0 の主要な変更点

先日 10/9 に pandas 0.17.0 がリリースされた。直近のバージョンアップの中では かなり機能追加が多いリリースとなった。 重要な変更は リリースノート にハイライトとして列挙しているのだが、これらはある程度 pandas を使いこなしている方向けの記載とな…

PyConJP 2015: pandas/Daskについてお話させていただきました

10日、11日と PyCon JP に参加させていただきました。ご参加いただいた皆様、スタッフの皆様ありがとうございました。資料はこちらになります。 pandas internals パフォーマンス向上のための pandas 内部実装の説明といくつかの TIPS について。そのうち翻…

Python XGBoost + pandas 連携の改善

一部 こちらの続き。その後 いくつかプルリクを送り、XGBoost と pandas を連携させて使えるようになってきたため、その内容を書きたい。 sinhrks.hatenablog.com できるようになったことは 以下 3 点。 DMatrix でのラベルと型の指定 pd.DataFrame からの D…

Python Dask で 並列 DataFrame 処理

はじめに 先日のエントリで少し記載した Dask について、その使い方を書く。Dask を使うと、NumPy や pandas の API を利用して並列計算/分散処理を行うことができる。また、Dask は Out-Of-Core (データ量が多くメモリに乗らない場合) の処理も考慮した実装…

Python 次世代の多次元配列パッケージ群

このところ、たびたび NumPy 後継が...とか 並列処理が...という話を聞くので、この秋 注目の多次元配列パッケージをまとめたい。 バックエンド系 NumPy のように数値計算処理を自前で実装しているパッケージ。 DyND Blaze プロジェクトのひとつ。C++ 実装 +…

NumPy でつくる俺々データ構造

はじめに 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, …

Python でパイプ演算子を使いたい

ネタ記事です。/ 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.1…

Python XGBoost の変数重要度プロット / 可視化の実装

Gradient Boosting Decision Tree の C++ 実装 & 各言語のバインディングである XGBoost、かなり強いらしいという話は伺っていたのだが自分で使ったことはなかった。こちらの記事で Python 版の使い方が記載されていたので試してみた。 puyokw.hatenablog.co…

Python xray で 多次元データを pandas ライクに扱う

はじめに pandas では 2 次元、表形式のデータ ( DataFrame ) を主な対象としているが、ときには 3 次元以上のデータを扱いたい場合がある。そういった場合 以下のような方法がある。 MultiIndex を使い、2 次元のデータにマッピングする。 3 次元データ構造…

{rbokeh} で Bokeh を R から使いたい

はじめに Bokeh は Python 以外にも R, Scala, Julia 用のパッケージを提供している。パッケージといっても Python の Bokeh と連携するものではなく、Bokeh がブラウザでのレンダリングに使っている Bokeh.js を各言語で扱えるようにするもののようだ。その…

Python geopandas + Bokeh で地理情報をプロットしたい

数日前、pandas を利用して地理情報をプロットするという非常によいエントリが翻訳されていた。 postd.cc 上のエントリ、前処理が手間に見えるが pd.read_html や .str アクセサを使えばもっと簡単に書けると思う、、、がそれは本題でない。 pandas で地理情…

Python pandas パフォーマンス維持のための 3 つの TIPS

pandas でそこそこ大きいデータを扱う場合、その処理速度が気になってくる。公式ドキュメントではパフォーマンス向上のために Cython や Numba を使う方法を記載している。 Enhancing Performance — pandas 0.16.2 documentation が、軽く試したいだけなのに…

Chainer で Deep Learning: Bokeh で Live Monitoring したい

概要 Deep Learning の学習には時間がかかるため、進捗が都度 確認できるとうれしい。その際、テキストのログ出力では味気ないので、リアルタイムでプロットを眺めたい。 いくつかの Deep Learning パッケージではそういった機能 (Live Monitoring) が提供さ…

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

ニューラルネットワークを使ったオブジェクト検出の手法に R-CNN (Regions with CNN) というものがある。簡単にいうと、R-CNN は以下のような処理を行う。 入力画像中からオブジェクトらしい領域を検出し切り出す。 各領域を CNN (畳み込みニューラルネット…

Python pandas データのイテレーションと関数適用、pipe

pandas ではデータを 列 や 表形式のデータ構造として扱うが、これらのデータから順番に値を取得 (イテレーション) して何か操作をしたい / また 何らかの関数を適用したい、ということがよくある。このエントリでは以下の 3 つについて整理したい。 イテレ…

Python pandas + folium + Jupyter でリーフレット / コロプレス図を描きたい

引き続き、 R の可視化を Python に持ってくるシリーズ。R には以下のようなパッケージがあり、地図上へのリーフレット配置やコロプレス図の描画がカンタンにできる。それぞれの概要はリンク先を。 {leaflet}: リーフレット配置 Leaflet for R - Introductio…

Python pandas のデータを Highcharts/Highstock + Jupyter でプロットしたい

R を使っている方はご存知だと思うが、R には {htmlwidgets} というパッケージがあり、R 上のデータを任意の Javascript ライブラリを使ってプロットすることが比較的カンタンにできる。{htmlwidgets} って何?という方には こちらの説明がわかりやすい。 RP…

Python spyre によるデータ分析結果のWebアプリ化

R を使っている方はご存知だと思うが、R には {Shiny} というパッケージがあり、データ分析の結果を インタラクティブな Web アプリとして共有することができる。{Shiny} って何?という方には こちらの説明がわかりやすい。 RStudio Shiny チュートリアル …

R で 状態空間モデル: {dlm} の最尤推定を可視化する

{dlm} において、状態空間モデルが最尤推定される過程がみたい。以下内容の補足的なエントリ。 R で 状態空間モデル: {dlm} の対数尤度計算について - StatsFragmentssinhrks.hatenablog.com 「状態空間時系列分析入門」では 引き続き 第8章 に相当。 状態空…

R で 状態空間モデル: 状態空間時系列分析入門を {rstan} で再現したい

前の記事でもリンクさせていただいているが、サイト 「状態空間時系列分析入門」をRで再現する では以下のテキストを {dlm}, {KFAS} で再現されており非常にありがたい。これらのパッケージの使い方については リンク先を読めば困らない感じだ。 自分も勉強…

R で 状態空間モデル: {dlm} で単変量モデルの状態空間表現を利用する

こちらの続きで、状態空間時系列分析入門の第8章の内容。 R で 状態空間モデル: {dlm} の対数尤度計算について - StatsFragmentssinhrks.hatenablog.com 状態空間時系列分析入門作者: J.J.F.コマンダー,S.J.クープマン,Jacques J.F. Commandeur,Sime Jan Koo…

R で 状態空間モデル: {dlm} の対数尤度計算について

状態空間モデルを扱う R パッケージである {dlm} では、モデルのパラメータ推定を最尤法で行なう。その際に使われる対数尤度の計算式はパッケージによって違いがあるようで、推定結果が自分の参照しているテキストとずれる。その違いを確かめたい。 当該のテ…

pandas 日時まわりのリサンプリング/オフセット処理

こちらの続き。 Python pandas で日時関連のデータ操作をカンタンに - StatsFragments 今回のサンプルデータには自分の歩数のデータを使いたい。インスパイヤ元は以下のサイトだ。 下半身のデータをオープンにした - 盆栽日記d.hatena.ne.jp データの読み込…

pandas 0.16.0/0.16.1 の主要な新機能

先日 5/11 に pandas 0.16.1 がリリースされた。前バージョンである 0.16.0 とあわせて、主要な変更点である以下3点の概要をまとめたい。各見出しの括弧内には対応したバージョンを記載した。 簡単な列追加 / DataFrame.assign (0.16.0) 文字列処理の強化 (0…

簡単な集約/変換処理を PySpark & pandas の DataFrame で行う

こちらの続き。 簡単なデータ操作を PySpark & pandas の DataFrame で行う - StatsFragmentssinhrks.hatenablog.com 準備 サンプルデータは iris 。今回は HDFS に csv を置き、そこから読み取って DataFrame を作成する。 # HDFS にディレクトリを作成しフ…

Python pandas 関連エントリの目次

このブログ中の pandas 関連のエントリをまとめた目次です。 最近 pandas 開発チーム と PyData グループ の末席に加えていただき、パッケージ自体の改善にもより力を入れたいと思います。使い方についてご質問などありましたら Twitter で @ ください。 目…

簡単なデータ操作を PySpark & pandas の DataFrame で行う

Spark v1.3.0 で追加された DataFrame 、結構いいらしいという話は聞いていたのだが 自分で試すことなく時間が過ぎてしまっていた。ようやく PySpark を少し触れたので pandas との比較をまとめておきたい。内容に誤りや よりよい方法があればご指摘 下さい…