資料探勘 Data Mining (2)

軟體基礎、資料的讀取

資料科學 Data Science 系列 (2)  -  資料探勘 (2)

姓名:羅左欣

日期:2016/5/30(一)

目錄 Contents

  1. 前情回顧:什麼是"資料探勘(Data Mining)"?
  2. 主題(1):軟體基礎
  3. 主題(2):資料的讀取
  4. 學習資源

資料科學 Data Science 系列 (2)  -  資料探勘 (2)

資料科學 Data Science 系列 (2)  -  資料探勘 (2)

1. 前情回顧

什麼是"資料探勘(Data Mining)"?

1. 前情回顧:什麼是"資料探勘(Data Mining)"?

它是"資料分析"技術裡的一個環節。

資料探勘 = 資料庫之知識發掘

(Knowledge Discovery in Databases,KDD)

亦可稱作

A. 數據挖掘

B. 資料挖掘

C. 資料採礦

目的:從大量的資料中提取"有價值的資訊"

資料探勘技術...

  • 知識發掘(Knowledge Discovery):由現有的資料中,得知一些我們不知道的事情
  • 假設檢定(Hypothesis Testing):嘗試去證實或舉反證來驗證預設的想法

分類

(Classification)

估計

(Estimation)

預測

(Predication)

關聯分析

(Association rule)

根據對象的屬性,分門別類加以定義。

根據現有屬性的資料,獲得新屬性未知的數值。

根據屬性之過去觀察值來推估該屬性未來之值。

從所有物件決定那些相關物件應該放在一起。

常見的技術:

集群

(Clustering)

將相關的資料聚集於各個群組之中,並分析群組間的差異。

1. 前情回顧:什麼是"資料探勘(Data Mining)"?

簡單來說,大致的流程就是:

1. 前情回顧:什麼是"資料探勘(Data Mining)"?

STEP1:收集資料

STEP2:處理資料

STEP3:輸出結果

訂立目標及問題之後,進行資料蒐集及前置處理。

使用適當的工具,進行資料分析。

觀察者從分析後的結果得知,資料代表的意義,並思考出目標及問題的處理方案。

複習完畢,接下來正式進入本次的主題...

資料科學 Data Science 系列 (2)  -  資料探勘 (2)

2. 軟體基礎

2. 軟體基礎

(1) 向量(Vectors)

本章要介紹的內容有:

以上名詞是在資料處理中,重要的概念。

(2) 因子(Factors)

(3) 陣列(Arrays)、矩陣(Matrices)

(4) 資料框(DataFrame)、列表(Lists)

2. 軟體基礎

基本算術運算

> 1 + 1
[1] 2
> 
> 1 + 2 + 3
[1] 6
> 
> 3 * 7 * 2
[1] 42
> 
> 4 / 2
[1] 2
> 
> 4 / 3
[1] 1.333333
> 
> 4 * 6 + 5
[1] 29
> 
> (4 * 6) + 5
[1] 29
> 
> 4 * (6 + 5)
[1] 44
> 
  • 運算次序:括號 > 指數 > 乘法 > 除法 > 加減法

2. 軟體基礎

物件的操作

> # 指派物件(可以使用"<-"或"="),建議使用"<-"
> x <- 2
> 
> x        # 顯示"x"的值
[1] 2
> 
> y = 5
> y        # 顯示"y"的值
[1] 5
> 
> 
> # 可以連續指派
> a <- b <- 7
> a
[1] 7
> b
[1] 7
> 
  • "指派"物件
> # 移除物件
> a    # 查看變數"a"
[1] 7
> 
> rm(a)    # 移除變數"a"
> 
> a        # 現在變數"a"被移除了,所以"a"不存在
錯誤: 找不到物件 'a'
> 
  • "移除"物件

2. 軟體基礎

(1) 向量(Vectors)

  1. "同型別"元素的集合(不能涵蓋不同型別的元素)
  2. 向量(Vectors)沒有維度(沒有"行(colume)"跟"列(row)")
  3. 最基礎的"物件(Objects)"
> # 把幾個元素結合在一起,形成 "向量(vectors)"
> x <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
> 
> # 顯示"x"的內容
> x
 [1]  1  2  3  4  5  6  7  8  9 10
> 

常見的"型別":邏輯(logical)、整數(integer)、數值(numeric)、複數(complex)、字元(character)

2. 軟體基礎

(1) 向量(Vectors)

  • 向量的運算(1)
> x <- c(1, 2, 3, 4, 5)    # 建立向量 "x"
> 
> x * 3     # 把每一個元素乘以 3
[1]  3  6  9 12 15
> 
> x + 2     # 把每一個元素都加上 2
[1] 3 4 5 6 7
> 
> x - 4     # 把每一個元素都扣掉 4
[1] -3 -2 -1  0  1
>  
> x / 10    # 把每一個元素都除以 10
[1] 0.1 0.2 0.3 0.4 0.5
> 
> x ^ 2     # 把每一個元素都平方
[1]  1  4  9 16 25
> 

2. 軟體基礎

(1) 向量(Vectors)

> # 使用 ":" 產生連續的數字
> 1:10
 [1]  1  2  3  4  5  6  7  8  9 10
> -5:4
 [1] -5 -4 -3 -2 -1  0  1  2  3  4
> 
> # 製造兩個相同長度的向量
> x <- 1:10
> y <- -5:4
> x + y    # 相加
 [1] -4 -2  0  2  4  6  8 10 12 14
> x - y    # 相減
 [1] 6 6 6 6 6 6 6 6 6 6
> x * y    # 相乘
 [1] -5 -8 -9 -8 -5  0  7 16 27 40
> x / y    # 相除
 [1] -0.2 -0.5 -1.0 -2.0 -5.0  Inf  7.0  4.0  3.0  2.5
> x ^ y    # 指數型態
 [1] 1.000000e+00 6.250000e-02 3.703704e-02 6.250000e-02 2.000000e-01 1.000000e+00
 [7] 7.000000e+00 6.400000e+01 7.290000e+02 1.000000e+04
  • 向量的運算(2)

2. 軟體基礎

(1) 向量(Vectors)

> x <- 1:10    # 建立一個1 ~ 10的向量
> 
> # 使用"mode()"來查看向量的型態
> mode(x)
[1] "numeric"
> 
> # 使用"length()"來查看向量的長度
> length(x)
[1] 10
> 

查看向量的型態和長度

> x <- 1:10    # 建立一個1 ~ 10的向量
>
> # 使用中括號"[]"查看特定元素
> x[1]
[1] 1
> 
> x[1:2]
[1] 1 2
> 
> x[c(1, 4)]   # 查看"第1個元素"和"第4個元素"的值
[1] 1 4
> 

用中括號查看向量裡的特定元素

  • 向量的處理

2. 軟體基礎

(2) 因子(Factors)

  1. 儲存"類別型態"的資料
  2. 具有"level"屬性
  3. 分為"無順序"或"有順序"的(在 R 中,預設是以"字母順序"排列levels;可使用ordered = TRUE,讓Factor變成"有序")

註:因子(Factors)像是"經過分級"後的向量(Vectors)

屬於「類別」資料的例子:

  • 性別:「男、女」
  • 地區:「台北、台中、台南、高雄」
  • 血型:「A、B、AB、O」
> x <- c(1, 2, 4, 3, 1, 2, 3, 4, 1)
> 
> factor(x)
[1] 1 2 4 3 1 2 3 4 1
Levels: 1 2 3 4
> 
>
> # 自訂 Level 的名稱。
> factor(x, labels = c("一", "二", "三", "四"))
[1] 一 二 四 三 一 二 三 四 一
Levels: 一 二 三 四
> 
> factor(x, ordered = TRUE)    # 進行排序
[1] 1 2 4 3 1 2 3 4 1
Levels: 1 < 2 < 3 < 4
> 

2. 軟體基礎

(3) 陣列(Array)、矩陣(Matrices)

陣列(Array)

矩陣(Matrices)

  • "同型別"元素的集合
  • 有"列(row)"、"行(colume)"
  • 一種"多維度"的向量(vectors)
  • "同型別"元素的集合
  • 有"列(row)"、"行(colume)"
  • 一種只有"二維"的向量(vectors)
> # 建立一個 2x3x2 的陣列
> theArray <- array(1:12, dim = c(2, 3, 2))
> theArray
, , 1

     [,1] [,2] [,3]
[1,]    1    3    5
[2,]    2    4    6

, , 2

     [,1] [,2] [,3]
[1,]    7    9   11
[2,]    8   10   12
> # 建立一個 3x4 的矩陣
> theMatrix <- matrix(1:12, 3, 4)
> theMatrix
     [,1] [,2] [,3] [,4]
[1,]    1    4    7   10
[2,]    2    5    8   11
[3,]    3    6    9   12
> 

2. 軟體基礎

(4) 資料框(DataFrame)、列表(Lists)

資料框(DataFrame)

列表(Lists)

  • 有"列(row)"、"行(colume)"
  • "行":代表"變數"
  • "列":代表"觀測值"
  • 能儲存任意物件
  • 可包含任何型別和長度的資料
> x <- list(iris = iris, cars = cars, n = 2)
> x
$iris
    Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1            5.1         3.5          1.4         0.2     setosa
2            4.9         3.0          1.4         0.2     setosa
3            4.7         3.2          1.3         0.2     setosa
4            4.6         3.1          1.5         0.2     setosa
5            5.0         3.6          1.4         0.2     setosa
6            5.4         3.9          1.7         0.4     setosa
7            4.6         3.4          1.4         0.3     setosa
8            5.0         3.4          1.5         0.2     setosa
9            4.4         2.9          1.4         0.2     setosa
10           4.9         3.1          1.5         0.1     setosa
11           5.4         3.7          1.5         0.2     setosa
12           4.8         3.4          1.6         0.2     setosa
13           4.8         3.0          1.4         0.1     setosa
14           4.3         3.0          1.1         0.1     setosa
15           5.8         4.0          1.2         0.2     setosa
16           5.7         4.4          1.5         0.4     setosa
17           5.4         3.9          1.3         0.4     setosa
18           5.1         3.5          1.4         0.3     setosa
19           5.7         3.8          1.7         0.3     setosa
20           5.1         3.8          1.5         0.3     setosa
21           5.4         3.4          1.7         0.2     setosa
22           5.1         3.7          1.5         0.4     setosa
23           4.6         3.6          1.0         0.2     setosa
24           5.1         3.3          1.7         0.5     setosa
25           4.8         3.4          1.9         0.2     setosa
26           5.0         3.0          1.6         0.2     setosa
27           5.0         3.4          1.6         0.4     setosa
28           5.2         3.5          1.5         0.2     setosa
29           5.2         3.4          1.4         0.2     setosa
30           4.7         3.2          1.6         0.2     setosa
31           4.8         3.1          1.6         0.2     setosa
32           5.4         3.4          1.5         0.4     setosa
33           5.2         4.1          1.5         0.1     setosa
34           5.5         4.2          1.4         0.2     setosa
35           4.9         3.1          1.5         0.2     setosa
36           5.0         3.2          1.2         0.2     setosa
37           5.5         3.5          1.3         0.2     setosa
38           4.9         3.6          1.4         0.1     setosa
39           4.4         3.0          1.3         0.2     setosa
40           5.1         3.4          1.5         0.2     setosa
41           5.0         3.5          1.3         0.3     setosa
42           4.5         2.3          1.3         0.3     setosa
43           4.4         3.2          1.3         0.2     setosa
44           5.0         3.5          1.6         0.6     setosa
45           5.1         3.8          1.9         0.4     setosa
46           4.8         3.0          1.4         0.3     setosa
47           5.1         3.8          1.6         0.2     setosa
48           4.6         3.2          1.4         0.2     setosa
49           5.3         3.7          1.5         0.2     setosa
50           5.0         3.3          1.4         0.2     setosa
51           7.0         3.2          4.7         1.4 versicolor
52           6.4         3.2          4.5         1.5 versicolor
53           6.9         3.1          4.9         1.5 versicolor
54           5.5         2.3          4.0         1.3 versicolor
55           6.5         2.8          4.6         1.5 versicolor
56           5.7         2.8          4.5         1.3 versicolor
57           6.3         3.3          4.7         1.6 versicolor
58           4.9         2.4          3.3         1.0 versicolor
59           6.6         2.9          4.6         1.3 versicolor
60           5.2         2.7          3.9         1.4 versicolor
61           5.0         2.0          3.5         1.0 versicolor
62           5.9         3.0          4.2         1.5 versicolor
63           6.0         2.2          4.0         1.0 versicolor
64           6.1         2.9          4.7         1.4 versicolor
65           5.6         2.9          3.6         1.3 versicolor
66           6.7         3.1          4.4         1.4 versicolor
67           5.6         3.0          4.5         1.5 versicolor
68           5.8         2.7          4.1         1.0 versicolor
69           6.2         2.2          4.5         1.5 versicolor
70           5.6         2.5          3.9         1.1 versicolor
71           5.9         3.2          4.8         1.8 versicolor
72           6.1         2.8          4.0         1.3 versicolor
73           6.3         2.5          4.9         1.5 versicolor
74           6.1         2.8          4.7         1.2 versicolor
75           6.4         2.9          4.3         1.3 versicolor
76           6.6         3.0          4.4         1.4 versicolor
77           6.8         2.8          4.8         1.4 versicolor
78           6.7         3.0          5.0         1.7 versicolor
79           6.0         2.9          4.5         1.5 versicolor
80           5.7         2.6          3.5         1.0 versicolor
81           5.5         2.4          3.8         1.1 versicolor
82           5.5         2.4          3.7         1.0 versicolor
83           5.8         2.7          3.9         1.2 versicolor
84           6.0         2.7          5.1         1.6 versicolor
85           5.4         3.0          4.5         1.5 versicolor
86           6.0         3.4          4.5         1.6 versicolor
87           6.7         3.1          4.7         1.5 versicolor
88           6.3         2.3          4.4         1.3 versicolor
89           5.6         3.0          4.1         1.3 versicolor
90           5.5         2.5          4.0         1.3 versicolor
91           5.5         2.6          4.4         1.2 versicolor
92           6.1         3.0          4.6         1.4 versicolor
93           5.8         2.6          4.0         1.2 versicolor
94           5.0         2.3          3.3         1.0 versicolor
95           5.6         2.7          4.2         1.3 versicolor
96           5.7         3.0          4.2         1.2 versicolor
97           5.7         2.9          4.2         1.3 versicolor
98           6.2         2.9          4.3         1.3 versicolor
99           5.1         2.5          3.0         1.1 versicolor
100          5.7         2.8          4.1         1.3 versicolor
101          6.3         3.3          6.0         2.5  virginica
102          5.8         2.7          5.1         1.9  virginica
103          7.1         3.0          5.9         2.1  virginica
104          6.3         2.9          5.6         1.8  virginica
105          6.5         3.0          5.8         2.2  virginica
106          7.6         3.0          6.6         2.1  virginica
107          4.9         2.5          4.5         1.7  virginica
108          7.3         2.9          6.3         1.8  virginica
109          6.7         2.5          5.8         1.8  virginica
110          7.2         3.6          6.1         2.5  virginica
111          6.5         3.2          5.1         2.0  virginica
112          6.4         2.7          5.3         1.9  virginica
113          6.8         3.0          5.5         2.1  virginica
114          5.7         2.5          5.0         2.0  virginica
115          5.8         2.8          5.1         2.4  virginica
116          6.4         3.2          5.3         2.3  virginica
117          6.5         3.0          5.5         1.8  virginica
118          7.7         3.8          6.7         2.2  virginica
119          7.7         2.6          6.9         2.3  virginica
120          6.0         2.2          5.0         1.5  virginica
121          6.9         3.2          5.7         2.3  virginica
122          5.6         2.8          4.9         2.0  virginica
123          7.7         2.8          6.7         2.0  virginica
124          6.3         2.7          4.9         1.8  virginica
125          6.7         3.3          5.7         2.1  virginica
126          7.2         3.2          6.0         1.8  virginica
127          6.2         2.8          4.8         1.8  virginica
128          6.1         3.0          4.9         1.8  virginica
129          6.4         2.8          5.6         2.1  virginica
130          7.2         3.0          5.8         1.6  virginica
131          7.4         2.8          6.1         1.9  virginica
132          7.9         3.8          6.4         2.0  virginica
133          6.4         2.8          5.6         2.2  virginica
134          6.3         2.8          5.1         1.5  virginica
135          6.1         2.6          5.6         1.4  virginica
136          7.7         3.0          6.1         2.3  virginica
137          6.3         3.4          5.6         2.4  virginica
138          6.4         3.1          5.5         1.8  virginica
139          6.0         3.0          4.8         1.8  virginica
140          6.9         3.1          5.4         2.1  virginica
141          6.7         3.1          5.6         2.4  virginica
142          6.9         3.1          5.1         2.3  virginica
143          5.8         2.7          5.1         1.9  virginica
144          6.8         3.2          5.9         2.3  virginica
145          6.7         3.3          5.7         2.5  virginica
146          6.7         3.0          5.2         2.3  virginica
147          6.3         2.5          5.0         1.9  virginica
148          6.5         3.0          5.2         2.0  virginica
149          6.2         3.4          5.4         2.3  virginica
150          5.9         3.0          5.1         1.8  virginica

$cars
   speed dist
1      4    2
2      4   10
3      7    4
4      7   22
5      8   16
6      9   10
7     10   18
8     10   26
9     10   34
10    11   17
11    11   28
12    12   14
13    12   20
14    12   24
15    12   28
16    13   26
17    13   34
18    13   34
19    13   46
20    14   26
21    14   36
22    14   60
23    14   80
24    15   20
25    15   26
26    15   54
27    16   32
28    16   40
29    17   32
30    17   40
31    17   50
32    18   42
33    18   56
34    18   76
35    18   84
36    19   36
37    19   46
38    19   68
39    20   32
40    20   48
41    20   52
42    20   56
43    20   64
44    22   66
45    23   54
46    24   70
47    24   92
48    24   93
49    24  120
50    25   85

$n
[1] 2

> 
> a <- data.frame(id = 1:10, scores = matrix(c(80:99), nrow = 10, ncol = 2 ) )
> a
   id scores.1 scores.2
1   1       80       90
2   2       81       91
3   3       82       92
4   4       83       93
5   5       84       94
6   6       85       95
7   7       86       96
8   8       87       97
9   9       88       98
10 10       89       99
> 

註:行與行之間可儲存不同的資料型別

例如:numeric、character、DataFrame、list...

2. 軟體基礎

以上名詞,之間的關係如下...

向量(Vectors)

因子(Factors)

陣列(Arrays)

矩陣(Matrices)

資料框(DataFrame)

列表(Lists)

(最基本的單位)

(多維的向量)

(二維的向量)

(儲存"類別",具有"level")

(可儲存任意"物件"以及

"型別"、"長度"的資料)

(行與行間可儲存不同的型別資料)

向量多維化

型別多樣化

像是分級過後的產物

3. 資料的讀取

資料科學 Data Science 系列 (2)  -  資料探勘 (2)

3. 資料的讀取

(1) CSV檔

常見的資料有以下格式:

由於篇幅的關係,本章只介紹該如何 讀取CSV檔

(2) EXCEL檔

(3) 資料庫

(4) 其他格式...

3. 資料的讀取

STEP1:使用read.table()

[ 用法 ]

  • read.table (file = 檔案路徑 , header = TRUE or FALSE, sep = "分隔符號")

[ 參數設定 ]

  • file    設定檔案的完整路徑
  • header    設定是否將資料的第一橫列設為直行名稱
  • sep    設定用來分隔資料的分隔符號 

 

若發現 CSV 檔(或 tab 分隔值檔)內容有缺漏,例如分隔資料格的分隔符號出現在儲存格內。在這個情況下應該改用 read.csv2()read.delim2() 讀取資料。

> # 讀取檔案的完整路徑(在此為網路位址)
> theUrl <- "http://www.jaredlander.com/data/Tomato%20First.csv"
>
> # 將檔案載入R,在這裡設定
> tomato <- read.table (file = theUrl, header = TRUE, sep = ",")
> 

3. 資料的讀取

STEP2:使用head()

[ 用法 ]

  • head(資料表名稱)

[ 用法 ]

  • data.frame (變數1 = 名稱1, 變數2 = 名稱2, 變數3 = 名稱3, ...... , stringsAsFactors = TRUE or False)

[ 引數設定 ]

  • stringsAsFactors    防止含 character (字元)的直行被轉為 factor,保持 character 直行為原有的資料型態

 

STEP3:使用data.frame()

3. 資料的讀取

STEP2、STEP3:執行結果

> head(tomato)    # 查看資料表的第一部分
  Round             Tomato Price      Source Sweet Acid Color Texture Overall
1     1         Simpson SM  3.99 Whole Foods   2.8  2.8   3.7     3.4     3.4
2     1  Tuttorosso (blue)  2.99     Pioneer   3.3  2.8   3.4     3.0     2.9
3     1 Tuttorosso (green)  0.99     Pioneer   2.8  2.6   3.3     2.8     2.9
4     1     La Fede SM DOP  3.99   Shop Rite   2.6  2.8   3.0     2.3     2.8
5     2       Cento SM DOP  5.49  D Agostino   3.3  3.1   2.9     2.8     3.1
6     2      Cento Organic  4.99  D Agostino   3.2  2.9   2.9     3.1     2.9
  Avg.of.Totals Total.of.Avg
1          16.1         16.1
2          15.3         15.3
3          14.3         14.3
4          13.4         13.4
5          14.4         15.2
6          15.5         15.1
> 
>
> x <- 10:1
> y <- -4:5
> # "q"是一個 character 型態的向量
> q <- c("Hockey", "Football", "Baseball", "Curling", "Rugby", "Lacrosse", "Basketball", "Tennis", "Cricket", "Soccer")
> 
> theDF <- data.frame(First = x, Second = y, Sport = q, stringsAsFactors = FALSE)
> theDF$Sport
 [1] "Hockey"     "Football"   "Baseball"   "Curling"    "Rugby"      "Lacrosse"  
 [7] "Basketball" "Tennis"     "Cricket"    "Soccer"    
> 

4. 學習資源

資料科學 Data Science 系列 (2)  -  資料探勘 (2)

4. 學習資源

R 語言翻轉教室

http://datascienceandr.org/

請自行完成以下的課程: