我正在使用sparklyr进行ml_kmeans分析。
我的问题是如何最好地分配预测的群集成员资格。 github上代码中的注释提到返回的数据.ml_kmeans中的数据框可能无法正确排序。
到目前为止,我已经提出了以下解决方案,但似乎有点冗长,是否有更好的方法将预测的群集成员资格与原始数据合并?
我很想使用扫帚包,但我认为不支持ml_kmeans。
# load lib and connect
library(sparklyr)
# connect
sc <- spark_connect( master = "local" )
# compute id column
iris <- iris %>%
mutate( id = row_number()-1 )
# copy to spark
iris_tbl <- sdf_copy_to( sc, iris, overwrite = TRUE )
# compute kmeans
iris_kmeans <- iris_tbl %>%
select( -id,-Species) %>% # remove non relevant columns
ml_kmeans( centers = 5L,
init_mode = "k-means||"
)
# assign cluster membership
iris_cluster <- sdf_predict( iris_kmeans,
new_data = "iris_tbl" ) %>%
compute( "iris_cluster" )
# extract id column
id_col <- iris_kmeans$ml.options$id.column
# bind columns and collect results
iris_result <- cluster_membership %>%
sdf_sort( id_col ) %>% # sort by assigned spark id
select( prediction, id_col ) %>% # select cols to be merged
sdf_bind_cols( iris_tbl ) %>%
collect( 'iris_result' )
答案 0 :(得分:0)
使用最新的开发(只要sparklyr/pull/1218合并),您就可以执行类似
的操作$SomeUrl = 'https://stackoverflow.com'
$ie = New-Object -com internetexplorer.application
$ie.visible = $true
$ie.navigate($SomeUrl)
while ($ie.Busy -eq $true) { Start-Sleep -Seconds 1 } # Wait for IE to settle.
请注意,您需要将(单侧)公式或library(sparklyr)
sc <- spark_connect(master = "local")
iris_tbl <- sdf_copy_to(sc, iris)
iris_kmeans <- ml_kmeans(iris_tbl, ~ . - Species, centers = 5)
ml_predict(iris_kmeans, iris_tbl)
# alternatively
sdf_predict(iris_tbl, iris_kmeans)
传递给features
,以便让它知道要与哪些变量进行聚类。 ml_kmeans()
和ml_predict()
函数执行相同的操作,只是使用不同的参数排序。