Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Rで学ぶデータマイニング
第8章~第13章
2014/3/29(土)TokyoR #37
@Prunus1350
自己紹介
• ぷるうぬす
• 職業:SASエンジニア
• 確率・統計、機械学習、数学とか勉強中
• 「はじめてのパターン認識」読書会を主催
• Twitter : @Prunus1350
• prunusはラテン語で「桜」という意味
• 気軽に...
新しいテキスト
• Rで学ぶデータマイニングⅠ データ解析編
http://www.amazon.co.jp/dp/4274067467
Rで学ぶデータマイニング
• 第1章 Rのインストール
• 第2章 Rの起動
• 第3章 Rの終了
• 第4章 簡単な計算方法
• 第5章 R用エディタと本文の記載方法について
• 第6章 パッケージの呼び出しとインストール
• 第7章 関数の...
Rで学ぶデータマイニング
• 第1章 Rのインストール
• 第2章 Rの起動
• 第3章 Rの終了
• 第4章 簡単な計算方法
• 第5章 R用エディタと本文の記載方法について
• 第6章 パッケージの呼び出しとインストール
• 第7章 関数の...
第8章
演算子・条件分岐・繰り返し
8.1
比較演算子・論理演算子
8.1 比較演算子・論理演算子
• Rには値どうしの大小比較や論理演算を行うための演算子が用意され
ています。
演算子 意味
<= ≦
< <
>= ≧
> >
== 等しい
!= 等しくない
& かつ
| または
8.1 比較演算子・論理演算子
• 使用例
> x <- 2
> x <= 3 # 「xが3以下」か
[1] TRUE
> (0 < x) & (x < 1) # 「xが0より大きい」かつ「xが1より小さい」か
[1] FALSE
8.1 比較演算子・論理演算子
• 値どうしを比較する場合(ベクトルのような複数の値が入った変数ど
うしではない場合)は、& や | の代わりに && や || を使うことができる。
> x <- 2
> (0 < x) && (x < 1) ...
8.1 比較演算子・論理演算子
• ベクトルのような複数の値が入った変数を比較するときに && や || を
使うと、先頭の値のみを比較した結果しか返ってこないので要注意。
> x <- c(T, F, T); y <- c(F, T, T) ...
8.2
条件分岐:if
8.2 条件分岐:if
• ある条件で場合分けをして処理を行いたいときには、if文を使います。
• 使用例
> x <- -1
> if (x > 0) {x <- -x} # 関数abs()と同じ処理
> x # xの値を確認
[1] 1
>...
8.2 条件分岐:if
• if文を使った関数の例
> f <- function(x){
+ if (x < 0) {x <- -x} # 関数abs()と同じ処理
+ return(x) # xの値を返す
+ }
> f(-1)
[1] 1
8.3
繰り返し:for
8.3 繰り返し:for
• 同じような処理を繰り返し行いたいときには、for文を使うことができ
ます。(処理が遅いので、使いどころには要注意)
> x <- 0
> for (i in 1:5) {x <- x + 1} # xに5回だけ1を...
8.3 繰り返し:for
• for文を使った関数の例
> f <- function(x){
+ for (i in 1:5) {x <- x + 1} # xに5回だけ1を足す
+ return(x) # xの値を返す
+ }
> f(0)...
第9章
ベクトル
9.1
ベクトルの作成
9.1 ベクトルの作成
• 複数の値を一つの変数に代入するときには、関数 c( ) を使います。
> (x <- c(4, 5, 6))
[1] 4 5 6
> (y <- c(4:6)) # 演算子「:」を使って等差数列を得る
[1] 4 5...
9.2
ベクトル用の関数
9.2 ベクトル用の関数
• 関数をベクトルに適用すれば、各要素ごとに関数が適用されて結果が
得られます。
> x <- c(4, 5, 6)
> sqrt(x)
[1] 2.000000 2.236068 2.449490
9.2 ベクトル用の関数
• ベクトルに対する関数も用意されています。
> length(x) # ベクトルの要素の個数を調べる関数
[1] 3
9.2 ベクトル用の関数
• Rには値どうしの大小比較や論理演算を行うための演算子が用意され
ています。
関数 意味
sum() 総和
mean() 平均
var() 不偏分散
median() 中央値
cor() 相関係数
max() 最大値...
9.2 ベクトル用の関数
• 標準誤差を求める関数の作成例
> se <- function(x){
+ return(sd(x) / sqrt(length(x))) # 標準誤差を求める
+ }
> se(c(1, 3, 3, 3, 3, ...
9.3
ベクトル要素の取り出し
9.3 ベクトル要素の取り出し
• ベクトルの要素には頭から順に 1 , 2, 3 … と番号が振られており、その
番号を指定することで、特定の要素を取り出すことができます。
> x <- c(4, 5, 6)
> x[3] # ベクトルxの3...
9.3 ベクトル要素の取り出し
• ベクトルの要素の取り出し方法
コマンド 機能
x[k] k番目の要素を取り出す
x[k] <- a k番目の要素をaに変更する
x[正整数ベクトル] いくつかの要素をまとめて取り出す
x[条件式] 条件に合致...
9.3 ベクトル要素の取り出し
• 2つのベクトルを結合する例
> x <- c(1, 2)
> y <- c(4, 8)
> c(x, y) # 関数append(x, y)でも可
[1] 1 2 4 8
第10章
種々のベクトル
10.1
論理型ベクトル
10.1 論理型ベクトル
• 論理値(TRUE, FALSE)を要素とするベクトルを論理型ベクトルと呼
びます。
> c(T, F, T)
[1] TRUE FALSE TRUE
> c(T, F, T) | c(T, F, F) # or
[...
10.2
文字型ベクトル
10.2 文字型ベクトル
• 文字列を要素とするベクトルを文字型ベクトルと呼びます。
> (x <- c(“A”, “B”, “C”))
[1] “A” “B” “C”
> x > “b” # 辞書式順序による大小関係の比較
[1] FALSE...
10.2 文字型ベクトル
• 関数 paste( ) で文字どうしを結合することができます。
> paste(“May I”, “help you ?”)
[1] “May I help you ?”
10.3
因子型ベクトル
10.3 因子型ベクトル
• 関数 factor( ) を使用することで、カテゴリーを要素とした因子型ベク
トルを作成することができます。
> x <- rep(c(“S”, “M”, “L”), 3)
> (fc <- factor(x)) ...
10.3 因子型ベクトル
• 明示的に要素の順序を指定するときには、関数 factor( ) の引数levelsに
順序を指定します。
> x <- rep(c(“S”, “M”, “L”), 3)
> (fc <- factor(x, lev...
10.3 因子型ベクトル
• 説明文
> x <- rep(c(“S”, “M”, “L”), 3)
> fc <- orderd(x, levels = c(“S”, “M”, “L”))
> str(fc) # オブジェクトの要約値を表示
...
10.4
型の検査・型の変換
10.4 型の検査・型の変換
• データの型を調べたり変換したりするときには、下記の関数を使いま
す。
型 検査関数 変換関数
実数 is.numeric() as.numeric()
整数 is.integer() as.integer()
...
第11章
行列
11.1
行列の作成
11.1 行列の作成
• Rでは下記の手順で行列を作成します。
• 行列作成の例
> matrix(1:4, nrow = 2, ncol = 2)
[,1] [,2]
[1,] 1 3
[2,] 2 4
1. 行列の要素をベクトルで用意する
...
11.1 行列の作成
• 関数 matrix( ) の引数byrowをTrueにした方が、入力と作成される行列の
見た目が同じになるのでお勧めです。
> matrix(c(1, 2,
3, 4), nrow = 2, byrow = T)
[,...
11.2
行列の計算
11.2 行列の計算
• 行列どうしの演算を行うことができます。
> A <- matrix(1:4, 2, 2)
> B <- matrix(0:3, 2, 2)
> AA <- A + B – A %*% B # 行列の和・差・積
> BB...
11.2 行列の計算
• Rには行列操作を行う関数が多数用意されています。
コマンド 機能
chol(X) 正値対称行列Xのコレスキー分解を行う
det(X) 行列Xの行列式を求める
diag(3) 3×3の単位行列を作成する
eigen(X)...
11.2 行列の計算
• 関数 t( ) を使った行列転置の例
> (A <- matrix(1:4, 2, 2))
[,1] [,2]
[1,] 1 3
[2,] 2 4
> t(A)
[,1] [,2]
[1,] 1 2
[2,] 3 4
11.3
行列要素の取り出し
11.3 行列要素の取り出し
• 行は上から順に1, 2, 3… と、列は左から順に1, 2, 3… と番号が振られて
おり、その番号を指定することで特定の要素を取り出すことができま
す。
> (A <- matrix(5:8, 2, 2))
...
第12章
欠損値 NA
12 欠損値 NA
• Rには「欠測・何もない」ということを表す NA が用意されています。
> (x <- c(1, 2, NA, 4, 5))
[1] 1 2 NA 4 5
> x == NA # これではどの要素が NA であるか調べるこ...
12 欠損値 NA
• NA値の検査を行う関数として、関数 is.na( ) があります。
> x <- c(1, 2, NA, 4, 5)
> is.na(x)
[1] FALSE FALSE TRUE FALSE FALSE
12 欠損値 NA
• 例えば関数 sum などでは、引数ベクトルの中に1つでも NA が含まれる
と結果がうまく返ってきません。
> x <- c(1, 2, NA, 4, 5)
> sum(x)
[1] NA
> (y <- x[!is.n...
第13章
作業ディレクトリの変更
13 作業ディレクトリの変更
• ファイルからデータやプログラムを読み込んだり、ファイルにデータ
を書き出したりする場所を作業ディレクトリと呼びます。
• 作業ディレクトリを変更したり、場所を確認するには下記のようにし
ます。
> setwd(...
Rで分からないことが出てきたら…
• 説明文
> help(sin) # 関数sin()に関するヘルプを見る(方法1)
> ?sin # 関数sin()に関するヘルプを見る(方法2)
> help.start() # html形式のヘルプ画面を...
Rで分からないことが出てきたら…
• 説明文
> help.search(“solve”) # “solve”という機能を持った関数
> apropos(“solve”) # “solve”という文字を持った関数
ご清聴ありがとうございました。
Upcoming SlideShare
Loading in …5
×

Rで学ぶデータマイニングI 第8章〜第13章

4,607 views

Published on

Rで学ぶデータマイニングI 第8章〜第13章

  1. 1. Rで学ぶデータマイニング 第8章~第13章 2014/3/29(土)TokyoR #37 @Prunus1350
  2. 2. 自己紹介 • ぷるうぬす • 職業:SASエンジニア • 確率・統計、機械学習、数学とか勉強中 • 「はじめてのパターン認識」読書会を主催 • Twitter : @Prunus1350 • prunusはラテン語で「桜」という意味 • 気軽に「ぷるさん」って呼ぶといいですよ。
  3. 3. 新しいテキスト • Rで学ぶデータマイニングⅠ データ解析編 http://www.amazon.co.jp/dp/4274067467
  4. 4. Rで学ぶデータマイニング • 第1章 Rのインストール • 第2章 Rの起動 • 第3章 Rの終了 • 第4章 簡単な計算方法 • 第5章 R用エディタと本文の記載方法について • 第6章 パッケージの呼び出しとインストール • 第7章 関数の使用方法と定義方法
  5. 5. Rで学ぶデータマイニング • 第1章 Rのインストール • 第2章 Rの起動 • 第3章 Rの終了 • 第4章 簡単な計算方法 • 第5章 R用エディタと本文の記載方法について • 第6章 パッケージの呼び出しとインストール • 第7章 関数の使用方法と定義方法 飛ばします!! @doradora09 さんの資料を見よう!
  6. 6. 第8章 演算子・条件分岐・繰り返し
  7. 7. 8.1 比較演算子・論理演算子
  8. 8. 8.1 比較演算子・論理演算子 • Rには値どうしの大小比較や論理演算を行うための演算子が用意され ています。 演算子 意味 <= ≦ < < >= ≧ > > == 等しい != 等しくない & かつ | または
  9. 9. 8.1 比較演算子・論理演算子 • 使用例 > x <- 2 > x <= 3 # 「xが3以下」か [1] TRUE > (0 < x) & (x < 1) # 「xが0より大きい」かつ「xが1より小さい」か [1] FALSE
  10. 10. 8.1 比較演算子・論理演算子 • 値どうしを比較する場合(ベクトルのような複数の値が入った変数ど うしではない場合)は、& や | の代わりに && や || を使うことができる。 > x <- 2 > (0 < x) && (x < 1) # 「xが0より大きい」かつ「xが1より小さい」か [1] FALSE > (0 < x) || (x < 1) # 「xが0より大きい」または「xが1より小さい」か [1] TRUE
  11. 11. 8.1 比較演算子・論理演算子 • ベクトルのような複数の値が入った変数を比較するときに && や || を 使うと、先頭の値のみを比較した結果しか返ってこないので要注意。 > x <- c(T, F, T); y <- c(F, T, T) ; z <- c(T, T, T) > x && y # 先頭の値しか比較されない [1] FALSE > x && z # 先頭の値しか比較されない [1] TRUE > x & y # 要素同士が比較される [1] FALSE FALSE FALSE
  12. 12. 8.2 条件分岐:if
  13. 13. 8.2 条件分岐:if • ある条件で場合分けをして処理を行いたいときには、if文を使います。 • 使用例 > x <- -1 > if (x > 0) {x <- -x} # 関数abs()と同じ処理 > x # xの値を確認 [1] 1 > if (条件式) {条件式が Ture ならば実行する式}
  14. 14. 8.2 条件分岐:if • if文を使った関数の例 > f <- function(x){ + if (x < 0) {x <- -x} # 関数abs()と同じ処理 + return(x) # xの値を返す + } > f(-1) [1] 1
  15. 15. 8.3 繰り返し:for
  16. 16. 8.3 繰り返し:for • 同じような処理を繰り返し行いたいときには、for文を使うことができ ます。(処理が遅いので、使いどころには要注意) > x <- 0 > for (i in 1:5) {x <- x + 1} # xに5回だけ1を足す > x [1]5
  17. 17. 8.3 繰り返し:for • for文を使った関数の例 > f <- function(x){ + for (i in 1:5) {x <- x + 1} # xに5回だけ1を足す + return(x) # xの値を返す + } > f(0) [1] 5
  18. 18. 第9章 ベクトル
  19. 19. 9.1 ベクトルの作成
  20. 20. 9.1 ベクトルの作成 • 複数の値を一つの変数に代入するときには、関数 c( ) を使います。 > (x <- c(4, 5, 6)) [1] 4 5 6 > (y <- c(4:6)) # 演算子「:」を使って等差数列を得る [1] 4 5 6
  21. 21. 9.2 ベクトル用の関数
  22. 22. 9.2 ベクトル用の関数 • 関数をベクトルに適用すれば、各要素ごとに関数が適用されて結果が 得られます。 > x <- c(4, 5, 6) > sqrt(x) [1] 2.000000 2.236068 2.449490
  23. 23. 9.2 ベクトル用の関数 • ベクトルに対する関数も用意されています。 > length(x) # ベクトルの要素の個数を調べる関数 [1] 3
  24. 24. 9.2 ベクトル用の関数 • Rには値どうしの大小比較や論理演算を行うための演算子が用意され ています。 関数 意味 sum() 総和 mean() 平均 var() 不偏分散 median() 中央値 cor() 相関係数 max() 最大値 min() 最小値 prod() 総積 cumsum() 累積和 sd() 標準偏差 関数 意味 sort() 昇順整列 rev() 要素を逆順 pmax() 並列最大値 pmin() 並列最小値 range() 範囲 match() 引数のマッチング diff() 前進差分 rank() 整列した各要素の順位 order() 整列した各要素の元の位置
  25. 25. 9.2 ベクトル用の関数 • 標準誤差を求める関数の作成例 > se <- function(x){ + return(sd(x) / sqrt(length(x))) # 標準誤差を求める + } > se(c(1, 3, 3, 3, 3, 5, 5, 5)) [1] 0.5
  26. 26. 9.3 ベクトル要素の取り出し
  27. 27. 9.3 ベクトル要素の取り出し • ベクトルの要素には頭から順に 1 , 2, 3 … と番号が振られており、その 番号を指定することで、特定の要素を取り出すことができます。 > x <- c(4, 5, 6) > x[3] # ベクトルxの3番目の要素を取り出す [1] 6 > x[x>=5] # ベクトルxの要素のうち、値が5以上の要素を取り出す [1] 5 6
  28. 28. 9.3 ベクトル要素の取り出し • ベクトルの要素の取り出し方法 コマンド 機能 x[k] k番目の要素を取り出す x[k] <- a k番目の要素をaに変更する x[正整数ベクトル] いくつかの要素をまとめて取り出す x[条件式] 条件に合致した要素を取り出す c(x, y) ベクトルxの後ろにベクトルyを結合する
  29. 29. 9.3 ベクトル要素の取り出し • 2つのベクトルを結合する例 > x <- c(1, 2) > y <- c(4, 8) > c(x, y) # 関数append(x, y)でも可 [1] 1 2 4 8
  30. 30. 第10章 種々のベクトル
  31. 31. 10.1 論理型ベクトル
  32. 32. 10.1 論理型ベクトル • 論理値(TRUE, FALSE)を要素とするベクトルを論理型ベクトルと呼 びます。 > c(T, F, T) [1] TRUE FALSE TRUE > c(T, F, T) | c(T, F, F) # or [1] TRUE FALSE TRUE > !c(T, F, T) # not [1] FALSE TRUE FALSE > xor(c(T, F, T), c(T, F, F)) # xor(排他的論理和) [1] FALSE FALSE TRUE
  33. 33. 10.2 文字型ベクトル
  34. 34. 10.2 文字型ベクトル • 文字列を要素とするベクトルを文字型ベクトルと呼びます。 > (x <- c(“A”, “B”, “C”)) [1] “A” “B” “C” > x > “b” # 辞書式順序による大小関係の比較 [1] FALSE TRUE TRUE
  35. 35. 10.2 文字型ベクトル • 関数 paste( ) で文字どうしを結合することができます。 > paste(“May I”, “help you ?”) [1] “May I help you ?”
  36. 36. 10.3 因子型ベクトル
  37. 37. 10.3 因子型ベクトル • 関数 factor( ) を使用することで、カテゴリーを要素とした因子型ベク トルを作成することができます。 > x <- rep(c(“S”, “M”, “L”), 3) > (fc <- factor(x)) # 要素をグループ化 [1] S M L S M L S M L Levels: L M S > levels(fc) # グループ化されているか確認 [1] “L” “M” “S”
  38. 38. 10.3 因子型ベクトル • 明示的に要素の順序を指定するときには、関数 factor( ) の引数levelsに 順序を指定します。 > x <- rep(c(“S”, “M”, “L”), 3) > (fc <- factor(x, levels = c(“S”, “M”, “L”))) [1] S M L S M L S M L Levels: S M L
  39. 39. 10.3 因子型ベクトル • 説明文 > x <- rep(c(“S”, “M”, “L”), 3) > fc <- orderd(x, levels = c(“S”, “M”, “L”)) > str(fc) # オブジェクトの要約値を表示 Ord.factor w/ 3 levels: “S” < “M” < “L” : 1 2 3 1 2 3 1 2 3
  40. 40. 10.4 型の検査・型の変換
  41. 41. 10.4 型の検査・型の変換 • データの型を調べたり変換したりするときには、下記の関数を使いま す。 型 検査関数 変換関数 実数 is.numeric() as.numeric() 整数 is.integer() as.integer() 複素数 is.complex() as.complex() 文字列 is.character() as.character() 論理値 is.logical() as.logical()
  42. 42. 第11章 行列
  43. 43. 11.1 行列の作成
  44. 44. 11.1 行列の作成 • Rでは下記の手順で行列を作成します。 • 行列作成の例 > matrix(1:4, nrow = 2, ncol = 2) [,1] [,2] [1,] 1 3 [2,] 2 4 1. 行列の要素をベクトルで用意する 2. 関数 matrix(ベクトル, 行数, 列数) でベクトルから行列に変換する
  45. 45. 11.1 行列の作成 • 関数 matrix( ) の引数byrowをTrueにした方が、入力と作成される行列の 見た目が同じになるのでお勧めです。 > matrix(c(1, 2, 3, 4), nrow = 2, byrow = T) [,1] [,2] [1,] 1 2 [2,] 3 4
  46. 46. 11.2 行列の計算
  47. 47. 11.2 行列の計算 • 行列どうしの演算を行うことができます。 > A <- matrix(1:4, 2, 2) > B <- matrix(0:3, 2, 2) > AA <- A + B – A %*% B # 行列の和・差・積 > BB <- A * B # 要素ごとの掛け算
  48. 48. 11.2 行列の計算 • Rには行列操作を行う関数が多数用意されています。 コマンド 機能 chol(X) 正値対称行列Xのコレスキー分解を行う det(X) 行列Xの行列式を求める diag(3) 3×3の単位行列を作成する eigen(X) 行列Xの固有値と固有ベクトルを求める ginv(X) 行列Xのムーア・ペンローズ型一般化逆行列を求める (library(MASS)を読み込む必要あり) matrix(0,nrow=2,ncol=3) 2行3列のゼロ行列を作成する qr(X) 行列XのQR分解を行う solve(X) 行列Xの逆行列を求める svd(X) 行列Xの特異値分解を行う t(X) 行列Xを転置する
  49. 49. 11.2 行列の計算 • 関数 t( ) を使った行列転置の例 > (A <- matrix(1:4, 2, 2)) [,1] [,2] [1,] 1 3 [2,] 2 4 > t(A) [,1] [,2] [1,] 1 2 [2,] 3 4
  50. 50. 11.3 行列要素の取り出し
  51. 51. 11.3 行列要素の取り出し • 行は上から順に1, 2, 3… と、列は左から順に1, 2, 3… と番号が振られて おり、その番号を指定することで特定の要素を取り出すことができま す。 > (A <- matrix(5:8, 2, 2)) [,1] [,2] [1,] 5 7 [2,] 6 8 > A[1, 2] # 行列A の 1行 2列目 の要素を取り出す [1] 7 > A[1, ] # 行列A の 1行目 の要素を取り出す [1] 5 7
  52. 52. 第12章 欠損値 NA
  53. 53. 12 欠損値 NA • Rには「欠測・何もない」ということを表す NA が用意されています。 > (x <- c(1, 2, NA, 4, 5)) [1] 1 2 NA 4 5 > x == NA # これではどの要素が NA であるか調べることができない [1] NA NA NA NA NA
  54. 54. 12 欠損値 NA • NA値の検査を行う関数として、関数 is.na( ) があります。 > x <- c(1, 2, NA, 4, 5) > is.na(x) [1] FALSE FALSE TRUE FALSE FALSE
  55. 55. 12 欠損値 NA • 例えば関数 sum などでは、引数ベクトルの中に1つでも NA が含まれる と結果がうまく返ってきません。 > x <- c(1, 2, NA, 4, 5) > sum(x) [1] NA > (y <- x[!is.na(x)]) # NA 以外のものを y に代入 [1] 1 2 4 5 > sum(y) [1] 12
  56. 56. 第13章 作業ディレクトリの変更
  57. 57. 13 作業ディレクトリの変更 • ファイルからデータやプログラムを読み込んだり、ファイルにデータ を書き出したりする場所を作業ディレクトリと呼びます。 • 作業ディレクトリを変更したり、場所を確認するには下記のようにし ます。 > setwd(“c:/usr”) # 作業ディレクトリを変更する > getwd() # 現在の作業ディレクトリを確認する [1] “c:/usr”
  58. 58. Rで分からないことが出てきたら… • 説明文 > help(sin) # 関数sin()に関するヘルプを見る(方法1) > ?sin # 関数sin()に関するヘルプを見る(方法2) > help.start() # html形式のヘルプ画面を表示
  59. 59. Rで分からないことが出てきたら… • 説明文 > help.search(“solve”) # “solve”という機能を持った関数 > apropos(“solve”) # “solve”という文字を持った関数
  60. 60. ご清聴ありがとうございました。

×