機械学習など主に予測を目的とした統計手法に強いイメージのPythonでしたが、統計的因果推論を行うためのライブラリ、“DoWhy”がついにリリースされました。 DoWhy | Making causal inference easy — DoWhy | Making Causal Inference Easy documentation これまで因果推論があまり浸透してこなかった*1データサイエンス界に新しい風が吹くのではと期待が高まります。 一方でこのパッケージが何を可能にし、逆に何ができないのかを理解しなければ、雑なデータ分析が増えて逆に有害なのではと思い、今回ブログを書くことにしました。 先に言っておくと、私自身はPythonをメインに使っているわけではありません(使ったことはあるので一応コードを読んで何が起こっているかくらいはわかります)。したがって本記事の目的は、DoWhyライブ
単変量の時系列はkerasでもよく見るのですが、株価や売上などを予測する時などには複数の要因が関わってきますので、今回は複数の時系列データを使って予測してみました。 ソースの紹介 コード 「MACHINE LEARNING MASTERY」で紹介されているコードを基本に、多変量対応にしました。 Time Series Prediction with LSTM Recurrent Neural Networks in Python with Keras jupyterで見れるコードの全貌はこちら https://github.com/tizuo/keras/blob/master/LSTM%20with%20multi%20variables.ipynb データ サンプルデータは以下から拝借しました。一番左のice_salesを予測します。 アイスクリームの売れ方 ice_sales yea
これがEllipsisオブジェクト。 Ellipsis または ... で表されるシングルトンオブジェクトである。 公式リファレンスでは「主に拡張スライス構文やユーザ定義のコンテナデータ型において使われる特殊な値」とあるのみで、明確に用途を定義していない。 英語のellipsisは「省略」という意味なので、処理や引数を省略したい場合に使うものと考えられる。 Noneやpassとの違い None None は「値が存在しない」ことを表すが、Ellipsis は「何らかの値が存在するが省略されている」ことを表す。 bool(Ellipsis) の返り値が True である点から見ても、 Ellipsis が None よりも肯定的な意味をもつことがわかる。
Pythonでのグラフ描画 Pythonチャートを描く場合の定番は「matplotlib」ですが、その見た目のやや野暮ったい感じと、表記法のややこしさが指摘されています。 そこで、この記事ではMatplotlibの機能をより美しく、またより簡単に実現するためのラッパー的存在である、「Seaborn」の使い方を取り上げます。 ◆ Overview of Python Visualization Tools http://pbpython.com/visualization-tools-1.html 上記の記事ではMatplotlibとSeabornについて下記のように書かれています。 matplotlibについて Matplotlib is the grandfather of python visualization packages. It is extremely powerful b
pandasを触り始めた時に感じた思いをタイトルにしてみました。テーブル操作においてSQLを使うことに慣れすぎて、pandasのDataFrameを操作しようとした時どうやるのか戸惑うことが多かったです。 SQLの基本的な構文がpandasではどう実現するのかを1つ1つ並べて確認して行きます。備忘録になれば幸いです。 pandasとは という説明は全部ふっとしばします。その代わりに以下のサイトに綺麗にまとまっているので読んでみてください。 pandasで使われるデータ構造 ~1次元、2次元、3次元のデータの扱い方~ 事前準備 titanicのコードを使います。kaggleのコンペティションからデータをダウンロードしてきます。 import pandas df = pd.read_csv("local/path/to/train.csv") df1 = df[['PassengerId',
正解率 (精度, accuracy):正や負と予測したデータのうち,実際にそうであるものの割合 \[\mathrm{Accuracy}=\frac{TP+TN}{TP+FP+TN+FN}\] 適合率 (precision):正と予測したデータのうち,実際に正であるものの割合 \[\mathrm{Precision}=\frac{TP}{TP+FP}\] 再現率 (recall, 感度, sensitivity):実際に正であるもののうち,正であると予測されたものの割合 \[\mathrm{Recall}=\frac{TP}{TP+FN}\] 特異度 (specificity):実際に負であるもののうち,負であると予測されたものの割合 \[\mathrm{Specificity}=\frac{TN}{FP+TN}\] F値 (F尺度, F-measure):再現率と適合率の調和平均. \[\
概要 Python で日時/タイムスタンプ関連の操作をする場合は dateutil や arrow を使っている人が多いと思うが、 pandas でもそういった処理がわかりやすく書けるよ、という話。 pandas の本領は多次元データの蓄積/変形/集約処理にあるが、日時操作に関連した強力なメソッド / ユーティリティもいくつか持っている。今回は それらを使って日時操作を簡単に行う方法を書いてく。ということで DataFrame も Series もでてこない pandas 記事のはじまり。 ※ ここでいう "日時/タイムスタンプ関連の操作" は文字列パース、日時加算/減算、タイムゾーン設定、条件に合致する日時のリスト生成などを想定。時系列補間/リサンプリングなんかはまた膨大になるので別途。 インストール 以下サンプルには 0.15での追加機能も含まれるため、0.15 以降が必要。 pip
対象としている手持ちのデータが、どのような特徴をもっているかを理解しておくことは、統計解析をおこなう際にとても重要。本当は、データを集める前に理解しておいたほうがいいのだろうけど、どこからともなくやってきたデータと向き合わなくてはいけない場合もあるし、そういうときに心得ておくと良いこと。そんなメモ。 多くの統計的検定の手法は、データが正規分布に従うことを仮定している。いわゆるパラメトリック手法といわれるやつ(母集団の分布型に一定の仮定をおく... 正規分布でなくてもおk?)がそれだ。 データが正規分布に従うかどうか(正規性)を確認する方法は、大きく分けて2つある。度数分布図(ヒストグラム)や正規確率グラフを用いて視覚的に確認するか、統計的手法を用いて客観的な評価をおこなうかである。もちろんRではどちらの方法も実行できるのでやってみる。
学校の授業や資格のテストでは、「正規分布をしている」ことを前提に、検定や推定が行われることが多いですよね。 しかし、実際に自分でデータをとって分析する時は、当然ですが誰もそのデータ郡が「正規分布をしている」とは保証してくれないわけです。 そのため、データ解析を始めるその前に「正規性の検定(正規分布しているかどうかの確認)」をしなければなりません。 今回は、正規分布かどうかを見極めるための検定と手法を、Pythonを用いてやっていきたいと思います。 注)* 標準偏差・ヒストグラムなどを理解していない初学者の方はまずこちらから参照することをおすすめします。 www.ie-kau.net 目次:正規分布かどうか見極める手順 まずはサンプルデータの作成から ヒストグラムとQQプロットで視覚的に確認する 法則を使って正規性を検定する 1. まずはサンプルデータの作成から データがあったほうがわかりや
本ページでは、Python の機械学習ライブラリの scikit-learn を用いて、回帰モデル (Regression model) の予測精度を評価する方法を紹介します。 回帰モデルの評価にはいくつかの指標があり、本ページでは主要な指標として、MAE, MSE, RMSE, 決定係数の 4 つを紹介します。 平均絶対誤差 (MAE) 平均絶対誤差 (MAE, Mean Absolute Error) は、実際の値と予測値の絶対値を平均したものです。MAE が小さいほど誤差が少なく、予測モデルが正確に予測できていることを示し、MAE が大きいほど実際の値と予測値に誤差が大きく、予測モデルが正確に予測できていないといえます。計算式は以下となります。 (: 実際の値, : 予測値, : 件数) scikit-learn には、sklearn.metrics.mean_absolute_er
なんかぼやぼやしているうちにひさびさの pandas エントリになってしまった。基本的な使い方については網羅したい気持ちはあるので、、、。 今回は データの連結 / 結合まわり。この部分 公式ドキュメント がちょっとわかりにくいので改訂したいなと思っていて、自分の整理もかねて書きたい。 公式の方はもう少し細かい使い方も載っているのだが、特に重要だろうというところだけをまとめる。 連結 / 結合という用語は以下の意味で使っている。まず憶えておいたほうがよい関数、メソッドは以下の 4 つだけ。 連結: データの中身をある方向にそのままつなげる。pd.concat, DataFrame.append 結合: データの中身を何かのキーの値で紐付けてつなげる。pd.merge, DataFrame.join 連結 (concatenate) 柔軟な連結 pd.concat ふたつの DataFram
Python for Data Analysisの日本語版発売記念に よく使いそうなものとか詰まりそうなところとか めちゃくちゃ長くなってしまったので目次 複数のSeriesを結合してDataFrameに DataFrameのインデックス参照 columnの参照 rowの参照 行と列を同時に範囲指定して参照 (ixによる参照) Seriesのインデックス参照 bool値によるマスキング Series同士, DataFrame同士の演算 階層的インデックス stackメソッドとunstackメソッド 名前付け 行または列の名前付け インデックスラベル自体の名前付け ビンニング 列とインデックスの変換 ランダムサンプリング カテゴリカルデータをダミー変数化 グルーピング 複数のSeriesを結合してDataFrameに concatを使ってでaxis=1にすれば良い s1 = pd.Serie
導入 データ分析にて、最も基本的な回帰分析から始めていきます*1。回帰分析とは、説明したい変数(目的変数)とそれを説明するための変数(説明変数)の間の関係を求める手法です。機械学習の手法の区分としては、教師あり学習(解答に相当する教師データを用いてモデルを構築)に属するものです。 回帰分析の目的は大きく2種類あります。 理解:文字通り、変数間の構造・関係の理解 例:ある病気に対して、どのような遺伝子が寄与しているかをマイクロアレイデータなどのデータを用いて明らかにする 予測:変数間の関係をもとに、将来予測をする 例:過去の広告の投下量と売上実績から、これらの関係を説明するモデルを構築し、それをもとに将来の広告への投資計画を立てる ビジネスの世界では、予測を目的に使用されることがほとんどです。それは、モデル構築によって要因を明らかにするだけでなく、その後の施策でそのモデルの知見を使い、価値を
はじめに:Spark Dataframeとは Spark Ver 1.3からSpark Dataframeという機能が追加されました。特徴として以下の様な物があります。 Spark RDDにSchema設定を加えると、Spark DataframeのObjectを作成できる Dataframeの利点は、 SQL風の文法で、条件に該当する行を抽出したり、Dataframe同士のJoinができる filter, selectというmethodで、条件に該当する行、列を抽出できる groupBy → aggというmethodで、Logの様々な集計ができる UDF(User Defined Function)で独自関数で列に処理ができる SQLで言うPivotもサポート (Spark v1.6からの機能) つまり、RDDのmapやfilterでシコシコ記述するよりもSimple Codeで、且つ高
import pandas as pd import numpy as np import matplotlib.pyplot as plt %matplotlib inline
このサイトについて このサイトでは、データ加工や集計、統計分析などインタラクティブに実行されるスクリプトやバッチプログラム、本格的な Web アプリケーションの実装まで、多彩な機能を持ちながらも初心者にも扱いやすいプログラミング言語 Python (パイソン) を使ったデータの統計分析の手順や使い方について紹介します。 初めてプログラムに触れる人や、R や SAS, Ruby のような言語のプログラミング経験はあっても、Python をあまり扱った経験のない初心者向けに理解できるような内容としてまとめています。 また、本格的な統計分析(基本統計量や多変量解析、データマイニング、機械学習)を学んだことがない人でも理解できるよう、統計(アナリティクス)の解説も必要に応じて述べています。 このサイトで提供できる情報を通して、皆さんが Python を使ったビッグデータ解析を思いのままに使いこなせ
この記事は「Python その2」Advent Calendar 2015の14日目です。 何を書こうか迷ってましたが、今年学んだPython関係の技術で一番恩恵を預かったREST Frameworkについて書いてみようと思います。 はじめに APIを作るのは結構面倒 初めにAPIを作るということの難易度に触れておこうと思います。 実際に作った経験のある方も多いと思いますが、WebAPIはWebページと違ってロジックのみに集中して開発できるので、開発しやすいといえば開発しやすいです。デザインや利用環境気にしたり、HTMLやJavascriptような複数の言語を駆使する必要も全く無いです。レスポンスを正しく受け取って適切にレスポンスを返すだけ。 とはいうものの実際作ってみると面倒な事が多く出てきます。例えば入力された値が正しいのかどうかをチェックしたりだとか、複数の条件で結果をフィルタリング
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く