2022-01-01から1年間の記事一覧

決定木とは

データを特徴量空間上で矩形分割するモデル 分割は「ある特徴量がある値と一致するか」「ある特徴量がある値より大きいか小さい」などのルールに従って行う 分割ルール(分割対象となる特徴量と閾値の組)をどう見つけるかが大切 情報利得を目的関数とし、こ…

地理空間データのwkt形式について

地理空間データの形式として .shp 形式をよく利用してた .shp はどうも重い? wkt はオブジェクトとそのオブジェクトの頂点座標の集合を1つのデータセットとしてもつ形式 ファイルの形式そのものは .csv になる あとでちゃんと調べよう

python基礎お勉強

ライブラリ import pandas as pd import numpy as np データロード from sklearn.datasets import load_iris iris = load_iris() X = pd.DataFrame(iris.data, columns=iris.feature_names) y = pd.Series(iris.target) # X = pd.DataFrame(iris['data'], co…

vscodeの捗る設定

jupyterの捗るショートカット設定 現在のセルの実行 + 次のセルに移動(runcurrentcelladvance): ctrl + shift + enter 現在のセル実行+セルを追加(runcurrentcellandaddbelow): ctrl + enter(colaboratoryと統一) 前のセルに移動(gotoPrevCellInFil…

vscodeでコードブロックの導入

vscodeでコードブロックを使いたければ、jupyterのセルを導入すればよい # %% でコードブロックを明示するだけ # %% from sklearn import datasets # %% X, y = datasets.fetch_openml(...) # %% ... セルを導入するとエディターにセルコードLens でてくる …

mcmcを使ってベイズ推定を自作でやってみる

ベイズ推定はライブラリやstanを使えばお手軽に実行可能 お手軽すぎて中身が本当に理解できているか不安 なので自作してみた まずは準備 # 神ライブラリ pacman::p_load(tidyverse) # データの格納先 mu <- NULL lp <- NULL # パラメタ更新のステップサイズ …

googledriveパッケージについて

以下の3つの関数でこと足りる気がするのでまとめておく drive_find について ディレクトリやファイルの検索関数 検索対象の 名前 と ID を取得可能 検索範囲を拡張子やタイプで type で指定可能 document : Google Docs presentation : Google Slides spread…

交絡のコントロールについて

因果推論したいとき、交絡をいかにコントロールするかは大切 交絡のコントロールの方法はたくさんある 層別分析 多変量解析(重回帰分析など) 傾向スコア(マッチング、逆確率重みづけ、など) などなど 交絡が生じているときにコントロールしないとどうな…

pmapの特殊な仕様について

purrr::map2 でベースを作ったあと、引数をさらに増やしたいときがある map2 で扱える引数は2つまでなので、引数を増やすには purrr::pmap を使う pmap は 引数の指定はやや特殊 map2 のように .x .y …ではなく、pmap では ..1 ..2 ..3 …としなくてはならな…

列名を綺麗にしたいとき

janitor::clean_names という関数がとても便利。 列名はすべて小文字に変更 列名はすべてスネークケースに変更 列名に含まれる空白は _ に置換 列名に含まれる邪魔な文字は削除(例:ウムラウト、 @ 、 () など) 列名に含まれる % は percent に変更 列名が…

ggplotで文字列をaesに引き渡したいとき

ggplotは aes の中がNSEになっている。なので、 ggplot(data = iris) + geom_histogram(aes(x = Sepal.Length)) これは動くけど、 ggplot(data = iris) + geom_histogram(aes(x = 'Sepal.Length')) これは動かない。文字列を aes に引き渡したいときは、 aes…

Google Chromeの検索画面を中央寄せにする方法

Google Chromeの検索画面が左寄せでうっとうしい 首が痛くなるんじゃい~ 中央寄せにするための拡張機能があって便利だった。 zslec.medium.com

NSE処理で変数列名を柔軟に変更

R NSE

データフレーム と 使用する変数 と 新しく合成する変数列名 を引数にもつ関数を作ったとする。 f <- function(data, var, new_var) { # NSE処理 var <- rlang::enquo(var) new_var <- rlang::enquo(new_var) # varを2倍した新しい変数 `new_var` を作る .d …

ggplotでNSE処理

ggplotで変数を柔軟に変更できるような自作関数を作りたくなったら、やはりNSE処理が必要になる。例えば、あるデータフレームを使用して、そのデータフレーム中の2つの変数を指定し、散布図を描きたいとしよう。 ggplot(data = iris) + geom_point(aes(x = S…

patchworkについて

group_nest して map で ggplot を作ったあと、そのfigsをまとめて1つのfigにしたいときがある。 そういうときに patchwork::wrap_plots が便利。 例えばこんなコード。 pacman::p_load(tidyverse) d_plot <- iris %>% group_nest(Species) %>% mutate( figu…

NSE処理について

R NSE

引数に データフレーム と データフレーム中の変数 を指定可能な自作関数を作りたいときがある。 例えば、 iris %>% select(Sepal.Length) という超簡単な処理を Sepal.Length 以外の変数でも使えるように、この処理を関数化してみよう。直感的にはこんな風…

blogdownについて

Rmarkdownでブログ書きたい Rstudioで色々慣れてしまったので、技術ブログの管理もRstudioでやりたい。もっというと、 Rmarkdown で書きたい。blogdown はそういうコンセプトのライブラリらしい。 こんな感じでやればええんとちゃうか。 git hubでリモートリ…

バージョン管理について(pins・renv)

バージョン管理って大切なんですね。チームで動くときは特に。 バージョン管理したいのは、パっと思いつくものだと、 - Rそのもの - ライブラリ - スクリプト - 元データ これらのバージョンを管理しておけば、 - 過去のある時点の結果を再現 - 引継ぎの後任…

Performanceについて

Assessment of Regression Models Performance • performance glmやglmerのR2、多重共線性、正規性、過分散、ゼロ過剰を確認する (easystats) - Qiita

Apache Arrowについて

【R】Apache Arrowとduckdbを試してみる - Qiita Apache Spark 3.0でサポートされるRのI/Oのベクトル化 - Qiita Apache Arrowの現状確認(2018年7月) - Technically, technophobic.

行方向で集計したいとき

R

行方向で集計したいとき、例えば総和を求めたいとき、いつもrowwiseとかc_acrossとかの書き方を忘れる。イライラ! `mutate(rowMeans())` や `mutate(rowSums())` で十分 dplyr.tidyverse.org

特定の文字の前後で分割したいとき

str_split_fixed(data$分割したい列, '分割の目印となる文字列', n = 分割後の列数)

欠損値の削除方法について

NAをすべて置き換えたいとき data[is.na(data)] <- 置き換えたいもの

回帰診断について

線形回帰モデルを組んだ時はちゃんと回帰診断して、誤差に関する複数の仮定が妥当かをチェックせなあかんで、という話。 www.goodnalife.com http://www.aoni.waseda.jp/abek/document/regression-3.html www.qualtrics.com

gitについて

git

gitむずすぎワロタなんだが。リモートの全ブランチをローカルに落としたいときは、 git fetch -- all git pull --all でええらしい。しかし、git branchでみてみても、リモートのブランチがローカルで確認できない。git branch -rだと確認できる。よくわから…

接触するポリゴンを1つのポリゴンとしてまとめるとき

R GIS

gisをしていると、接触するポリゴンを1つのポリゴンとしてまとめたいときがある。sfパッケージでできるのだが、どうも思ったようにはいまのところ動かないときがある。 例えば、geom_sfで可視化したときに、接触していないようなポリゴンが接触したと判定さ…

japanmeshでメッシュポリゴンをsf形式に変換

R GIS

japanmeshはjpmeshより何かと処理速度が速くて助かる。mesh_codeさえわかれば、それをポリゴンにしてsf形式のtibbleにすることもできる。こんな感じ。 japanmeshがなくなってjpgridになったver (data with meshcode) %>% mutate( geometry = map( .x = mesh_…

tidymodelsのprep, juice, bakeの必要性

R

tidymodelsでなんでわざわざprepとかjuiceとかbakeせなあかんのよくわからんかった。同じ疑問を持つ人もいるようだ。 https://community.rstudio.com/t/are-prep-bake-and-juice-needed-to-train-evaluate-a-model/84916 workflowつかうなら別にいらんくね?…

GoodNotesで書籍を読み込むとき

書籍のpdfをGoodNotesに読み込む方法をいつも忘れるのでメモ。 iTunes起動→iPad接続→ライブラリ→ミュージックの横のiPadボタン→ファイル共有→GoodNotes→読み込みたいpdfをドラッグアンドドロップ 以上

glmnetで説明変数の上限を超えたとき

glmnetでは説明変数の個数に上限があるらしい。300個以上の説明変数をつかったモデルを組んだら、こんなエラーがでた。 Error: protect(): protection stack overflow同じことについて質問している人がいた。 https://stackoverflow.com/questions/32826906/…