美文网首页
R语言矩阵、数组、因子简单介绍及使用

R语言矩阵、数组、因子简单介绍及使用

作者: 采星星的小太阳BavaLI | 来源:发表于2020-05-09 09:23 被阅读0次

矩阵:(常用维度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()向量
                    ,布尔类型(单个值,向量)
                    ,切片 (字符型的不能这样做)【可以用在其它数据类型】

好啦,今天就到这里,可以说讲的很仔细了,大家慢慢悟吧,希望能帮助到爱学习的你们!如果可以,我很开心!

相关文章

网友评论

      本文标题:R语言矩阵、数组、因子简单介绍及使用

      本文链接:https://www.haomeiwen.com/subject/nfrhnhtx.html