タグ

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

  • R {arules} によるアソシエーション分析をちょっと詳しく <2> - StatsFragments

    こちらの続き。 データの作り方 (承前) 単体の list や data.frame から arules::transactions インスタンスを作る方法は前回まとめた。 加えて、一般のデータでありえそうな 正規化された形を考える。サンプルは コンビニのPOSデータをイメージして、 tran.df: 1 トランザクション ( = 1 売上 )ごとに記録されるマスタ goods.df: 各トランザクションに対して販売された商品を記録するレコード の 2 テーブルからなるデータとする。必要な部分だけ抜き出すと、例えばこんな形。 library(arules) tran.df = data.frame(日時 = paste0('2014-12-22 ', seq(9, 20, 1), ':00'), レジ番号 = rep(1, 12), レシート番号 = seq(1, 12), 年齢層 = r

    R {arules} によるアソシエーション分析をちょっと詳しく <2> - StatsFragments
  • Python pandas データ選択処理をちょっと詳しく <後編> - StatsFragments

    概要 こちらの続き。これで pandas でのデータ選択についてはひとまず終わり。 Python pandas データ選択処理をちょっと詳しく <前編> - StatsFragments Python pandas データ選択処理をちょっと詳しく <中編> - StatsFragments サンプルデータの準備 データは 前編と同じものを使う。ただし変数名は変えた。 import pandas as pd s1 = pd.Series([1, 2, 3], index = ['I1', 'I2', 'I3']) df1 = pd.DataFrame({'C1': [11, 21, 31], 'C2': [12, 22, 32], 'C3': [13, 23, 33]}, index = ['I1', 'I2', 'I3']) s1 # I1 1 # I2 2 # I3 3 # dtype:

    Python pandas データ選択処理をちょっと詳しく <後編> - StatsFragments
  • Python pandas データ選択処理をちょっと詳しく <前編> - StatsFragments

    概要 書いていて長くなったため、まず前編として pandas で データを行 / 列から選択する方法を少し詳しく書く。特に、個人的にはけっこう重要だと思っている loc と iloc について 日語で整理したものがなさそうなので。 サンプルデータの準備 import pandas as pd s = pd.Series([1, 2, 3], index = ['I1', 'I2', 'I3']) df = pd.DataFrame({'C1': [11, 21, 31], 'C2': [12, 22, 32], 'C3': [13, 23, 33]}, index = ['I1', 'I2', 'I3']) s # I1 1 # I2 2 # I3 3 # dtype: int64 df # C1 C2 C3 # I1 11 12 13 # I2 21 22 23 # I3 31 32

    Python pandas データ選択処理をちょっと詳しく <前編> - StatsFragments
  • Python pandas 欠損値/外れ値/離散化の処理 - StatsFragments

    データの前処理にはいくつかの工程がある。書籍「データ分析プロセス」には 欠損など 前処理に必要なデータ特性の考慮とその対処方法が詳しく記載されている。 が、書籍のサンプルは R なので、Python でどうやればよいかよく分からない。同じことを pandas でやりたい。 データ分析プロセス (シリーズ Useful R 2) 作者: 福島真太朗,金明哲出版社/メーカー: 共立出版発売日: 2015/06/25メディア: 単行この商品を含むブログ (2件) を見る とはいえ、pandas 自身は統計的 / 機械学習的な前処理手法は持っていない。また Python には R と比べると統計的な前処理手法のパッケージは少なく、自分で実装しないと使えない方法も多い。ここではそういった方法は省略し、pandas でできる前処理 / 可視化を中心に書く。 また、方法自体の説明は記載しないので、詳細

    Python pandas 欠損値/外れ値/離散化の処理 - StatsFragments
  • Python pandas 図でみる データ連結 / 結合処理 - StatsFragments

    なんかぼやぼやしているうちにひさびさの pandas エントリになってしまった。基的な使い方については網羅したい気持ちはあるので、、、。 今回は データの連結 / 結合まわり。この部分 公式ドキュメント がちょっとわかりにくいので改訂したいなと思っていて、自分の整理もかねて書きたい。 公式の方はもう少し細かい使い方も載っているのだが、特に重要だろうというところだけをまとめる。 連結 / 結合という用語は以下の意味で使っている。まず憶えておいたほうがよい関数、メソッドは以下の 4 つだけ。 連結: データの中身をある方向にそのままつなげる。pd.concat, DataFrame.append 結合: データの中身を何かのキーの値で紐付けてつなげる。pd.merge, DataFrame.join 連結 (concatenate) 柔軟な連結 pd.concat ふたつの DataFram

    Python pandas 図でみる データ連結 / 結合処理 - StatsFragments
  • R で 状態空間モデル: 状態空間時系列分析入門を {rstan} で再現したい - StatsFragments

    前の記事でもリンクさせていただいているが、サイト 「状態空間時系列分析入門」をRで再現する では以下のテキストを {dlm}, {KFAS} で再現されており非常にありがたい。これらのパッケージの使い方については リンク先を読めば困らない感じだ。 自分も勉強のために似たことやりたい、、でも同じことやるのもなあ、、と考えた結果 同テキストの内容 {rstan} を使ってやってみた。 補足 Stan には状態空間表現用の関数 gaussian_dlm_obs ( 利用例 ) があるのだが、自分は使ったことがない。7章までのモデルは全て漸化式で表現されているため、それらを Stan のモデルとして記述した。 状態空間時系列分析入門 作者: J.J.F.コマンダー,S.J.クープマン,Jacques J.F. Commandeur,Sime Jan Koopman,和合肇出版社/メーカー: シーエ

    R で 状態空間モデル: 状態空間時系列分析入門を {rstan} で再現したい - 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
  • 岩波データサイエンス Vol.1 - StatsFragments

    ご恵贈いただきました。 ありがとうございます! あわせてタスクもいただきました (下部)。 書籍のコンテンツ 各章ごとの内容は id:sfchaos さんが詳しく紹介されています。 d.hatena.ne.jp まだ すべて読めていないのですが、以下 3 点がよいポイントだと思います。 理論 と サンプルプログラム 両方の記載がある BUGS, Stan, PyMC3 と主要なパッケージが網羅されている サンプルは単純な回帰だけでなく 時系列 / 空間ベイズを含む 補足 書籍には コラム "Pythonとは" という データ分析視点での Python 紹介があるのですが、中身は結構な pandas 推しでした。著者の方、いったい何者なんだ...。 Stan 入門 依頼により、著者の松浦さんが作成した RStan サンプルの PyStan 版を作成させていただきました。 以下リポジトリの "

    岩波データサイエンス Vol.1 - StatsFragments
  • Python pandas データのイテレーションと関数適用、pipe - StatsFragments

    pandas ではデータを 列 や 表形式のデータ構造として扱うが、これらのデータから順番に値を取得 (イテレーション) して何か操作をしたい / また 何らかの関数を適用したい、ということがよくある。このエントリでは以下の 3 つについて整理したい。 イテレーション 関数適用 pipe (0.16.2 で追加) それぞれ、Series、DataFrame、GroupBy (DataFrame.groupbyしたデータ) で可能な操作が異なるため、順に記載する。 まずは必要なパッケージを import する。 import numpy as np import pandas as pd イテレーション Series Series は以下 2つのイテレーション用メソッドを持つ。各メソッドの挙動は以下のようになる。 __iter__: Series の値 ( values ) のみをイテレーシ

    Python pandas データのイテレーションと関数適用、pipe - StatsFragments
  • Python pandas データ選択処理をちょっと詳しく <中編> - StatsFragments

    こちらの続き。 上の記事では bool でのデータ選択について 最後にしれっと書いて終わらせたのだが、一番よく使うところなので中編として補足。 まず __getitem__ や ix の記法では、次のような指定によって 行 / 列を選択することができた。 index, columns のラベルを直接指定しての選択 index, columns の番号(順序)を指定しての選択 index, columns に対応する bool のリストを指定しての選択 ここでは上記の選択方法をベースとして、ユースケースごとに Index や Series のプロパティ / メソッドを使ってできるだけシンプルにデータ選択を行う方法をまとめる。 補足 一部の内容はこちらの記事ともかぶる。下の記事のほうが簡単な内容なので、必要な方はまずこちらを参照。 簡単なデータ操作を Python pandas で行う - S

    Python pandas データ選択処理をちょっと詳しく <中編> - StatsFragments
  • 簡単な集約/変換処理を PySpark & pandas の DataFrame で行う - StatsFragments

    こちらの続き。 sinhrks.hatenablog.com 準備 サンプルデータは iris 。今回は HDFS に csv を置き、そこから読み取って DataFrame を作成する。 # HDFS にディレクトリを作成しファイルを置く $ hadoop fs -mkdir /data/ $ hadoop fs -put iris.csv /data/ $ hadoop fs -ls / Found 1 items drwxr-xr-x - ec2-user supergroup 0 2015-04-28 20:01 /data # Spark のパスに移動 $ echo $SPARK_HOME /usr/local/spark $ cd $SPARK_HOME $ pwd /usr/local/spark $ bin/pyspark 補足 前回同様に pandas から直接 PySp

    簡単な集約/変換処理を PySpark & pandas の DataFrame で行う - StatsFragments
  • 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

    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
  • ロジスティック回帰 (勾配降下法 / 確率的勾配降下法) を可視化する - StatsFragments

    いつの間にかシリーズ化して、今回はロジスティック回帰をやる。自分は行列計算ができないクラスタ所属なので、入力が3次元以上 / 出力が多クラスになるとちょっときつい。教科書を読んでいるときはなんかわかった感じになるんだが、式とか字面を追ってるだけだからな、、、やっぱり自分で手を動かさないとダメだ。 また、ちょっとした事情により今回は Python でやりたい。Python のわかりやすい実装ないんかな?と探していたら 以下の ipyton notebook を見つけた。 http://nbviewer.ipython.org/gist/mitmul/9283713 こちらのリンク先に2クラス/多クラスのロジスティック回帰 (確率的勾配降下法) のサンプルがある。ありがたいことです。理論的な説明も書いてあるので ロジスティック回帰って何?という方は上を読んでください (放り投げ)。 この記事で

    ロジスティック回帰 (勾配降下法 / 確率的勾配降下法) を可視化する - StatsFragments
  • Theano で Deep Learning <6>: 制約付きボルツマンマシン <前編> - StatsFragments

    DeepLearning 0.1 Documentation の第六回は 制約付きボルツマンマシン (Restricted Boltzmann Machines / 以降 RBM) 。RBM は オートエンコーダとはまた別の事前学習法。かなり分量があるので、とりあえず元文書 前半のRBM の仕組みまで。 RBM を理解しにくいポイントは 2 つあるかなと思っていて、 この構造 (グラフィックモデル) であるメリットはあるのか? 学習 (Contrastive Divergence) で何をやってんのか? というとこではないかと。最初、自分は 2 がまったくわからなかった。2 は "とりあえずできそうな構造 / 方法でやってみたらなんかうまくいった" 感があって、理由がいまいちはっきりしないところがある。 目次 DeepLearning 0.1 について、対応する記事のリンクを記載。 第一回

    Theano で Deep Learning <6>: 制約付きボルツマンマシン <前編> - StatsFragments
  • R dplyr, tidyr でのグルーピング/集約/変換処理まとめ - StatsFragments

    これの続き。よく使う集約/変換処理もまとめておく。 準備 library(dplyr) library(tidyr) (df <- dplyr::tbl_df(iris)) # Source: local data frame [150 x 5] # # Sepal.Length Sepal.Width Petal.Length Petal.Width Species # 1 5.1 3.5 1.4 0.2 setosa # 2 4.9 3.0 1.4 0.2 setosa # 3 4.7 3.2 1.3 0.2 setosa # .. ... ... ... ... ... グルーピング/集約 ある列の値ごとに集計 Species 列ごとに Sepal.Length 列の合計を算出する場合、 df %>% dplyr::group_by(Species) %>% dplyr::summa

    R dplyr, tidyr でのグルーピング/集約/変換処理まとめ - StatsFragments
  • 1