提问人:jinTgreater 提问时间:11/7/2023 最后编辑:jinTgreater 更新时间:11/8/2023 访问量:38
如何缩放矩阵列?在EGO方法的背景下
How to scale matrix columns? In the context of EGO methods
问:
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 ) 的矩阵。这就是为什么我需要将矩阵列缩放到参数范围的原因。
旁注:
我是否错误地使用堆栈溢出?我已经在某种程度上回答了我的问题,但我只想知道是否有更好的解决方案。我应该勾选“回答你自己的问题”吗?
答: 暂无答案
评论