如何缩放矩阵列?在EGO方法的背景下

How to scale matrix columns? In the context of EGO methods

提问人:jinTgreater 提问时间:11/7/2023 最后编辑:jinTgreater 更新时间:11/8/2023 访问量:38

问:

R的新手... 我正在尝试缩放列具有不同范围的矩阵。 这是我首先想到的。

matrixColumnRescale <- function( inputMatrix, ranges ) {
    outputMatrix <- matrix( nrow= nrow( inputMatrix ), ncol= ncol( inputMatrix ) )

    for( i in 1:ncol(inputMatrix) ) {
        outputMatrix[,i] <- rescale( inputMatrix[,i], ranges[[i]] )
    }
    
    return( outputMatrix )
}

这似乎没问题,但有没有更好的方法?也许使用 ? apply 是否可以根据它所作用的列传递不同的参数?apply( x, 2, ... )

背景:

design <- function( select, iterations ) {
    allLimits <- matrix( nrow = 4, ncol = 2 )
    allLimits[1,] <- c( 1.00, 1.20 )
    allLimits[2,] <- c( 10, 100000 )
    allLimits[3,] <- c( 5, 10000 )
    allLimits[4,] <- c( 1, 8 )

    limits <- allLimits[select,]

    design <- maximinESE_LHS( lhsDesign( iterations, length( select ) )$design, inner_it=100, J=50, it=2)$design

    design <- matrixColumnRescale( design, limits ); 
    print( design )

    return( list( design = design, limits = limits ) )
}

design <- design( c( 1,2 ), 20 );

使用 GPareto 包的多目标、多变量优化函数。输入需要由 DiceKriging 包中的 km 函数创建的模型。这些模型是从输入的 nrows of 参数 ncols 作为“设计”生成的。更好的“设计”是由拉丁语超立方体制作的,但 DiceDesign 包的 lhsDesign 创建了范围为 ( 0, 1 ) 的矩阵。这就是为什么我需要将矩阵列缩放到参数范围的原因。

旁注:

我是否错误地使用堆栈溢出?我已经在某种程度上回答了我的问题,但我只想知道是否有更好的解决方案。我应该勾选“回答你自己的问题”吗?

R 矩阵

评论


答: 暂无答案