あれもPython,これもPython

Pythonメモ※本サイトはアフィリエイトを利用しています

カプランマイアーから情報を取り出す(生存時間解析)

カプランマイアーでつくったモデルから可視化や予測などの情報を取り出します。 可視化 from lifelines import KaplanMeierFitter from lifelines.datasets import load_waltons waltons = load_waltons() kmf = KaplanMeierFitter(label="waltons_data") km…

生存時間解析に便利なutil(期間の計算,集計表)

生存時間のモデリングに関しては過去にやりました。 そのときに、データを作るところでひと工夫が必要、と書いたのですが、そのあたりを楽にやる関数がlifelinesには用意されています。 esu-ko.hatenablog.com 期間の計算 開始時間と終了時間を渡すことで、…

クロス集計後にモザイクグラフやオッズ比を算出する。

カテゴリーデータの集計や疫学的なクロスを扱う場合、モザイク図、オッズ比などが使えると便利です。 モザイク図 クロス集計したデータをみる場合、構成比をわかりやすくするために、モザイク図を使いたいことがあります。statsmodelsにまんまの名前で存在し…

特徴量抽出に各変量の分散を使いたい

予測モデルを使う時に、各変量の分散をみて、使える特徴量かを確認し、絞ることがあります。 sklearnには閾値を設定し、それ以下の分散の特徴量を削除する。VarianceThresholdが存在します。 from sklearn.feature_selection import VarianceThreshold from …

PythonでLasso回帰をしたい

データ数が少ないにもかかわらず、特徴量が多い時や、単純に特徴の重要度を確認したいことがあります。 決定木系であれば、feature_importances_でみつつ、増減できますが、回帰の場合、回帰係数は取得できても、重要度は取得できません。 一応、statsmodels…

sklearnでニューラルネット(多層パーセプトロン)がしたい

データを探索的にモデリングしたいときに、単純なデータの組み合わせでは表現できない関係があるかを少しでも把握したいときがあります。 そういうときにニューラルネットを試すことで、把握がしたいのですが、PyTorchやTensorFlowでは手がかかりすぎるため…

Pythonでデータ間の距離を計算したい(_distancesとNearestNeighbors)

データ間の距離を取得したり、それによって似たデータが必要な場合、目的によって単純に距離を計算したい場合と、どのデータが近いかを簡単に取得したい場合があります。 データない、データ間の距離を計算する sklearnのXX_distanceで距離の計算が簡単にで…

sklearnだけで決定木の可視化をしたい(plot_treeを使う)

Rでは決定木の可視化は非常に楽だが、Pythonでは他のツールを入れながらでないと、、、と昔は大変だったのですが、現在ではsklearnのplot_treeだけで簡単に表示できるようになっています。 さらにplot_treeはmatplotlibと同様に操作できるため、pandasなどに…

Pythonで時系列解析がしたい(多変量に対してVARを使う)

時系列間の関係を確認したいとき、どちらも定常であればVARモデルやVMAモデルが使えます。 特にVARは時系列間のlagを細かくこちらで仮定しきらなくて良いので便利です。 この書籍のRのVARをpythonで書き直してみます。 データの用意 書籍で用いるデータをRか…

Pythonで時系列解析(adfで単位根検定)

時系列データでトレンドを持つ場合の中に、単位根過程やトレンド定常過程というものがあります。 単位根過程の場合は、階差を取れば、定常過程に することができ、その判断のために単位根過程であることを把握したい場合、ADF検定を行います。 コード ADFはs…

Pythonで画像を扱いたい(エッジ抽出)

画像から枠を取り出します。 いくつか存在しますが、今回はcanny,robertesフィルター,sobelフィルターを試してみます。 画像の用意 from skimage.data import chelsea import matplotlib.pyplot as plt img = chelsea() エッジを抽出する canny from skimage…

Pythonで画像から特徴量をつくりたい(HOG)

色ではなく、HOGで画像の特徴量をつくってみます。 hogを可視化してみる 画像用意 from skimage.data import chelsea import matplotlib.pyplot as plt img = chelsea() plt.imshow(img) hogとhog画像の取得。 引数として方向、セルあたりのピクセル数、ブロ…

Pythonで画像から特徴抽出したい(色)

Pythonで画像を扱う場合、PILや生numpy、opencvなどの選択肢がありますが、今回は比較的扱いやすいskimageを試してみます。 画像はそのままでは機械学習に用いるのが難しく、特徴を抽出する手法があり、今回はRGBを取り出してみます。 (もはや深層学習でその…

Pythonで因果推論したい(CausalImpact)

タイトルの通り、CausalImpactをPythonで試してみます。 下記本を元にし、RからPythonで書き直し、同様の効果が推定できるか試してみます。 導入 pyが最初につくのに注意します。 pip install pycausalimpact データの作成 statsmodelsのcigarデータを使いま…

Pythonで自然言語の行ごとの分析をしてみる

以下のあたりの続きで、行単位でデータを見てみます。 esu-ko.hatenablog.com esu-ko.hatenablog.com データの作成1 行単位のデータをつくります。nltk.sent_tokenizeで日本語対応(改行や。での改行化)ができるか調べられなかったので、自前で改行ごとにルー…

Pythonでバイグラムの可視化をしてみる(networkx)

こちらの記事で、テキストを分割し、軽く分析しました。最後にバイグラムをつくったので、そこから先をやってみます。 バイグラムをつくるところまでは下記を参照。 esu-ko.hatenablog.com まず、加工集計しやすくするために、データフレームに変換します。 …

Pythonで長文自然言語を扱ってみる(NLTKの入門)

現在のビジネス環境だと、あまり使われることはないかもしれませんが、ある一つのテキストをひとまず把握したい!といったときにNLTKは便利機能がそろっています。 ミルクボーイさんのコーンフレーク漫才を文字起こししたものを、題材に使い方を把握してみま…

Pandasの可視化の結果をbase64エンコードする

やりたかったのはタイトルの通りです。 matplotlibやpandasのグラフを使い回したいことがあり、ローカルに保存せずにbase64にする方法を確認していました。 base64に関しては過去に調べていたので、なんとなくあたりは付けやすかったです。 esu-ko.hatenablo…

Pandasで可視化をしたい(折れ線系)

最後は時系列系で使う折れ線です。 予測を重ねたり、累計したり、といった加工も多く、Pandasだけでは、少々力不足かな、という結論です。 #対象を絞って、複数のグラフをつくる df.plot(y=['a','b'],subplots=True) #累計にして、一つのグラフの中で見る df…

Pandasで可視化をしたい(非集計系)

この続きで、今回は集計ではなく分布などを確認するヒストグラム、箱ひげ、散布図です。 esu-ko.hatenablog.com ヒストグラム plot.histとhistで挙動やパラメータが違うようです。(ややこしい!) さらにsubplots,groupby,byによって表示が変わります #列ご…

Pandasで可視化をしたい(集計系)

pandasのグラフ機能はpandasのimportだけで便利なのですが、少々挙動に癖がありますのでメモです。 まずは集計したデータを扱うものたちです。 円グラフ 円グラフは列の数値をまとめたものを、行単位で分けた形になります。 #複数列あるうちの一つ iris.grou…

Pythonでレーダーチャートを書きたい(自前でSeries,DF用をそれぞれ書く)

レーダーチャートはmatplotlibなどにはデフォルトがなく、自前実装が必要です。自分の用途に合わせ得て最低限データフレームとシリーズにそれぞれ対応した関数をまとめておきます 基本的な処理 表示の設定を行う ベースの表示を円形にする x軸(ここでは、可…

Pythonで時系列解析がしたい(ARIMA)

時系列で、一変量の場合、下記記事のように、パターンや抽出のトレンドの分析がメインです。 esu-ko.hatenablog.com ただし、週次のようにトレンドがないことが多く、複数変量もなく、データ量も少ない場合は、ARIMAを使うことがあります。 基本のコード ARI…

Pythonで分析結果をエクセルに出力したい

statsmodelsやsklearnでモデリングや機械学習処理を欠けた結果の量が多い時、やはりエクセルなどに出して確認したいことがあります。 特に探索的に主成分分析をかけたり、回帰で係数を把握したい時、jupyter notebookではどうしても表示枠が小さく感じます。…

Pythonだけでベイジアンモデリングをしたい(pymc_線形回帰)

今回は線形回帰をモデリングしてみます。 係数と誤差はそれぞれ正規分布を過程します これらを線形に計算する場合はDeterministicで確定的であることを宣言します。 これがさらに正規分布し、sdはコーシー分布を設定しておきます。 やりかた with pm.Model()…

pythonだけで、ベイズ推定したい(pymcを使う_入門)

ベイジアンモデリングといえば、pystanでstanをキックすることが多いですが、Pythonで書かれたpymcはPythonだけで完結できます。 pymcの使い方を学習していくことにします。 基本的な書き方 withの中でモデルを定義していきます。 各種分布がpymcの中には用…

mkdocsとnotebookをつなげたい

mkdocsという静的ページジェネレータがあります。 分析者としてはマークダウンとjupyter notebookを一つにまとめ、記録を残していきたくなります。そこでmkdocsとjupyterをつなげるパッケージを使用します。 準備 pip install mkdocs pip install mkdocs-jup…

Pandasからsqlite3を使いたい(to_sql,read_sql_query)

一つのデータ活用プロジェクトに従事する場合はあまり問題になりませんが、 複数のデータを探索したり、モニタリングするロールの場合、大量のデータセットにすぐアクセスしたり、扱うデータの管理が重要になります。 ただし、SQLを主体にすると、どうしても…

PythonからRのパッケージを使いたい(Pyperを使う)

普段はjupyter labを使っており、現在PythonもRも実行可能にしてあります。 分析結果はすべてjupyterのファイルとして残っており、githubにそのままあげれば分析過程も残せます。 ただ、どちらを使うべきか、を都度判断するのもめんどうだな、と思い、ひとま…

Pythonで推薦アルゴリズムを試す(scikit-surpriseを使う)

Pythonで推薦アルゴリズムのパッケージを探していたところ、scikit-surpriseというパッケージが便利そうだったのでメモです。 このパッケージは、データの取り込み、予測アルゴリズム、テストデータによる評価などの機能をが用意されています。 ひとまず試し…