矩阵:(常用维度2维)类似于线性代数里面的矩阵.
机器学习算法 很多都有 应用到矩阵
1.创建
matrix(data,nrow,ncol,byrow,dimnames)
#data:数据集:向量
#nrow: 行
#ncol:列
#byrow:按照行生成数据集还是按照列生成数据集
#dimnames:起别名,它要是一个列表
#byrow = FALSE,说明是按照列来构建
#list(c('a','b'),c('aa','bb'))他里面我们传入了两个向量,第一个代表行索引,第二个代表列
> matrix(c(1,2,'a','b'),nrow = 2,ncol = 2,byrow = FALSE,dimnames =list(c('a','b'),c('aa','bb')))
aa bb
a "1" "a"
b "2" "b"
>
> matrix(c(1,2,'a','b'),nrow = 2,ncol = 2,byrow = TRUE,dimnames =list(c('a','b'),c('aa','bb')))
aa bb
a "1" "2"
b "a" "b"
>
#你可以省略行或者列之一,那么matrix会自动推算出缺失的列或者行
> matrix(c(1,2,'a','b'),nrow = 2,byrow = TRUE,dimnames =list(c('a','b'),c('aa','bb')))
aa bb
a "1" "2"
b "a" "b"
> matrix(c(1,2,'a','b'),ncol = 2,byrow = TRUE,dimnames =list(c('a','b'),c('aa','bb')))
aa bb
a "1" "2"
b "a" "b"
#list里面如果只是传入一个参数,默认代表行索引
> matrix(c(1,2,'a','b'),nrow = 2,ncol = 2,byrow = TRUE,dimnames =list(c('a','b')))
[,1] [,2]
a "1" "2"
b "a" "b"
查询
#1.访问单个元素
m[1,1]
m["r1","c1"]
#2.访问一行
m[1,]
#访问一列
m[,1]
#3.访问多个元素
m[c(1,2),c(1,3)]
m[c(T,F),c(T,F)]
#4.切片 只用默认索引
m[1:2,1:2]
#5.如果有重命名的话,名字不支持切片
m["r1":"r2",]
修改
#1.对位修改 (行|列)
m[1,] <- c(10,20,30)
m[,1] = c(100,200)
#2.
m[1,] <- 100
#3.错误演示
m[1,] <- c(10,20)
删除
m[-1,]#删除一行
m[,-1]#删除一列
m[,c(-1,-3)]删除一三列
矩阵运算
同维度的矩阵你可以做基本的运算
#矩阵运算
v1 = matrix(c(1:16)
,nrow=4
,byrow = TRUE)
v2 = matrix(c(1:16)
,nrow=4
,byrow = TRUE)
v1 (+ - * /) v2
矩阵什么地方能用呢
数据挖掘(线性回归,梯度下降)
特征(x) 标签(y)
平方米 房价 (数据:矩阵)
100 500w
120 600w
50 250w
y = kx + b 一元线性回归公式
线性回归在做什么事情呢?
历史数据集中学习:输入x,输入y -->学习结果 k ,b
预测:
输入 x
输出 y | y = kx+b
一元线性回归预测房价(---)
多元线性回归的时候
x 房价
平方米 城市
y = k1x1 + k2x2 + k0x0 多元线性回归公式
输入数据集 : 只提供 x,y
学习的结果:未知的参数学习出来
预测 : 输入x
返回y
(4,3) * (3,1) = (4,1)
x0 x1 x2 k0 -->预测结果1
x0 x1 x2 k1 -->预测结果2
x0 x1 x2 k2 -->预测结果3
x0 x1 x2 -->预测结果4
数组
创建:
> a1 =array(1,2,3)#一维数组
> a1
[1] 1 2 3
> a2 <- array(1:10,dim = c(2,5))#二维数组
> a2
[,1] [,2] [,3] [,4] [,5]
[1,] 1 3 5 7 9
[2,] 2 4 6 8 10
#注意数组元素的排列规律,先排列,后行
> a2 <- array(1:10,dim = c(5,2))
> a2
[,1] [,2]
[1,] 1 6
[2,] 2 7
[3,] 3 8
[4,] 4 9
[5,] 5 10
> #三维
> dim1 <- c("a1","a2")
> dim2 <- c("b1","b2","b3")
> dim3 <- c("c1","c2")
> arr <- array(1:12
+ ,c(2,3,2)
+ ,dimnames = list(dim1,dim2,dim3))
> arr
, , c1
b1 b2 b3
a1 1 3 5
a2 2 4 6
, , c2
b1 b2 b3
a1 7 9 11
a2 8 10 12
>
查询
大家试一下,和前面差不多,很有套路,虽然是三维数组!
总的来说既然是三维,那么就可以有三个参数
arr(行,列,目标子数组)
#单个元素访问
arr[,,1]
arr[,,"c1"]
arr[,,c(T,F)]
arr[,,c(F,T)]
arr[,1,]
arr[1,,]
arr[,c(1,3),]
#切片 (起别名了,切片的方式不能用,默认索引)
arr[,1:2,]
arr[,"b1":"b3",]
#循环索引
arr[,c(T,F),]
> class(arr[1,,'c1'])
[1] "integer"
> class(arr[1,,c(1,2)])
[1] "matrix"
删除
arr[,,-1]
总结: 可以写(数值
,c()向量
,布尔类型(单个值,向量)
,切片 (字符型的不能这样做)【可以用在其它数据类型】
小贴士:先学习薄
学厚(任何一个数据类型之间的小差异
,应用在什么场景)
机会
赋值
arr[,c(-1,-2),1] = 100
arr[,c(-1,-2),1] = c(5,6)
因子
特殊数据结构(数据类型),统计(绘图)
data <- c("1","2","1","2","3"
,"4","5","5","4","3","2")
# as. 类型转换
# is. 查看对象是否是某个类型
is.factor(data)
#创建因子
#绘图可以确定一个大致范围
#生成数据挖掘中的标签
#房价:标签 | 平方米:特征
#预测什么:什么就是标签,其余全是特征
#标签离散(1,2,3,4,5,6)[因子只能生成]
#标签连续 (无穷数 1.1 ,1.11,1.12,1.001)
factor_data = factor(data)
is.factor(factor_data)
#
height <- c(1,2,3,4,5,6,7)
weight <- c("a","b","c","d","e","g","h")
gender <- c(1,2,3,4,5,6,7)
input_data = data.frame(height,weight,gender)
#
v <- gl(3,4,labels = c("a","b","c"))
v
#手动数据集
#特征-数据仓库 | 标签 -
#用户分群 1000-2000 | 2000-3000 | 3000-4000
# x | v ->数据集
数据类型:
原子向量 : 6种(常用的有5种) | 原子向量还有其它
向量 | 列表 | 矩阵 | 数组 | 因子 | 数据框
总结: 可以写(数值
,c()向量
,布尔类型(单个值,向量)
,切片 (字符型的不能这样做)【可以用在其它数据类型】
网友评论