2017年10月7日土曜日

Cognitive Class R101(無料!)を受講してみた。

R言語入門編がオンライン学べる「R101」コースを受講してみました。
当コース含めて、全て無料で受講できちゃいます!!


実施環境については、以下の通りです。

・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136  ※実際は不要ですが、あったほうが楽です。

※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。



そもそも「Cognitive Class」ってなに?


IBMが主導するビックデータに関するオンライン上の学習コミュニティです。
しつこいですが、全部、「無料」ですっ!
インターネットが繋がるパソコン環境をお持ちであれば使えます。なお、パソコンのスペックは高くなくても大丈夫です(OS問わず)。


早速使ってみよう!


以下、簡単に手順含めてご紹介します。

1.Cognitive Classにサインイン
まずは、下記リンクからアクセスし、画面右上の「Sign in」からサインインをおこなってください。
Cognitive Class - Free Data Science and Cognitive Computing Courses

2.受講希望コースを選択する
サインイン後、コース一覧が表示されますので、お好きなコースを選択してください。
今回は、「R101」を選択します。


3.学習スタート!
画面上部にある「Start the Free Course」を押して学習を始めてください。



なお、各コースには、シラバスが用意されているので、どのような学習コンテンツになっているのかすぐに確認できます。「ちょっと、自分が求めている内容とは違うな」と思ったら他のコースも確認してみてください。

ご参考までに、「R101」のシラバスを掲載します。

COURSE SYLLABUS
Module 1 - R basics
Math, Variables, and Strings
Vectors and Factors
Vector operations

Module 2 - Data structures in R
Arrays & Matrices
Lists
Dataframes

Module 3 - R programming fundamentals
Conditions and loops
Functions in R
Objects and Classes
Debugging

Module 4 - Working with data in R
Reading CSV and Excel Files
Reading text files
Writing and saving data objects to file in R

Module 5 - Strings and Dates in R
String operations in R
Regular Expressions
Dates in R

おさえておきたい「合格のコツ」


R101に限らず、各クラスにはテストが設定されており、基準点以下だと不合格となってしまいます。合格すれば証明書やバッチがもらえるので、テスト以外の学習パート含めてしっかりと学び取るコツが重要になります。

(合格のコツ1)Google Chromeを使用する
Cognitive Classは全部英語です。各モジュールで表示されるテストや動画のキャプションも全て英語のため、英語が苦手な方はハードルが高いと感じられるかもしれません。
Google Chromeはページ翻訳や動画と同期を取って表示される英語キャプションも翻訳してくれます。

(合格のコツ2)モジュール別テストはじっくり真剣に答える
各クラスには、「モジュール別」(時間無制限)テストと「最終テスト(1時間制限)」の2種類があり、それぞれの合計点が基準に達していれば合格となります。
そのため、「モジュール別」テストはじっくり真剣に答え、確実に得点をゲットすることが重要となります。

(合格のコツ3)クラスに合わせた実行環境を整備しておく
クラスの内容にもよるのですが、コードを走らせる必要のある場合は、その実行環境を準備しておいた方が確実に回答できるので、面倒でもインストールなどしておきましょう。
R101クラスの場合は、「Rstudio」をインストールするか、Web上で「Rstudio」が無料で使える「Data Scientist Workbench 」を申し込んでおくといいと思います。


最後に、テストの基準に達すると、こんな証明書を発行してもらえます♪

https://courses.cognitiveclass.ai/certificates/3692e71984464638a139933b00b50d27

なお、この「Cognitive Class R101」の修了ですが、IBMが発行する「Data Science Foundations - Level 2」バッチ取得の条件にもなっています。
R言語は他のコンピューター言語と比べ、データフレームなどの考え方が若干特殊なので早いうちに取り組まれた方が宜しいかと思います。


2017年9月9日土曜日

MacのSublime text3で書いたJavaScriptが文字化けた話(UTF-8なのに。。)

表題そのままです。
最近、お仕事でデジタルマーケティング界隈のアレをホニャララするようになってきまして、齢40手前にしてJavaScriptを勉強なうです。

まずは、開発環境だと思い、MacにSublime text3をインストールし、参考書のJavaScriptを写経していました。
そのコードを試しにブラウザで開いてみると・・・全く同じコードなのに文字化ける?UTF-8で保存しているのに。。



唸りながら色々と調べていたら「UTF-8 with BOM」で保存する必要性に気づいたわけです。
以下、参考にしたURLを順に記載してきます。

※注意:
MacのSublime text3だと、最初、「Sublime text3」→「Preference」→「基本設定-標準」で開いても設定ファイルが編集できないようです。
一旦、開いた設定ファイルをcmd+Sで保存してから開き直すと「false→true」のパラメータ変更などが可能になりました。


SublimeTextの設定まとめ
http://blog.seeds-std.co.jp/entry/1871.html

Sublime Text 3 のステータスバーに文字コードを表示する方法 (ついでに改行コードも)
https://beadored.com/sublime-text-3-character_code/

UTF-8のBOMにはまった話
http://qiita.com/MuriNishimori/items/a89fe986e28909208e30

上記をリファーしてSublime text3の設定を変更しましたら、「ファイル」→「エンコードを指定して上書き保存」→「UTF-8 with BOM」で保存してください。

(JavaScript)基礎用語をコソっと書き留めた。

備忘録代わりにJavaScriptの基礎をキソっと・・・コソっと書いておきます。
今後、適宜、追記しようかと思います。

■基本用語

項目内容
CSSWebページのデザインやレイアウトを決める為に使われるファイルで、別名「スタイルシート」という。
セレクタHTML文書中の要素。
プロパティセレクタに記載された色やフォントなどの属性。
JavaScriptにおける処理の単位。文末には「;」(セミコロン)をつける。

・スタイルシートの記述例
body{
    background-color: #FFFFFF;
}
セレクタ プロパティ 


■オブジェクトについて

項目内容
オブジェクトプロパティとメソッドをまとめたもの。オブジェクト内には「プロパティ」と「メソッド」の「メンバ」がある。
プロパティオブジェクトによってまとめられたデータ。
メソッドオブジェクトによってまとめられた機能。

オブジェクトの記述の仕方
・プロパティの場合
 オブジェクト.プロパティ
・メソッドの場合
 オブジェクト.メソッド

とりあえず、まずは、これぐらいで。

2017年9月2日土曜日

Mac環境でのSublime Text3を用いたJava Script環境づくり

齢40手前にして、お仕事でJava Scriptを使う必要性が出てきました。
まずは、開発環境を整えたいので、下記サイトを参照しながら整備しましたです。

実施環境については、以下の通りです。


・MacBook Air:CPU:1.6GHz,Memory 8GB
・macOS Sierra ver10.12.3
・Sublime Text3 Build 3126


参照サイトと実施内容


Sublime Text - パッケージのインストール
https://webkaru.net/dev/sublime-text-package-install/
→Mac環境におけるSublime Text3のインストール方法が記載されています。

<Sublime Text3でのパッケージインストール>
 ・Command + Shift + P
     ↓
 ・Package Controlのフォームに「install」と入力
     ↓
 ・インストールしたいパッケージ名の一部を入力
     ↓
 ・returnキーを押す
     ↓
 ・ウインドウ下部のメニューバーにインストール完了のメッセージが表示される


Sublime Text3 のインストール直後に行った設定メモ
http://tomoyamkung.net/2014/03/06/sublimetext3-install/
→表題の通りです。「IMESupport 」「Vintageous」以外を入力し、フォントサイズを変更しました。

とりあえず、動きましたっ!


2017年8月29日火曜日

R言語:「stringr」パッケージでレビューデータの加工が簡単(その3)

ほんとに小ネタなのですが、原因気づくのに時間がかかったので備忘録がわりに。
過去、何回かに分けて宿泊レビューのテキストマイニングの前処理を色々やっておりました。

R言語:「stringr」パッケージでレビューデータの加工が簡単。
http://sapporomkt.blogspot.jp/2017/08/rstringr.html

R言語:「stringr」パッケージでレビューデータの加工が簡単(その2)
http://sapporomkt.blogspot.jp/2017/08/rstringr2.html


今回、テキストマイニングで集計したデータ(品詞の頻度など)と、性別や年代といった属性データを掛け合わせた分析するため、後者の分布状況などをヒストグラムなどで確認しようと思ったところ凡ミスしたのでご紹介です。

実施環境については、以下の通りです。

・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136


ソースコードのご紹介


わかったら何のこともない凡ミスだったのですが、ソースコードは以下です。
データの読み込みプロセスなどは以前のエントリーをご参照ください。

# 宿泊者の満足度(CS)が入っている「rank」でヒストグラムを・・・できません。
hist(hotel2.dat[,"rank"])
 hist.default(hotel2.dat[, "purpose1"]) でエラー:
   'x' は数値でなければなりません


# 各変数のクラスをザラーっと調べてみます。
# 「rank」がcharacter型になっていますね。numeric型じゃなきゃ、ダメだこりゃ。
sapply(hotel2.dat,class)
          rank           user          time1   com_sentence       purpose1
   "character"    "character"    "character"    "character"    "character"
      purpose2       purpose3          time2 reply_sentence          plan1
   "character"    "character"    "character"    "character"    "character"
         plan2      user_name            age            sex            flg
   "character"    "character"    "character"    "character"      "logical"

# rankをnumeric型に変換して元のデータセットに上書きします。
hotel2.dat$rank <- as.numeric(hotel2.dat$rank)

# 念のためチェックします。「rank」がnumeric型になっていますね。
sapply(hotel2.dat,class)
          rank           user          time1   com_sentence       purpose1
     "numeric"    "character"    "character"    "character"    "character"
      purpose2       purpose3          time2 reply_sentence          plan1
   "character"    "character"    "character"    "character"    "character"
         plan2      user_name            age            sex            flg
   "character"    "character"    "character"    "character"      "logical"

# 再度、ヒストグラムにトライです。colには他の色も適用可能です。colors() で色々出てきます。
hist(hotel2.dat[,"rank"], col ="aliceblue")


# せっかくなのでクロス集計もしてみます。
hotel2.crs <- xtabs(~purpose2+sex, data=hotel2.dat)
hotel2.crs

         sex
purpose2   女性 男性
              1    1
  その他      1    1
  一人        6   12
  家族       58   77
  仕事仲間    1    0
  友達        8    6
  恋人        4    7

# 有用性はアレですが、モザイクプロットでも。
# どうてもいいですが、表頭と表側が入れ替わるんですね。
mosaicplot(hotel2.crs)


以上です。

R関連エントリー


R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

2017年8月24日木曜日

新宿アカシアが羽田空港第2ターミナルにもあった!〜ロールキャベツの名店

先日、羽田空港第2ターミナルに行ったのですが、そこで新宿にあるロールキャベツの名店「アカシア」を発見しましたっ!


場所は、第2ターミナルマーケットプレイスの4階でエスカレーターを上がった右手すぐのところにあります。若干、目立ちにくいですが、この日もほぼ満席でした。


メニューは店内にもありますが、本店とお値段はほぼ変わらずでした。
空港の食事は高いものが多いのでありがたいですね。


自分は、もちろん、ロールキャベツ!
味やボリュームも本店と変わらずお値打ちです!


嫁さんはポークカツ。初めて食べたのですが、くどくなくて美味しかったです。


出発・到着前後でお時間のある方には、是非ともオススメしたいお店です。

R言語:「stringr」パッケージでレビューデータの加工が簡単。

レビューデータのテキストマイニングがしたくて、データ加工プロセスのお勉強なうです。
「stringr」パッケージが使いやすいと評判だったので、今更ながら書いてみました。

実施環境については、以下の通りです。

・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136


思ってたよりも簡単だったソースコードのご紹介


実施前は難しいかなと思っていましたが、やってみたら意外と簡単でした。

# パッケージの読み込み。
# 「xlsx」形式の読み込みは他にもパッケージがありますが、Javaの導入など面倒が増えるので、このパッケージがオススメです。ただし、「xls」形式は読めません。
library(openxlsx)
library(dplyr)

# データの読み込み
setwd("~/blog/hotel_170819_TM")
hotel.dat <- read.xlsx("170819_hotel.xlsx")

# カラム名を表示します。不要なカラムもたくさん含まれています。
colnames(hotel.dat)
 [1] "url"            "rank"           "com_title"    
 [4] "com_title_link" "user"           "time1"        
 [7] "com_sentence"   "flg1"           "flg1_link"    
[10] "flg2"           "flg2_link"      "flg3"         
[13] "flg3_link"      "purpose1"       "purpose2"     
[16] "purpose3"       "time2"          "reply_sentence"
[19] "plan1"          "plan2_link"     "plan2"

# 分析データをattachします。「hotel.dat$hoge」と入力せずに、hogeで狙ったカラムにアクセスできます。
attach(hotel.dat)

# 分析に必要なカラムだけ抜き出します。見た目はわかりづらいですが、「dplyr」パッケージのおかげです。
hotel2.dat <- select(hotel.dat,rank,user,time1,com_sentence,purpose1,purpose2,purpose3,time2,reply_sentence,plan1,plan2)

# データ内容を確認してみます。
View(hotel2.dat)

今回用いたデータセットでは、user列に、「ユーザー名・年代・性別」データが同一カラムに入っていました。年代・性別は分析に有用なので別カラムに切り出したいです。

小田一弥さん [30代/男性]

user_nameagesex
小田一弥さん30代男性

「おっと、正規表現だな・・・」と思われたあなた、大丈夫です。
自分も不慣れですが、今回はとっても簡単です。

# パッケージを読み込みます。最初は「for」で繰り返し処理を書こうと思ったのですが、こちらの方がずっとシンプルで早いそうです。
library(stringr)

# userの名前と年代・性別を分離
hotel2.dat$user_name <- str_extract(hotel2.dat$user,"^.*さん")
hotel2.dat$age <- str_extract(hotel2.dat$user,"\\d{2}代")
hotel2.dat$sex <- str_extract(hotel2.dat$user,".性")

 View関数で見ると下記のようになります。


# パッケージを読み込みます。
library(rpivotTable)
# グラフ化します
rpivotTable(hotel2.dat)


以上です。

R関連エントリー


R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

2017年8月20日日曜日

R言語:グラフィカルなクロス集計が簡単!〜「rpivotTable」パッケージ

以前、当ブログで紹介したことがあるのですが、Rでグラフィカルなクロス集計が可能な「rpivotTable」パッケージがいつの間にか進化していたので改めて触れてみます。

例えばこんなのがGUIで出来ちゃいます

実施環境については、以下の通りです。

・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136


パッケージ呼び出し後は、全部GUIで出来ちゃいます


分析対象データの読み込みが終わっていれば、下記3行のコードだけでグラフ作成画面が表示されます。
CRANからインストール出来るのでとてもラクですね。

install.packages("rpivotTable")
library(rpivotTable)
rpivotTable(hotel.dat)

下記は、某旅行サイトに記載されたユーザーレビューからRate:満足度ランキング(5が最高)、sex:レビュー記載者の性別、age:年代を抽出したデータです。
これの変数名がついたボタンはドラッグ&ドロップが可能で、3重クロスも難なく出来ちゃいます。

ちなみに、以前は日本語が表示出来なかったのですが、現バージョンでは問題なさそうですね。

<Table>

<Table Barchart>

 <Heatmap>

<Horizontal Bar Chart>

<Horizontal Stacked Bar Chart>

<Bar Chart>

<Line Chart>

<Area Chart>

グラフタイプは他にも数種類ありますので、ご興味ありましたらお試しください。

自分は、このデータをもとにテキストマイニングを行い、形態素解析後に集計されたTerm(ワード)と上記3つの属性を混ぜ混ぜして色んなことをやろうと思っています。
Rにはクロス集計用のパッケージがいくつかあるので、そちらを使ってもいいのですが、データの概観をとりあえず確認するときは「rpivotTable」パッケージが便利だと思います。

以上です。


R関連エントリー


R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。http://sapporomkt.blogspot.jp/2017/08/rstarwarsdplyrggplot2.html

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

2017年8月13日日曜日

コスパ最高!「フレンチ前菜食堂 ボン・グゥ 神楽坂」

2017年8月12日(土)、夏休みの東京観光を兼ねて、家族で神楽坂をブラブラしてきました。
途中で立ち寄った「フレンチ前菜食堂 ボン・グゥ 神楽坂」がコスパ最高だったのでご紹介します。

この日は、土曜日のお昼12時。ランチ時間帯にも重なり座れないかもと不安だったのですが、ラッキーにもテーブルが1つだけ空いていました。

こちらの2階。ちょっと気づきにくいかも。

このドアから2階に上がります。

「フレンチ」ということで子連れ(6歳の男の子)で心配だったのですが、店員さんも優しくて安心できました。お店の雰囲気全体もオシャレながら落ち着いた感じ。



この時はテーブルが1つだけ空いていましたが、10分後、階段まで待ち列が並んでいたので本当にラッキーでした。


メニューです。フレンチながらどれもリーズナブルで華族連れでも来れますね。
お得なお子様セットもありますし(この日はピザ)、ドリンクもリーズナブル。




前菜はランチメニューによって異なりますが、どちらもボリュームがあって美味しかったです。この他に冷製スープも付いてました。



メインディッシュ。上が「海老とトマトのアメリケーヌごはん」。ライスが無料で大盛りできるのも嬉しいですね。味はソースもしっかりと海老の風味が活きていて美味しかったです。

下は「タルトフランベ」。「ベーコンと淡路玉葱の黒胡椒風味」にしましたが、パリパリとした食感がする珍しいピザでした。個人的にはチーズが効きすぎたピザはあまり好きではないのですが、非熟成チーズを使っていることもあり食べやすくてまたオーダーしたくなる味でした。



嫁さんも息子も大満足で「また来たい!」と言ってくれたので大満足です。
おそらく並ぶことになると思いますが、絶対オススメのお店です。

お店情報
・店名:フレンチ前菜食堂 ボン・グゥ 神楽坂
・住所:〒162-0805 東京都新宿区矢来町107 細谷ビル
・電話:03-3268-0071
・URL:http://www.bon-gout.co/kagurazaka/

2017年8月6日日曜日

R言語:starwarsキャラの身長や年齢をdplyrで加工してggplot2する。

「dplyr」パッケージのヘルプを調べていたら「starwars」キャラクターの属性データセットなるものが組み込まれていたのでggplot2によるグラフ化までやってみました。

最終的には、こんなグラフを作ります。


実施環境については、以下の通りです。
・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136
・分析データ:こちらから各自調達してください


「starwars」データセットを「dplyr」でいじってみよう。


■そもそも「dplyr」ってなに?
「R界の神様」「羽鳥」こと、「Hadley Wickham」さんが作ったR環境におけるデータ加工(manipulation)パッケージです。

■実際の手順
「starwars」データセットの読み込み準備が出来た前提で記載します。

# イストール済みの下記パッケージをロードします。
library(dplyr)
library(ggplot2)

# 一応、データセットの中身を確認します。
View(starwars)

スターウォーズシリーズに登場した各キャラクターの属性情報が表示されます。
本当にどこまで合っているかは不明ですが(笑)、身長(height)や種族(species)などのカラムが遊べそうですね。


# 「filter」で「Human」に該当するレコードを抜き出して、dplyrのパイプで渡して「name」と「height」列だけ抜き出して、「arrange」で「height」を降順でソートします。
# 最後の「filter(complete.cases(.))」は「欠損値」レコードの除去です。ローグ1のキャラデータの身長データは欠損してたので。
human_height <- starwars %>%
filter(species == "Human") %>%
select(name,height) %>%
arrange(desc(height)) %>%
filter(complete.cases(.))

# 一旦、データ内容を確認します。
View(human_height)

欠損値を含むレコードを除いた各キャラクターの身長データが降順で表示されます。


最後に、ggplot2でグラフ化します。

# 「reorder」関数は降順ソートをかける役割なので、上記でソート済みなら不要です。
# coord_flip()はX軸とY軸を入れ替えます。これ便利っす。
p <- ggplot(human_height, aes(x=reorder(name,height), y=height)) +
geom_bar(stat = "identity", fill="grey") +
theme_bw(base_size = 10, base_family = "HiraKakuProN-W3") +
coord_flip()

p + geom_text(aes(label = height), size = 3, hjust = 0.5, vjust = 3, position = "stack")

これだけの処理で「スターウォーズに登場する人間キャラクターの身長順位」がフォースと共にあなたの手にっ!
「ダースベーダー」って2メートル以上あるんですね。


ちなみに、先ほどのコードの「Human」を「Droid」に差し替えると、一瞬で「ドロイドの身長グラフ」が出力可能です。
こういう部分がRの便利なところですねぇ。


 「birth_year」データも面白そうだったので、先ほどのコードを流用してみました。

birth_year.list <- starwars %>%
select(name,birth_year) %>%
arrange(desc(birth_year)) %>%
filter(complete.cases(.))

p <- ggplot(birth_year.list, aes(x=reorder(name,birth_year), y=birth_year)) +
geom_bar(stat = "identity", fill="grey") +
theme_bw(base_size = 10, base_family = "HiraKakuProN-W3") +
coord_flip()

p + geom_text(aes(label = birth_year), size = 3, hjust = 0.5, vjust = 3, position = "stack")

ヨーダ、896歳(笑)


以上です。

R関連エントリー


RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

2017年8月5日土曜日

R言語:Rでヘルプを調べる

こちらも地味ですが、R言語でヘルプを調べる際に、あまりしっかり覚えていなかったので備忘録として残しておきます。



■ヘルプの表示

?dplyr
help(dplyr)

上記コマンドのどちらかを入力すると、パッケージ名に該当する(青字部分:今回は「dplyr」パッケージ)ヘルプが表示されます。
自分はいつも後者だけでやってました・・・。














■ヘルプの表示

help(package = "dplyr")

上記コマンドを入力すると、パッケージ名に該当する情報が表示されます。


「DESCRIPTION file.」や「User guides, package vignettes and other documentation.」は1度目を通しておくといいでしょうね。


RSiteSearch("dplyr")

上記コマンドを入力すると、下記メッセージがコンソールに表示された直後にブラウザが起動します。


dplyrパッケージのインストールから利用方法も記載されたページが表示されました。
英語ですが、かなりわかりやすく記載されています。

http://dplyr.tidyverse.org/

以上です。

R関連エントリー


RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

R言語:インストール済み/ロード済みパッケージの表示

普段から「覚えよう、覚えよう」と思って都度忘れているので、備忘録代わりに残しておきます。



■インストール済みパッケージの表示

installed.packages()
 
上記コマンドを実行すると、現在、R環境にインストール済みのパッケージ一覧がズラーっと表示されます。我ながらこんなにインストしたのかとビックリしました。








■ロード済みパッケージの表示

(.packages())
   
上記コマンドを実行すると、現在、R環境にロード済みのパッケージ一覧が表示されます。
ちなみに、新たにパッケージをロードする場合は「library()」でしたね。







以上です。

R関連エントリー


「Rの検索関数」まとめ
http://sapporomkt.blogspot.jp/2017/07/r.html

RESASの不動産取引データでheatmapを作ってみた。
http://sapporomkt.blogspot.jp/2017/05/resasheatmap.html 

RESASデータを「IBM Data Scientist Workbench」でゴニョゴニョしてみた。
http://sapporomkt.blogspot.jp/2017/05/resasibm-data-scientist-workbench.html

ggplot2でクロス集計的に複数グラフをプロットする方法
http://sapporomkt.blogspot.jp/2016/11/ggplot2.html

R開発環境が無料で簡単導入!「Data Scientist Workbench」を使ってみた。

http://sapporomkt.blogspot.jp/2016/10/rdata-scientist-workbench.html

(Bluemix)知ってた?dashDBってTwitter分析にもツカエルのさ(+ちょっとだけコンサドーレ調べ)
http://sapporomkt.blogspot.jp/2016/07/bluemixdashdbtwitter.html

RMeCabで形容詞の形態素解析をやってみた。
http://sapporomkt.blogspot.jp/2016/07/rmecab.html

【R言語】今年は、leafletでマップをグリグリしたい。
http://sapporomkt.blogspot.jp/2016/01/rleaflet.html

(R言語)当ブログアクセス者の興味関心事をコレポン(コレスポンデンス)した。
http://sapporomkt.blogspot.jp/2015/12/r.htm

2017年8月4日金曜日

Watson AnalyticsとMeCabで「老人と海」を軽く可視化してみた。

趣味とお仕事のお勉強を兼ねて、形態素解析エンジンの「MeCab」を触っているのですが、「集計結果の可視化にWatsonAnalytics使えば楽かも?」と思って試したらその通りだったので軽くご紹介します。

最終的には、こんな可視化をします。


実施環境については、以下の通りです。
・MacBook Air(CPU:1.6GHz,Memory 8GB)
・macOS Sierra ver10.12.3
・RStudio ver 1.0.136
・分析データ:「青空文庫」よりヘミングウェイの「老人と海」の全文を取得

※本エントリーは、私、小田一弥が一個人として勉強を兼ねて記載したものです。私の勤務先である日本アイ・ビー・エム株式会社の見解・見識ではない、個人としての記載内容としてご覧ください。

まずは、MeCabで形態素解析。


まずは、形態素解析エンジンである「MeCab」を使って、頻度表を出力します。
環境構築がお済みではない方は下記をご参照ください。

RおよびRStudioのインストール方法(Mac/Windows)
http://qiita.com/daifuku_mochi2/items/ad0b398e6affd0688c97

RとLinuxと...
http://rmecab.jp/wiki/index.php?RMeCab



「形態素解析って難しそう・・・」と感じるかもしれませんが、以下のソースコードをRStudioコンソールにコピペするだけで出来ちゃいますのでご安心を。


# 読み込みファイルがあるディレクトリを指定します
# コード入力よりもRStudioメニューの「Session→Set Working Directory」の方が楽です。
setwd("~/blog/170722_roujin_MeCab/roujin")

# RMeCabパッケージを呼び出しておきます
library(RMeCab)

# 形態素解析を行い、タームと品詞別の頻度表を得ます。たったこれだけ!
roujin_count <- RMeCabFreq("roujintoumi.txt")

# RMeCabFreqで集計した結果を確認します。
View(roujin_count)


RStudio上に下記のようなビューワー形式で表示されます。
左から「Term(形態素)」「品詞分類1」「品詞分類2」「頻度数」となります。


一応、データ構造も確認してみますが、RStudio上でこのデータを可視化するには、ggplot2などを使ってゴニョゴニョするわけですが・・・うーん、ちょっと面倒臭いので楽したいですね。

今回は他のツールで可視化するために、一旦、RStudioから「roujin_count」データを出力します。

# str関数でデータ構造を確認します。
str(roujin_count)
'data.frame':    3214 obs. of  4 variables:
 $ Term : chr  "あの" "いかん" "いかんせん" "いくら" ...
 $ Info1: chr  "フィラー" "副詞" "副詞" "副詞" ...
 $ Info2: chr  "*" "一般" "一般" "一般" ...
 $ Freq : int  1 2 1 1 1 1 2 4 6 1 ...

# write.csv関数を使って集計データをCSV形式で出力します。
# 「quote=FALSE」は、データに引用符の「"」を付けないオプションです。
# 「row.names=FALSE」は、行番号を付けないオプションです。
# 「fileEncoding="CP932" 」は、「Shift-JIS」で出力するオプションとなります。

 write.csv(roujin_count,"roujin_count.csv",quote=FALSE,row.names=FALSE,fileEncoding = "CP932")



可視化は「Watson Analytics」にお任せ。


 ここからは、IBMが提供するクラウド上でビックデータ分析が可能な「Watson Analytics」を用います。

 なお、この時点では何となくはあるのですが、具体的に「こんな可視化をしよう」といったイメージ無しで作業を進めています。 事前にしっかりとしたアウトプットイメージを持ちながら作業を進めることは重要ですが、「とりあえずデータの概観を見たい」といった局面もあると思います。「Watson Analytics」には、データの特性を自動的に解析し、「もしかして、こんな風に見たいと思ってない?」といったオプションを先に提示してくれる機能が実装されています。

以下にその機能の一部と操作手順をご紹介します。
「Watson Analytics」の利用登録がお済みではない方は、下記URLからご登録ください(無料です)

IBM Watson Analytics
https://www.ibm.com/watson-analytics


1.まずは集計データのアップロード
「Watson Analytics」にログインしましたら、画面中央の「Add」ボタンから「Or add your data」→「Drop file or browse」を選択してください。


macOSだとFinder、Windowsだとexplorerが立ち上がりますので、読み込ませたい集計ファイル(この場合、「roujin_count」)を選択してください。


たったこれだけで「Watson Analytics」上に集計ファイルがアップロードされます。


2.可視化の実施
アップロードされた「DATA SET CSV」パネルをクリックすると、「Watson Analytics」が下記のようなオプションを自動提示します。

とりあえず、品詞分類1レベルで大まかなボリューム感を見たいので、一番右を選択します。


品詞別のボリューム感がわかるグラフが瞬時に表示されました。
同じ作家の異なる作品をこのグラフで出力して円の大きさを比較しても面白そうですね。


他の形式でも確認して見たいので、画面右側の「>」マークを押してください。
今後は「Watson Analytics」からオススメされた一番左のグラフを選択してみましょう。


先ほどと同じ「品詞分類1」のグラフが表示されました。X軸は「品詞分類1名称」、Y軸は「品詞分類1別の頻度」となります。
降順でソートしたいので、X軸ラベル「info」を右クリック→「Sort→Descending by value」を選択してください。


簡単に降順ソートができました。
せっかくなので、Term(形態素)別の頻度も見たいので、画面左下の「applied filter」 を選択してください。


「Add a filter」から「Freq」を選ぶと下限値と上限値を入力する欄が表示されるので、バーを動かすか値を直接入力してください。



 「Info1」の 部分をクリックし、「Term」を選択すると下記のように頻度数30以上の全Termが表示されます。


これでは分かりづらいので、もう一度「Add filter」を選択し、「Info1」で「名詞」をフィルターの追加条件として設定すると下記のような名詞頻度数のグラフが表示されます。
※Term数が多すぎたので、頻度の下限値を50に修正しています。


原作を読まれた方は「あー、なるほどね」な結果になったのではないでしょうか。
今回のご紹介は以上です。

このように「Watson Analytics」を用いると、通常の集計ファイルで必要な各変数の形式設定などせずに直ぐに可視化作業に移ることが可能です。
データサイズの大きいファイルでなければ、無料で使えますので、ご興味ありましたら是非お試しください。

Watson関連エントリー


Watson Explorerでディズニーの人気作品をテキストマイニング
http://sapporomkt.blogspot.jp/2017/04/watson-explorer.html

 Watson Explorer Content Analytics(WCA)の紹介動画を紹介したいんです。
http://sapporomkt.blogspot.jp/2017/03/watson-explorer-content-analyticswca.html

分析の常識が変わる?「Watson Analytics」すげー!!
http://sapporomkt.blogspot.jp/2016/01/watson-analytics.html 

「データ・ビジュアライゼーション」でも便利な「Watson Analytics」。
http://sapporomkt.blogspot.jp/2016/01/watson-analytics_13.html

 いま話題のIBM「Bluemix(ワトソンくん)」が「老人と海」をサマったら。
http://sapporomkt.blogspot.jp/2015/11/ibmbluemix.html

「Watson」先生に、AdSenseビンボーの理由を聞いてみた・・・
http://sapporomkt.blogspot.jp/2016/01/watsonadsense.html