cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

🍭knitrでSQLの実行結果を出力する際はengine.optsを指定する

Rによるレポート作成で用いられる{knitr}パッケージでは、RだけでなくbashPythonSASと言った多様な言語の実行を可能にしている。RMarkdownのチャンクとして呼び出すわけだけど、MySQLをエンジンにした場合にちょっと躓いた(これをやる機会はなかなかないだろうけど、今日の私には必要だったのだ...)。

{r, engine='mysql'}
use mysql;
show tables;
# ERROR 1045 (28000): Access denied for user 'uri'@'localhost' (using password: NO)
# Calls: <Anonymous> ... process_group.block -> call_block -> block_exec -> in_dir -> engine
# In addition: Warning message:
# running command ''mysql'  -e 'use mysql;

いや、そもそもデータベースに接続できないよ!って怒られる。というわけでこのチャンクの前に

{r, engine='bash'}
mysql --user=root --password=pass

をしても、正常に出力されない...。困ったナ、となって調べてみたら解決策が見つかった。チャンクオプションのengine.optsに接続に必要なbashスクリプトを記述しておけば良い。

{r, engine = 'mysql', engine.opts = "mysql --user=root --password=pass"}
use mysql;
show tables;

exit
続きを読む

⭐️PDFの情報・文章をRでごっそり取得する

便利なRパッケージを見つけたのでメモがてら紹介しておきます。以前、Rを使ってPDF上のテキストを取得するパッケージとして{tm}パッケージを紹介しましたが、同様の機能をもった{pdftools}は以下の特徴があります。

  1. PDFがもつ各種の情報やテキストを取得できる
  2. 日本語も問題なし
  3. PDFがロックされている場合、パスワードで開ける
  4. PDFを画像として出力できる

開発者はrOpenSciの一員でもあるJeroen Oomsです。

github.com

uribo.hatenablog.com

{tm}パッケージでは日本語が含まれるPDFを扱う際にはちょっとした工夫が必要でしたが、{pdftools}では日本語の出力も問題なく行うことができてちょっと感動しました。機能としてPDFの情報を得る、ということとPDFを画像として出力する、というものがあります。

🔰 使用例

続きを読む

🌱Google Cloud Vision API で生物の同定は可能?

機械学習ベースで画像認識・分類を行うGoogle Cloud Vision APIをR上で利用するコードをdichikaさんが書いてくれたので、それを使って手持ちの写真からいろいろな分類群の生物(主に植物)を同定することが可能なのかを検証してみたい

d.hatena.ne.jp

  • 🌿 植物編
  • 🐄 植物以外の分類群編
    • 🐝 昆虫綱
    • 🍄 菌類
    • 🐟 魚類
    • 🐓 鳥類
    • 🐶 哺乳類
  • 👻 擬態編
  • 🍵 所感

🌿 植物編

まずは簡単そうなものから。

f:id:u_ribo:20090814164226j:plain

画像は基本的にFlickrにアップロードしたものを表示しているが、実際に使ったのはすべてローカルにあるファイル。あと、出力した結果を見やすくするために{formattable}を使って、ちょっと手を加えた。

library(magrittr)
library(formattable)
library(jsonlite)
library(dplyr)
getResult("watermelon.jpg", "LABEL_DETECTION") %>% 
    content(as = "text") %>% fromJSON() %$% 
    responses$labelAnnotations
description score
💮watermelon 0.94329876
produce 0.78450352
melon 0.78298116
flower 0.77830565
food 0.76912522
dish 0.74153781
fruit 0.67084348
vegetable 0.61176038
ingredient 0.56144458

お、すごい。正解。低スコアの候補にdishとかingredientがあるのも面白い。

続いてはこちら。イチョウの写真。

続きを読む