け日記

最近はPythonでいろいろやってます

Python: NumPyで縦持ちから横持ちへ変換する小ワザ

以前、DataFrameの縦持ち・横持ちの変換につ いてまとめましたが、今回はNumPyの行列を縦持ちから横持ちへ変換する小ワザを紹介します。 ohke.hateblo.jp 以下のような5行3列の値を、列1の値を行インデックス、列2を列インデックス、列3を各要素の値として行…

Python: BayesianOptimizationによるベイズ最適化

お仕事で、時間のかかる学習のパラメータ選定に、ベイズ最適化を用いる機会がありましたので、備忘録として整理します。 ベイズ最適化 ベイズ最適化 (Bayesian Optimization) は、過去の実験結果から次の実験パラメータを、確率分布から求めることで最適化す…

Python: Joblibで並列処理プログラミング

Pythonの並列処理では標準ライブラリであるmultiprocessingがよく使われると思いますが、「もっと気楽に実装したい」という場合に便利なのがJoblibです。 github.com 今回はJoblibを使った並列処理プログラミングについて紹介します。 基本的な使い方 使い始…

Python: PandasのDataFrameを横持ち・縦持ちに変換する

PandasのDataFrameを縦持ちから横持ちにする方法とその逆(横持ちから縦持ちにする方法)についての備忘録です。 縦持ちと横持ち 縦持ちは、以下のように、カラム固定で1行に1つの値を持たせている表です。カラムをおいそれと変更できないDBのテーブルなどはこ…

Scrapyでけ日記をクローリングする (3. parseへ任意の値を渡す方法とエラーハンドリング)

前回・前々回に引き続き、Scrapyを使ってこのブログのクローリングを行います。 github.com 今回は細々としたところで、Spiderクラスのparseメソッドへ値を受け渡す方法と、エラーハンドリングについてです。Spiderの実装は前々回の投稿も参考にしてみてくだ…

Scrapyでけ日記をクローリングする (2. PipelineでPostgreSQLに保存する)

前回に引き続き、Scrapyを使ってこの日記のクローリングを行います。 github.com 今回はクローリングで得られた値を、バリデーションしてPostgreSQLに保存するPipelineを実装します。Spiderの実装は前回の投稿も参考にしてみてください。 ohke.hateblo.jp こ…

Scrapyでけ日記をクローリングする (1. 初めてのSpider作り)

Scrapyを使ってはてなブログ、といいますか、この日記のクローリングを行います。今回はエントリタイトルを取得するSpiderを作ります。 こちらの書籍を参考にしてます。 Scrapyとは Scrapyはクローリング&スクレイピングに特化したPythonのフレームワークで…

Python: setにlistやtupleを追加する

Pythonでsetとlistを使う時のtipsです。 listやtupleを引数にsetを作ることができます。 set_a = set(['a', 'b', 'c', 'a']) # {'a', 'b', 'c'} set_b = set(('a', 'b', 'c', 'a')) # {'a', 'b', 'c'} addメソッドで1要素を追加することはできますが、listや…

NumPyを使って線形モデルのパラメータを最小二乗法で推定する

線形モデルと最小二乗法について調べることがありましたので、まとめておきます。 今回は青本の2章を参考に、繰り返し測定、1元配置、多項式の3つのモデルで例示します。また、NumPyを使った行列計算でナイーブに最小二乗法を実装します。 自然科学の統計学 …

PythonでRedisを参照・更新する

仕事でPythonアプリケーションからアクセスするRedisの導入を検討した際に、redis-pyでRedisを参照・更新する方法について調べましたので、備忘録にしておきます。 redis-pyのドキュメントはこちらです。 http://redis-py.readthedocs.io/ DockerでRedisコン…

Google AnalyticsのデータをBigQueryで集計・分析するときのテクニック集

先週の投稿で、Google AnalyticsのサンプルデータをBigQueryでクエリできるようにしました。 BigQueryを有効化してGoogle Analyticsのサンプルデータにクエリできるようにする - け日記 今回はBigQueryを使ってGoogle Analytics (GA)のデータを集計・分析す…

BigQueryを有効化してGoogle Analyticsのサンプルデータにクエリできるようにする

最近、よく仕事でGoogle AnalyticsのデータをBigQueryで集計したりしています。 プライベートでも学習できる環境が欲しかったので、Google Cloud Platform (GCP)アカウントでBigQueryを有効化して、Google Analytics (GA)のサンプルデータにクエリできるよう…

Python: SciPyを使った仮説検定

前回はSciPyを使った推定をとりあげましたが、今回は正規分布に関する仮説検定をSciPyを使って行います。 サンプルには前回同様、Irisデータセットを使いますので、UCIのWebサイトからダウンロードして品種ごと(setosa, virginica, versicolor)に分けておき…

Python: SciPyを使った統計的推定

SciPyを使って統計的推定を行います。 Irisデータセットを使いますので、UCIのWebサイトからダウンロードし、品種ごと(setosa, virginica, versicolor)に分けておきます。それぞれの標本数は50です。 import pandas as pd import math from scipy import sta…

時系列データで使うPandas小技集

時系列データを扱うにあたって役に立った、Pandasのテクニックを紹介します。 文字列型のSeriesから日時型・日付型のSeriesへ変換する 日付に欠測値を含むデータを日毎に集計する 累積和を計算する 今回の例に使う時系列データは以下です。 ある商品の4/1〜4…

SQL ServerでJSON文字列の値の取得・設定を行なう

SQL Server 2016からJSON用の関数がいくつか追加されていますので、使い方を備忘録にしておきます。 ここでは以下のようにカラムにJSONの値が入っているテーブルを例にします。 値がJSONフォーマットかどうか 値がJSONフォーマットかどうか確認するには、ISJ…

Apache AirFlowをDocker環境で構築して簡単なジョブを作る

仕事でApache AirFlowを使う機会がありましたので、調査がてらに、Dockerで環境を構築し、簡単なジョブを定義します。 AirFlow AirFlowはジョブのスケジューリング・監視を、コード(主にPython)で定義・制御するためのプラットフォームです。ワークフロー、…

Python: Luigiの実行結果をCentral Schedulerで見やすくする

前回の投稿(Python: Luigiでデータパイプラインを作る - け日記)では、Pythonのデータパイプラインフレームワーク Luigi を使って依存関係のあるタスクを定義しました。 前回は1つ1つコマンドライン上で実行結果を見ていましたが、今回はCentral Schedulerを…

Python: Luigiでデータパイプラインを作る

バッチ処理の実装にLuigiを使う機会があり、少し調べて整理しました。 irisデータセットをダウンロードしてきて、scikit-learnで学習したモデルをS3にアップロードする、簡単なサンプルも作ります。 Luigi Luigiは、データパイプラインを記述するためのPytho…

C# クエリストリング(?var=hoge&...)を作る

C#

C#でクエリストリングを作る方法の備忘録です。 クエリストリングは、URLのパスの後ろに?変数名1=値1&変数名2=値2&...といった形で任意の値が渡される文字列です。例えば以下のような文字列です。 http://ohke.hateblo.jp/search?q=Python&page=1504879200 L…

Python: 回帰モデルで市場反応分析

これまで緑本などで学んできた統計モデルを、マーケティングに応用するための勉強を行っています。 今回は市場反応分析を線形回帰モデルとポアソン回帰モデルで行います。 市場反応分析に関する理論や使用するデータは、マーケティングの統計モデル (統計解…

Python: statsmodelsでガンマ回帰

これまで読み進めてきた緑本を改めて復習するために、statsmodelsで一般化線形モデル(GLM)を作り、糖尿病に関するデータの回帰分析を行います。 実装はこちらです。 blog/statsmodels_gamma.ipynb at master · ohke/blog · GitHub データセット 今回はscikit…

Pythonで実装しながら緑本を学ぶ (第10章 階層ベイズモデル)

データ解析のための統計モデリング入門(通称、緑本)を読み進めています。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第10章です。PyMC3を使って階層ベイズモデルを表現します。実装は以…

Pythonで実装しながら緑本を学ぶ (第9章 GLMのベイズモデル化と事後分布の推定)

データ解析のための統計モデリング入門(通称、緑本)を読み進めています。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第9章です。PyMC3を使って、GLMをベイズモデルで表現します。実装は…

Python: foliumでJupyter Notebookに地図を描画する

Jupyter Notebook上で、緯度経度の情報を地図へ簡単にプロットできる方法を探していたところ、foliumの使い勝手が良かったので紹介します。 folium PythonからLeaflet.jsで地図をプロットするパッケージです。 https://github.com/python-visualization/foli…

Pythonで実装しながら緑本を学ぶ (第8章 マルコフ連鎖モンテカルロ(MCMC)法とベイズ統計モデル)

データ解析のための統計モデリング入門(通称、緑本)を読み進めています。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第8章です。実装は以下で公開しています。 introduction_to_machine_…

Pythonで実装しながら緑本を学ぶ (第7章 一般化線形混合モデル(GLMM))

データ解析のための統計モデリング入門(通称、緑本)を読み進めています。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第7章です。実装は以下で公開しています。 introduction_to_machine_…

Pythonで実装しながら緑本を学ぶ (第6章 GLMの応用範囲を広げる -ロジスティック回帰など-)

データ解析のための統計モデリング入門(通称、緑本)を読み進めています。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第6章です。実装は以下で公開しています。 introduction_to_machine_…

Pythonで実装しながら緑本を学ぶ (第5章 GLMの尤度比検定と検定の非対称性)

データ解析のための統計モデリング入門(通称、緑本)を読み進めています。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第5章です。実装は以下で公開しています。 introduction_to_machine_…

Pythonで実装しながら緑本を学ぶ (第4章 GLMのモデル選択)

前回から引き続き、データ解析のための統計モデリング入門(通称、緑本)を読み進めています。 述べられている理論を整理しつつ、Rでの実装をPythonに置き換えた際のポイントなども深掘りしていきます。 今回は第4章です。実装は以下で公開しています。 introd…