# Bisecting K-Means Clustering Model

`spark.bisectingKmeans.Rd`

Fits a bisecting k-means clustering model against a SparkDataFrame.
Users can call `summary`

to print a summary of the fitted model, `predict`

to make
predictions on new data, and `write.ml`

/`read.ml`

to save/load fitted models.

Get fitted result from a bisecting k-means model. Note: A saved-loaded model does not support this method.

## Usage

```
spark.bisectingKmeans(data, formula, ...)
# S4 method for SparkDataFrame,formula
spark.bisectingKmeans(
data,
formula,
k = 4,
maxIter = 20,
seed = NULL,
minDivisibleClusterSize = 1
)
# S4 method for BisectingKMeansModel
summary(object)
# S4 method for BisectingKMeansModel
predict(object, newData)
# S4 method for BisectingKMeansModel
fitted(object, method = c("centers", "classes"))
# S4 method for BisectingKMeansModel,character
write.ml(object, path, overwrite = FALSE)
```

## Arguments

- data
a SparkDataFrame for training.

- formula
a symbolic description of the model to be fitted. Currently only a few formula operators are supported, including '~', '.', ':', '+', '-', '*', and '^'. Note that the response variable of formula is empty in spark.bisectingKmeans.

- ...
additional argument(s) passed to the method.

- k
the desired number of leaf clusters. Must be > 1. The actual number could be smaller if there are no divisible leaf clusters.

- maxIter
maximum iteration number.

- seed
the random seed.

- minDivisibleClusterSize
The minimum number of points (if greater than or equal to 1.0) or the minimum proportion of points (if less than 1.0) of a divisible cluster. Note that it is an expert parameter. The default value should be good enough for most cases.

- object
a fitted bisecting k-means model.

- newData
a SparkDataFrame for testing.

- method
type of fitted results,

`"centers"`

for cluster centers or`"classes"`

for assigned classes.- path
the directory where the model is saved.

- overwrite
overwrites or not if the output path already exists. Default is FALSE which means throw exception if the output path exists.

## Value

`spark.bisectingKmeans`

returns a fitted bisecting k-means model.

`summary`

returns summary information of the fitted model, which is a list.
The list includes the model's `k`

(number of cluster centers),

`coefficients`

(model cluster centers),

`size`

(number of data points in each cluster), `cluster`

(cluster centers of the transformed data; cluster is NULL if is.loaded is TRUE),
and `is.loaded`

(whether the model is loaded from a saved file).

`predict`

returns the predicted values based on a bisecting k-means model.

`fitted`

returns a SparkDataFrame containing fitted values.

## Note

spark.bisectingKmeans since 2.2.0

summary(BisectingKMeansModel) since 2.2.0

predict(BisectingKMeansModel) since 2.2.0

fitted since 2.2.0

write.ml(BisectingKMeansModel, character) since 2.2.0

## Examples

```
if (FALSE) {
sparkR.session()
t <- as.data.frame(Titanic)
df <- createDataFrame(t)
model <- spark.bisectingKmeans(df, Class ~ Survived, k = 4)
summary(model)
# get fitted result from a bisecting k-means model
fitted.model <- fitted(model, "centers")
showDF(fitted.model)
# fitted values on training data
fitted <- predict(model, df)
head(select(fitted, "Class", "prediction"))
# save fitted model to input path
path <- "path/to/model"
write.ml(model, path)
# can also read back the saved model and print
savedModel <- read.ml(path)
summary(savedModel)
}
```