Liz's Blog

就是要學R #2:Matrix 矩陣篇

| Comments

今天學的是矩陣,比起昨天進階一點點,希望每天都學到一點點。

Udemy
課程名稱:Data Science and Machine Learning Bootcamp with R
講師:Jose Portilla

這個章節介紹矩陣(Matrix),簡單來說,昨天學的vector只有一行,矩陣則是變成多行。
1.Matrix基本運用
(1)輸入:matrix(1:5)
輸出:1 2 3 4 5

(2)輸入:matrix(1:8,nrow=2)
輸出:1 3 5 7
2 4 6 8

(3)輸入:matrix(1:8,byrow=TRUE,nrow=2)
輸出:1 2 3 4
5 6 7 8

(4)輸入:matrix(1:8,byrow=FALSE,nrow=2)
輸出:1 3 5 7
2 4 6 8

2.從vector資料結合成Matrix

TPE <- c(36,37,34,36,39)
KH <- c(32,33,34,36,34)

temps <- c(TPE,KH)
temp.matrix <- matrix(temps,byrow=T,nrow=2)

temp.matrix

輸出:
36 37 34 36 39
32 33 34 36 34

3.Matrix欄位命名(延續以上資料)

days <- c('Mon','Tue','Wed','Thu','Fri')
location <- c('TPE','KH')

colnames(temp.matrix) <- days
rownames(temp.matrix) <- location

temp.matrix

輸出:
Mon Tue Wed Thu Fri
TPE 36 37 34 36 39
KH 32 33 34 36 34

4.Matrix運算(延續以上資料)
(1)輸入:colSums(temp.matrix)
輸出:
Mon Tue Wed Thu Fri
68 70 68 72 73

(2)輸入:rowSums(temp.matrix)
輸出:
TPE KH
182 169

(3)輸入:rowMeans(temp.matrix)
輸出:
TPE KH
36.4 33.8

(4)

BER <- c(27,26,28,24,23)
airport.temps <- rbind(temp.matrix,BER)
airport.temps

輸出:
Mon Tue Wed Thu Fri
TPE 36 37 34 36 39
KH 32 33 34 36 34
BER 27 26 28 24 23

(5)

Avg <- rowMeans(airport.temps)
Avg

輸出:
TPE KH BER
36.4 33.8 25.6

(6)

airport.temps <- cbind(airport.temps,Avg)
airport.temps

輸出:
Mon Tue Wed Thu Fri Avg
TPE 36 37 34 36 39 36.4
KH 32 33 34 36 34 33.8
BER 27 26 28 24 23 25.6

5.Matrix運算式(和昨天教的運算一樣直觀)

mat <- matrix(1:10,byrow=T,nrow=2)
mat

3 * mat
1 / mat
mat ^ 5
mat + mat
mat / mat

mat > 3

6.矩陣內積,可參考矩陣乘法

mat2 <- matrix(1:4,nrow=2)
mat2

mat2 %*% mat2

7.選擇及索引Matrix某個特定位置的元素

mat <- matrix(1:12,byrow=T,nrow=3)
mat

mat[2,]       #列出第二橫排
mat[,2]       #列出第二行
mat[1:2,]     #列出前二橫排
mat[1:2,2:3]

本來的matrix長這樣:
1 2 3 4
5 6 7 8
9 10 11 12
最後輸出則會得到:
2 3
6 7

8.使用factor()來創造Nominal或Ordinal類別矩陣。
(1)Nominal是屬於名目類別。

place <- c('t','k','t','t','k')
factor.place <- factor(place)
factor.place

得到t和k兩種類別。

(2)Ordinal是屬於順序類別。

temps <- c('cold','med','cold','med','hot','hot','cold')
fact.temp <- factor(temps,ordered=TRUE,levels=c('cold','med','hot'))
fact.temp

cold <med <hot

(3)
輸入:summary(temps)
輸出:
Length Class Mode
7 character character

(4)
輸入:summary(fact.temp)
輸出:
cold 3
med 2
hot 2

【延伸閱讀】
1.就是要學R #1:Basic 基礎篇
2.就是要學R #2:Matrix 矩陣篇
3.就是要學R #3:Data Frame 資料框架篇
4.就是要學R #4:List 列表篇
5.就是要學R #5:Import & Export 匯入匯出篇(csv & excel)
6.就是要學R #6:Import & Export 匯入匯出篇(SQL & web scraping)
7.就是要學R #7:R programming 基礎篇
8.就是要學R #8:R Programming 進階篇
9.就是要學R #9:資料前處理篇(dplyr、tidyr)
10.就是要學R #10:ggplot2幫你搞定資料視覺化
11.就是要學R #11:資料視覺化應用篇(ggplot2、Plotly)
12.就是要學R #12:機器學習之線性迴歸實作篇
13.就是要學R #13:機器學習之邏輯迴歸實作篇
14.就是要學R #14:機器學習之K Nearest Neighbor(KNN)實作篇
15.就是要學R #15:機器學習之決策樹、隨機森林實作篇
16.就是要學R #16:機器學習之Support Vector Machine(SVM)實作篇
17.就是要學R #17:機器學習之K Means Clustering實作篇
18.就是要學R #18:機器學習之自然語言處理(NLP)實作篇
19.就是要學R #19:機器學習之類神經網路(Neural Net)實作篇

Comments

comments powered by Disqus