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

Excelでランダムフォレスト(Random Forest)したっていいじゃないか、にんげんだもの

R F#

この記事はマルチポストなアドベントカレンダー記事なんだ、すまない諸君 この記事は R Advent Calendar 2013 : ATNDの27日目の記事で、26日目は@berobero11氏で「RStanで『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた」でした…

2次元PLOT(散布図)に等高線を重ねる

R

plotした後に、contour関数をadd=TRUEとして使えばOK。contour関数に食わせるデータはouter関数で作るヨロシ。 x <- seq(-4, 4, 0.1) y <- x z <- outer(x, y, function(x,y){exp(-0.5*(x^2+y^2))}) plot(rnorm(200), rnorm(200), xlim=c(-4, 4), ylim=c(-4,…

問い合わせ先(環境)を変更する方法について

R

とりあえず試行錯誤メモって感じで。やりたい事は関数h内のxの値をf内から変更するって話。 x <- 1:3 g <- function() { f <- function(){x <<- 10} h(f) } h <- function(f) { x <- 1 print(x) f() print(x) } これを実行すると > g() [1] 1 [1] 1 > x [1] …

symnum関数で「適当な区間の数値⇔対応する文字」みたいな処理を書く

R

symnum関数について、http://www.okada.jp.org/RWiki/?%C3%CE%A4%C3%A4%C6%A4%A4%A4%EB%A4%C8%A4%A4%A4%C4%A4%AB%CC%F2%A4%CB%CE%A9%A4%C4%28%3F%29%B4%D8%BF%F4%C3%A3#i1187283にちょいとだけ日本語情報があるだけで、その他の日本語情報が全くなかったので…

noquote関数でその名の通り引用符(")がなくなる

R

掲題の件、そういうことです。 組み込まれてるアルファベット文字一覧(letters変数)でテスト。 > letters [1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j" "k" "l" "m" "n" "o" "p" "q" "r" "s" "t" "u" "v" "w" "x" "y" "z" > noquote(letters) [1] a b c d e…

"数値"を名前に持つベクトルを楽に作れるsetNames関数

R

setNames関数というのがありまして、"names"属性を持つオブジェクトに対して名前付初期化をするのに便利です。 > setNames( 1:3, c("foo", "bar", "baz") ) foo bar baz 1 2 3 > # 以下のコードと同じ > tmp <- 1:3 > names(tmp) <- c("foo", "bar", "baz") …

R Type Providerで回帰分析

R F#

F#上でRを使って回帰するにはどうしたらええんじゃい?ってのを簡易メモ。 実行前に#rつかってRProvider & RDotNetにリファレンス張る必要がある。流れとしては リファレンス張って〜 回帰(R.lm)して〜 結果(R.summary)表示 って感じ。最後のsummaryの結果は…

string → floatの変換

F#

こんなんでいいのかな? Double.tryParse使おうとおもったけど、綺麗な書き方が思いつかなかったので取り急ぎ。 > open System;; > let f x = - match x with - | "" -> 0.0 - | _ -> Double.Parse(x);; val f : x:string -> float > f "3.23";; val it : fl…

俺が思ってたんと違う挙動の遅延評価

R

ある程度コードを抽象化しようと言う時に「関数を返す関数」を使うのは良いアイディアだと思うのですが、以下のように書くとハマれるってのでメモ。 ここでは「異なるパラメーター(1〜3)を持つ3つの関数を生成し、それぞれに対して実際の計算を行うものの…期…

ベクトルの範囲を計算するrange関数(ベクトルの最大・最小値を同時に出力)

R

max・minを別々に適用するよりも楽にベクトルの最大・最小を同時に出力するrange関数がある。 これはグラフのXY軸の範囲(xlim, ylim)を指定する際に便利。よく忘れるのでメモ。 > range(c(4,1,3,6,4,10,3,6)) [1] 1 10 > min(c(4,1,3,6,4,10,3,6)) [1] 1 > m…

オプション値を変更して、警告を止めて戻して

R

suppressMessages関数で止まらなった気がするので、こんな感じで書いておいた。 warn.value <- as.numeric(options("warn")) options(warn = -1) #何かの処理 #...... options(warn = warn.value) オプションの値の変更法のメモも兼ねる。

変数のスコープがよくわからない

とりあえずハマった例だけメモっておく。 (for|リスト内包表記)内だけの変数…とはならない i = 0 for j in range(10): a = [x + i for i, x in enumerate([1,2,3,4,5])] print i これ、0になると思って実行したら 4となって、あばばばばばとなった。 〜追記〜…

SABR(Stochastic Alpha Beta Rho) modelのキャリブレーションアプリをShinyで作る

たまには金融っぽいものを作ろうと思いまして、SABRモデルのキャリブレーションアプリを作りまして*1。 実際の物はShiny hosting service上で動いており、以下のLINK先にあります。 http://spark.rstudio.com/teramonagi/SABROnShiny/ 左側のパラメーター(Fo…

ダブル・ディスパッチを書いてみる

C++

意識しないで使ってそうだが、ダブル・ディスパッチ~ 典型的なオブジェクト指向プログラミング・イディオム ~にあるダブル・ディスパチをC++でメモっておく。 これは要するにif-else or switch的な処理で書いてしまいそうな所を、あるメソッド数呼び出しの…

boxplotのY軸のレンジを制御する

matplotlibのboxplotを使う際のY軸の制御はylim関数でOKだった。 以下の例では、Y軸の範囲を[-1, 2]として、適当な数値(0〜1の乱数10個)をboxplotで表示させてる。 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt #適当なデ…

scikit-learnでサポートベクトル回帰、及びそのパラメーター推計 with クロスバリデーションやってみる

サポートベクトル回帰(Support Vector Regression, SVR)の理論が大体脳内整理出来たので、実践もしたいぞと、そしてちょいとpythonを使う別件があるので、慣れの意味も込めてR言語ではなくpythonとその機械学習ライブラリであるscikit-learnを使ってやるぞと…

ライブラリをロードする際のメッセージを抑制する

R

R言語を使ってライブラリを読み込むとわちゃわちゃと色々情報を吐いてくれるわけです。 例えばRFinanceYJパッケージの場合 > library(RFinanceYJ) 要求されたパッケージ XML をロード中です 要求されたパッケージ xts をロード中です 要求されたパッケージ z…

パッケージが既にインストール済みか判定し、未インストールの場合実際にインストールする

R

【緩募】コンソールからR CMD INSTALL パッケージ名するときに、そのパッケージが既にインストール済みかを判定してくれて、未インストールの場合のみ実際にインストール処理が走る方法ご存じの方いらっしゃったら教えて下さい<(_ _)>— WADA Kazuya (@wdkz) …

雑多メモ

物忘れがひどいので、少なくとも自分がよく使う奴だけでも。 主にnumpyに絡む操作なので import numpy as np は既に実行した上での記述で書く。 slice関数:配列を扱うためのインデックスを抽象的に表現 例えば以下のように書くと1から無限(None指定)まで2お…

Boostのlibファイルのリンクは自動で行われている

C++

Boost C++ Library プログラミングより unit_test、python以外のビルドが必要であったライブラリ(regex、thread、filesystemなど)は、Boostのヘッダ側で自動リンク設定がなされています。これらは、ヘッダを#includeすると自動でリンクの設定が行われるた…

vector中の特定の条件を満たす要素のインデックスだけを抽出

C++

vector中の特定の条件を満たす要素だけを抽出 - My Life as a Mock Quantで要素自身を抜いていたけど、 これが大きいオブジェクトだったらコピーコストが凄い事にと思うと夜も眠れないので、インデックスだけ抜くようにした…ら…ば…結構めんどい書き方になっ…

vector中の特定の条件を満たす要素だけを抽出

C++

まだC++03な私にはcopy_ifなんてないので、remove_copy_ifを使って代用。 すごく…めんどいです… #include<iostream> #include<vector> #include<algorithm> #include <functional> int main() { //テストデータ std::vector<int> x,y; x.push_back(1); x.push_back(3); x.push_back(4); x.push_back(5); x.p</int></functional></algorithm></vector></iostream>…

長さを決め打ちしたリスト(list)の初期化

R

sapply使ったこれが一番楽そう。 > #3個のlistを初期化 > x <- sapply(1:3, function(y){numeric(0)}) > x[[2]] <- lm(speed~dist,data=cars) > x [[1]] numeric(0) [[2]] Call: lm(formula = speed ~ dist, data = cars) Coefficients: (Intercept) dist 8.…

中括弧{}でスコープを絞る事ができるんですか、そうですか

C++

マジで最近まで知らなかった。 #include<iostream> int main() { { int x = 0; } std::cout << x << std::endl; return 0; } ↑というコードは error C2065: 'x' : 定義されていない識別子ですと怒られる。↓なら当然OK。 #include<iostream> int main() { int x; { x = 10; } std:</iostream></iostream>…

スマートポインタ(shared_ptr)に対する共変(covariant)戻り型のメモ

C++

頭出し 共変(covariant)戻り値について。 これを知らないと、たとえばオブジェクトのコピーを作成するcloneメソッドは以下のように書いてしまうわけですが、 これやっちゃうと、clone後、処理によってはいちいち基底型をdynamic_castして、NULLチェックして…

R markdown(knitr)パッケージのchunk optionまとめ

R

R markdownファイル(Rmd)にRのコード片(以下、chunk)を埋め込む際のオプションがたくさんあって覚えきれないから、よく使いそうなものだけでもまとめておきたい。ここで言うchunkってのはR markdownファイル中に記述することが出来る ```{r eval=FALSE, er…

SFINAE(Substitution Failure Is Not An Error)のメモ

C++

関数のオーバーロードを使用する際に、うまくコンパイルできないケースをエラーとするのではなく、オーバーロードの対象から自ずと外してしまうという技法((技法というよりもコンパイラとしてこのような動作となるか否かって話っぽい))。以下の例の場合はte…

CIRモデルで金利の期間構造 by shiny

金融工学でいうCIRモデルで表現される金利の期間構造の、モデルパラメーター依存性を見てみたくて、簡単なwebアプリケーションを作ってみた。CIRモデルについてはリンク先を見て頂くとして、shinyについて簡単に捕捉しておくと、 R言語を用いて簡単にwebアプ…

CRTP(Curiously Recurring Template Pattern)を使ってCloneable(Deep copy)を楽に書く方法を考えていた

C++

問題 オブジェクトの深いコピーを作る時は、コピーコンストラクタを内部で呼び出してnewするようなclone関数を作成するのがセオリーだと思い、以下のように書くわけです。 #include <iostream> //適当なクラス class Hoge { public: Hoge* clone(){return new Hoge(*th</iostream>…

zclipはfileプロトコルではなくhttpプロトコルでないと動かない

jQueryを使ったjavascript用クリップボードコピペプラグインzclipはfileプロトコルではなくhttpプロトコルでないと動かない、つまり作成したhtmlファイルを単にブラウザにドラッグ&ドロップしてもだめで、サーバーにアップロードしてhttpプロトコルを使って…