sparklyr
의 클러스터링 문제를 해결하기 위해 노력하고 있습니다. 훈련 세트의 변수 중 많은 부분이 서로 다른 척도로 측정되므로 순서에 따라 다릅니다. 모범 사례에 따라 데이터를 확장하고 가운데에 맞추려고합니다.mutate_each를 사용하여 스파크리어의 변수를 크기 조절하고 가운데에 맞 춥니 다
X를 임의의 변수, μ = 평균 및 σ = 표준 편차로 표현하는 가장 일반적인 표현식 (X - μ)/σ가 여러 가지 있습니다. 나는 X = 무작위 변수, x = 샘플 평균, x_max = 최대 값, x_min = 최소값을 (X - x)/(x_max - x_min)로 사용하는 경향이있다.
dplyr
을 사용하여이 변환을 적용한 후 이상한 결과가 나타납니다.
#connect to spark
library(sparklyr)
library(SparkR)
library(dplyr)
sc = spark_connect(master = 'yarn-client',
spark_home = '/usr/hdp/current/spark-client',
app_name = 'sparklyr'
# config = list(
# "sparklyr.shell.executor-memory" = "XG",
# "sparklyr.shell.driver-memory" = "XG",
# "spark.driver.maxResultSize" = "XG" # may need to transfer a lot of data into R
)
sparkR.init()
#create a dataframe where variables in the dataset differ by an order of magnitude
mat <- as.data.frame(matrix(data = rnorm(200, mean=100,sd=10), nrow = 1000, ncol = 50))
mat1 <- as.data.frame(matrix(data = rnorm(200, mean=0,sd=1), nrow = 1000, ncol = 50))
colnames(mat1) <- paste('X',1:50,sep='')
mat.final <- cbind(mat,mat1)
#copy to Spark
dat.out <- sdf_copy_to(sc,mat.final,'dat',overwrite=TRUE)
#define centering and scaling function
scale.center <- function(x){
(x-mean(x,na.rm=TRUE)) /(max(x,na.rm = TRUE)-min(x,na.rm = TRUE))
}
#scale data
dat.out1 <-
dat.out %>%
mutate_each(funs(s=scale.center))
코드 실행,하지만 난 뭔가 이상한 얻을 :이 예제를 고려
str(dat.out1)
$ ops:List of 4
..$ name: chr "mutate"
..$ x :List of 4
.. ..$ name: chr "mutate"
.. ..$ x :List of 4
.. .. ..$ name: chr "mutate"
.. .. ..$ x :List of 4
.. .. .. ..$ name: chr "mutate"
.. .. .. ..$ x :List of 4
.. .. .. .. ..$ name: chr "mutate"
.. .. .. .. ..$ x :List of 4
.. .. .. .. .. ..$ name: chr "mutate"
.. .. .. .. .. ..$ x :List of 4
.. .. .. .. .. .. ..$ name: chr "mutate"
.. .. .. .. .. .. ..$ x :List of 4
.. .. .. .. .. .. .. ..$ name: chr "mutate"
.. .. .. .. .. .. .. ..$ x :List of 4
.. .. .. .. .. .. .. .. ..$ name: chr "mutate"
.. .. .. .. .. .. .. .. ..$ x :List of 4
.. .. .. .. .. .. .. .. .. ..$ name: chr "mutate"
.. .. .. .. .. .. .. .. .. ..$ x :List of 4
.. .. .. .. .. .. .. .. .. .. ..$ name: chr "mutate"
.. ..
은 위의 str
를 실행 한 후 출력의 단지 부분입니다. 여기에 무슨 일이 일어나고 있는지 생각해보십시오. 센터링 및 스케일링 기능이 없다는 것에 놀랐습니다.
'? scale'은 기본형과 함께 제공됩니다. – hrabel
SparkR에서는 구현되지 않았습니다. – schristel
아, 죄송합니다. 위의 코드에서 'scale'로 인해 오류가 발생합니까? 'mutate_each'가'mutate_all'을 위해 더 이상 사용되지 않을까요? 그게 뭔가 관련이 있는지 궁금합니다. – hrabel