機略戦記

Maneuver warfare

Rで、指定したdata.tableの全てのカラム名にprefixを付けたい。

R

結論 table <- data.table(a=1,b=2,c=3) prefix <- 'hoge' old_names <- names(table) new_names <- paste(prefix, old_names, sep='.') setnames(table, old_names, new_names) これで、 処理前にnames(table) #=> "a" "b" "c"だったカラム名が、 names(tab…

RのR6パッケージを使ってクラスを作るとき、クラスメソッドとかスタティックメソッドみたいな物を定義したい。

R

背景 R6パッケージで作ったこんなクラスに対して、クラスメソッドとかスタティックメソッドみたいな物を付けたい。 クラスメソッドとスタティックメソッドは違うものだけど、とにかくクラスをインスタンス化しなくても使えるメソッドを付けたい。 # ある証券…

RでrandomForest()を実行した時、 Are you sure you want to do regression?と警告される。

R

前提 logical型の目的変数をrandomForest() (randomForestパッケージの)で予測したい。 regressionでは無くclassificationがしたい訳だが、以下の警告がでる。 > nikkei225.rf <- randomForest(is_up~., data=train.rf, mtry = 184) 警告メッセージ: randomF…

Rで長時間かかる処理が終わった時に音声で知らせて欲しい。

R

結論 # 長時間かかる処理 system("say 'done.'") 説明 system()でシェルコマンドが実行できるので、sayなどで音をだす。

importance(randomForest)の結果をdata.table (もしくはdata.frame)で得たい

R

前提 RのrandomForestパッケージにあるimportance()関数を使うと、学習した各種特徴量が目的変数の説明にどのくらい寄与しているのか得られる。 この時、この結果は、特徴量をrownameとするMatrixとして得られる。これをV1を特徴量の名前、V2を寄与度とするd…

Rで畳み込みがやりたい(Haskellで言うfoldとかrubyで言うinjectみたいなやつ)

R

結論 Reduce()を使うっぽい。 Reduce(function(x, y){ x + y }, c(1,1,1,1,1) ) [1] 5 > Reduce(function(x, y){ x * y }, c(1,2,3,4,5) ) [1] 120

御社ァ!!

$ ruby -e '7.times.map{|_| ["御社","貴社"].sample + ["アァァ", "アァ", "ァ", ""].sample + ["...", "!?", "!", "!!", ""].sample }.each_slice(3){|shout| puts "「#{shout.join([" 」\n「",""].sample)}」" }' 実行例 「貴社!?御社...貴社ァ!?」 「貴…

コマンドの実行結果をファイルに出力しながら標準出力にも表示したい

結論 (なんらかのなにか) | tee output.txt これで、output.txtに実行結果が書き込まれつつ、画面にも表示される。

NYSOLシリーズのRubyMで超高速にcsvを扱いたい

MCMDで有名なNYSOLプロジェクトがこのようなライブラリを出してる。 RubyM rubyでcsvを高速に扱うためのライブラリで、公式Webサイトによれば、標準のCSVやFasterCSVなどと比較して桁違いに早いらしい。 インストールに結構手間取ったので作業メモを残してお…

異なるディレクトリに入った同名のファイルを1箇所にまとめたい

異なるディレクトリに入った同名のファイルを1箇所にまとめたい。 ファイル名が同一なので、何かユニークな名前に変える必要がある。 結論 for i in `find . | grep .gz` do before=$i after=`echo $before | sed 's/\.\///g' | sed 's/\//_/g'` `cp $before…

例えば`find .`の結果に対して繰り返し同じ処理を適用したい

あるコマンドの実行結果として得られたすべての行に対して別の処理を行いたい。 例えばfind .の結果に対して繰り返し同じ処理を適用したい。 結論 for line in `find .` ; do ; echo $line ; done 解説 find .の結果が変数$lineに格納される。 echo $lineがf…

Twitter APIを制限目一杯まで実行したい

結論 あるAPIを残り何回叩けるか、いつ制限がリセットされるかなどの情報を取得できるTwitter APIがあるので、そいつから取得した情報を元に制限一杯まで実行すれば良い。 このAPI: GET application/rate_limit_status | Twitter Developersdev.twitter.com …

SSHが切断されてもリモートでコマンドを実行し続けるやつなんだっけ

結論 $nohup コマンド

twitter gemで、screen_nameではなくuser_idを指定してfollower_idsを取得したい

結論 client.follower_ids(user_id: SURVEY_USER_ID).to_a ちなみにscreen_nameで指定する場合はこう client.follower_ids(SURVEY_USER_SCREEN_NAME).to_a 説明 ここを読んだら分かった。 twitter/friends_and_followers.rb at b299925d22d9ccf75c50328cea34…

twitter APIをrubyから実行したい

結論 twitter gem使おう sferik/twittergithub.com 補足 twitter gemを使うのにあたって、各種認証情報が必要だ。 認証情報を得るにはTwitterAppを作る必要がある(ようだ)。 tiwtterAppを作るには、地震のtwitterアカウントに電話番号を登録しておく必要があ…

twitterのscreen nameからuser_idを調べる

TwitterのユーザーIDを調べるwebサービスsyncer.jp

Macで`du --max-depth=1`が使えない気がする

結論 du -d 1でOK

RでH2O failed to start, stopping execution.が発生した

R

結論 Java SEをバージョンアップしたら解消した。 説明 java -versionでバージョンが確認できる。 ╰─$ java -version java version "1.6.0_65" Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609) Java HotSpot(TM) 64-Bit Server VM (build…

カンマ区切りの1行のデータを複数行の形式に変換したい

sh

結論 $ echo 'a,b,c' | tr ',' '\n' a b c 説明 trで置換する。

はじめてTokyoR勉強会に参加した

R

あらすじ kaggle初挑戦: タイタニック乗客のプロフィールから生存率をランダムフォレストで予測してみた - 時系列のフリーランチshinya131-note.hatenablog.jp 先週の日曜日にRをインストールして、Kaggleをやり始めた。 大変おもしろいのでもっと勉強する事…

install.packages('dplyr')でpackage ‘dplyr’ is not availableと言われた

R

環境 RStudio + R Mac OS 結論 Rのバージョン古かった。アップデートしたら成功した。 説明 dplyrという便利そうなパッケージを知ったのでさっそくインストール。 以下のようになってインストール出来ない。 > install.packages("dplyr") Warning in install…

ワイルドカードで指定したExcelで作ったS-JISのCSVを全部UTF8に変換したい

結論 for f in *.csv ; do ;cat $f | iconv -f CP932 > $f.utf8 ; rm $f ; mv $f.utf8 $f ; done 説明 シェルでワイルドカードで指定したファイル全てに対して特定の処理をしたい - 時系列のフリーランチshinya131-note.hatenablog.jp Excelで作成されたSJIS…

シェルでワイルドカードで指定したファイル全てに対して特定の処理をしたい

結論 for f in *.csv ; do ; (ここお好きな処理を書く。$fにファイル名が入っている) ; done 説明 イテレーターみたいなやつ

Excelで作成されたSJISのCSVをシェルで扱いたい。というかUTF-8に変換したい。

sh

結論 cat from_excel.csv | iconv -f CP932 -t UTF-8 説明 iconvで文字コード変える Excelが使っている文字コードは厳密にはS-JISではなくてCP932

データを可視化して傾向や特徴を知ったり仮説を発見したりしたい

R

前回までのあらすじ kaggle初挑戦: タイタニック乗客のプロフィールから生存率をランダムフォレストで予測してみた - 時系列のフリーランチshinya131-note.hatenablog.jp Rインストール kaggleチュートリアル課題やった 困っていること 与えられたデータがど…

kaggle初挑戦: タイタニック乗客のプロフィールから生存率をランダムフォレストで予測してみた

この記事はなに? kaggleというデータサイエンスのコンテストサイトにある、「タイタニック乗客の生存予測」というチュートリアル課題をやってみた記録です。 Rのインストールから初めて、3160チーム中1639位くらいまで行きました。(満足いかねぇ!) Kaggle…

コマンドラインでExcelのvlookupみたいな事したい。mコマンド使ったら出来た。

結論 mコマンドのmjoin使うのが良さそう mjoin k=Ticket m=ticket_duplicate_count_table i=train.csv 説明 i=で指定したファイルに、列を追加している。 結合のキーはk=で指定したカラム データソースはm=で指定したカラム このような操作をコマンドライン…

awkである列の値を重複する件数を付けて表示したい

awk

結論 cat train_plus_test.csv | awk -F, '{table[$10]=table[$10]+1} END{for (i in table) { print i, table[i] } }' | sort 説明 uniq -cみたいな事したい。 連想配列に集計したい値をkey、出現回数をvalueにして格納していく。

awkで指定した行のみを出力する。たとえば1行目以外を出力する

awk

結論 cat test.csv | awk -F',' 'FNR > 1 {print $0}' 1行目以外を出力する 説明 NFRに処理行数が入っているので、それをパターンに使ってフィルターする。 例えば、csvファイルのヘッダーだけ無視したい時とかに使える

awkでcsvに強引に一列追加する

awk

結論 cat test.csv | awk -F',' 'BEGIN{OFS=","} {$1=$1"," ; print $0}' 解説 一列目と二列目の間に列を追加したい。 一列目を「一列目に,を加えたもの」で上書きして出力している。 OFSに,を指定して出力をcsvにする