Skip to content

Commit

Permalink
version 1.0.8
Browse files Browse the repository at this point in the history
  • Loading branch information
mlampros authored and cran-robot committed Oct 28, 2017
1 parent ff638f2 commit ea12e3f
Show file tree
Hide file tree
Showing 16 changed files with 1,476 additions and 1,678 deletions.
8 changes: 4 additions & 4 deletions DESCRIPTION
Expand Up @@ -2,8 +2,8 @@ Package: ClusterR
Type: Package
Title: Gaussian Mixture Models, K-Means, Mini-Batch-Kmeans and
K-Medoids Clustering
Version: 1.0.7
Date: 2017-10-09
Version: 1.0.8
Date: 2017-10-28
Author: Lampros Mouselimis <mouselimislampros@gmail.com>
Maintainer: Lampros Mouselimis <mouselimislampros@gmail.com>
BugReports: https://github.com/mlampros/ClusterR/issues
Expand All @@ -22,6 +22,6 @@ Suggests: testthat, covr, knitr, rmarkdown
VignetteBuilder: knitr
RoxygenNote: 6.0.1
NeedsCompilation: yes
Packaged: 2017-10-09 06:39:48 UTC; lampros
Packaged: 2017-10-28 09:45:09 UTC; lampros
Repository: CRAN
Date/Publication: 2017-10-13 22:14:46 UTC
Date/Publication: 2017-10-28 13:59:39 UTC
30 changes: 15 additions & 15 deletions MD5
@@ -1,25 +1,25 @@
ba1e3710a94136f23cf63c02f8d44232 *DESCRIPTION
3c7080b9522e2679cc591720af6680d5 *DESCRIPTION
c9c69a326502c31a65128654c3c08cb5 *LICENSE
1cf3e5d5262851d34692258a58312008 *NAMESPACE
4c13c089509068cdf8376577275accef *NEWS.md
934023335a95f7a12f5e24ab47ca3a38 *R/RcppExports.R
2b6e37532c1d8970add0adc137ed8328 *R/clustering_functions.R
85c4ffce66562f38432b4bb1bb38fe82 *README.md
c19499801ed769e12ff4d6eb89ec3a5e *NEWS.md
ef99b39d55364aa33eb0bb2019c20eea *R/RcppExports.R
620692891a7690c7b4354e4a01ce41f3 *R/clustering_functions.R
5c063d6f76066a9a3805ec35d364ac19 *README.md
be5879212a42466194120a1ae4e567f5 *build/vignette.rds
8b6687f3bb9c58cd74ae67670872215d *data/dietary_survey_IBS.rda
aa58963ebd13c4c91edf809ca4efc5d4 *data/mushroom.rda
a9e3dfd8650ed7d2d0a91d3880a67f7b *data/soybean.rda
87a9ec1ef4480e036e4f4f041367e77b *inst/doc/the_clusterR_package.R
e7555486d59e736a94238dae84995d02 *inst/doc/the_clusterR_package.Rmd
9085bd5dee883567b3743d17a6c3963e *inst/doc/the_clusterR_package.html
128fe5f74b8c6787e9c378b61bd8d423 *inst/doc/the_clusterR_package.R
86f33097b23d7a5acc0c83647a19d865 *inst/doc/the_clusterR_package.Rmd
0c4cd992fcc7105251a091f2d1a00d03 *inst/doc/the_clusterR_package.html
94cd0d57e5b44e47a3746a7979a4088f *man/Clara_Medoids.Rd
c4f35a38b1a4271caf0a29ed616c45ba *man/Cluster_Medoids.Rd
853d94cb9bf0db952fee7ce47788baa5 *man/GMM.Rd
add088ce3a97143c6a7920c2a5d04df4 *man/KMeans_arma.Rd
f05e6d0f2182380d0373d5f976292c7f *man/KMeans_rcpp.Rd
bb8de9fbba458b06aff94061d2d3765e *man/KMeans_rcpp.Rd
66152d79ea97f9fc524403e8a8f4acc6 *man/MiniBatchKmeans.Rd
e0427f0525c0407bbdcb48ca5dc8f7ca *man/Optimal_Clusters_GMM.Rd
bffb0081a4d9e3a7ea1af8087a762cfb *man/Optimal_Clusters_KMeans.Rd
613ec3ed1a2eed4b6819759c6cd954ec *man/Optimal_Clusters_KMeans.Rd
c84b2645d14b6c057736ea9015fcc582 *man/Optimal_Clusters_Medoids.Rd
43ac28a91d5922a30be1d5a2b1a69da2 *man/Silhouette_Dissimilarity_Plot.Rd
e22a73fe44714937058cc67e21c1c783 *man/center_scale.Rd
Expand All @@ -40,15 +40,15 @@ cd805bfc471c3894870346627bb3b047 *man/predict_Medoids.Rd
62231fa9f6be487bdbf9f95625d39c0b *man/tryCatch_optimal_clust_GMM.Rd
16d006bf40b078243e18207776416cf7 *src/Makevars
18579fb24623b1813f3972b33fe55dac *src/Makevars.win
57d82fb7fb243401d95778a383858c35 *src/RcppExports.cpp
f16c58ca42f126453aaf7ae7f9efdc5e *src/init.c
914a5b40adf67f03f63b1d2d581e8fec *src/kmeans_miniBatchKmeans_GMM_Medoids.cpp
62824273469a26f41067dcbf330d14d7 *src/RcppExports.cpp
e08f00b240711df198e7c98e60402d70 *src/init.c
f3eccd9f1ef10c8d20e8c8fc4f011fe6 *src/kmeans_miniBatchKmeans_GMM_Medoids.cpp
580cce096456bdd88fc875489a33be99 *src/utils_rcpp.cpp
76f46da484cec9e5763f21f16c309c50 *src/utils_rcpp.h
3243b3e7b85ca7953f191679629429ec *tests/testthat.R
4b34781ffe49287702dd06d09a4bae60 *tests/testthat/test-dissimilarity_matrices.R
1ef735012725c45b4a734242fe608e4e *tests/testthat/test-gmm.R
b0fbdfd21926c5ea528483c35f8e97e7 *tests/testthat/test-kmeans.R
f25be666cac89dafb445d05f4ccc63cb *tests/testthat/test-kmeans.R
d9425b004e11be0ace254948cfe84be8 *tests/testthat/test-medoids.R
d2a8fafb44bc41481ebab950e9946604 *tests/testthat/test-plot2d_silhouette_plot_ext_validation_center_scale_dist_mat.R
0504caa57b692a3c365ced1e5caf8356 *vignettes/Rplot.png
Expand All @@ -57,4 +57,4 @@ d2a8fafb44bc41481ebab950e9946604 *tests/testthat/test-plot2d_silhouette_plot_ext
18c9d3881cd1bcc0603e75a107f34bea *vignettes/Rplot_cluster.png
2e5584857902f4f24449491c30d73ac0 *vignettes/dog.jpg
0141cea98ab766cdd578c5d991c0fead *vignettes/elephant.jpg
e7555486d59e736a94238dae84995d02 *vignettes/the_clusterR_package.Rmd
86f33097b23d7a5acc0c83647a19d865 *vignettes/the_clusterR_package.Rmd
7 changes: 7 additions & 0 deletions NEWS.md
@@ -1,4 +1,11 @@


## ClusterR 1.0.8

* I modified the *OpenMP* clauses of the .cpp files to address the ASAN errors.
* I removed the *threads* parameter from the *KMeans_rcpp* function, to address the ASAN errors ( negligible performance difference between threaded and non-threaded version especially if the *num_init* parameter is less than 10 ). The *threads* parameter was removed also from the *Optimal_Clusters_KMeans* function as it utilizes the *KMeans_rcpp* function to find the optimal clusters for the various methods.


## ClusterR 1.0.7

I modified the *kmeans_miniBatchKmeans_GMM_Medoids.cpp* file in the following lines in order to fix the clang-ASAN errors (without loss in performance):
Expand Down
106 changes: 61 additions & 45 deletions R/RcppExports.R
Expand Up @@ -2,174 +2,190 @@
# Generator token: 10BE3573-1514-4C36-9D1C-5A225CD40393

tot_ss_data <- function(x) {
.Call('ClusterR_tot_ss_data', PACKAGE = 'ClusterR', x)
.Call(`_ClusterR_tot_ss_data`, x)
}

KMEANS_rcpp <- function(data, clusters, num_init = 1L, max_iters = 200L, initializer = "kmeans++", fuzzy = FALSE, threads = 1L, verbose = FALSE, CENTROIDS = NULL, tol = 1e-4, eps = 1.0e-6, tol_optimal_init = 0.5, seed = 1L) {
.Call('ClusterR_KMEANS_rcpp', PACKAGE = 'ClusterR', data, clusters, num_init, max_iters, initializer, fuzzy, threads, verbose, CENTROIDS, tol, eps, tol_optimal_init, seed)
KMEANS_rcpp <- function(data, clusters, num_init = 1L, max_iters = 200L, initializer = "kmeans++", fuzzy = FALSE, verbose = FALSE, CENTROIDS = NULL, tol = 1e-4, eps = 1.0e-6, tol_optimal_init = 0.5, seed = 1L) {
.Call(`_ClusterR_KMEANS_rcpp`, data, clusters, num_init, max_iters, initializer, fuzzy, verbose, CENTROIDS, tol, eps, tol_optimal_init, seed)
}

KMEANS_arma <- function(data, clusters, n_iter, verbose, seed_mode = "random_subset", CENTROIDS = NULL, seed = 1L) {
.Call('ClusterR_KMEANS_arma', PACKAGE = 'ClusterR', data, clusters, n_iter, verbose, seed_mode, CENTROIDS, seed)
.Call(`_ClusterR_KMEANS_arma`, data, clusters, n_iter, verbose, seed_mode, CENTROIDS, seed)
}

opt_clust_fK <- function(sum_distortion, data_num_cols, threshold = 0.85) {
.Call('ClusterR_opt_clust_fK', PACKAGE = 'ClusterR', sum_distortion, data_num_cols, threshold)
.Call(`_ClusterR_opt_clust_fK`, sum_distortion, data_num_cols, threshold)
}

INTRA_CLUSTER_DISS <- function(data, CLUSTERS) {
.Call('ClusterR_INTRA_CLUSTER_DISS', PACKAGE = 'ClusterR', data, CLUSTERS)
.Call(`_ClusterR_INTRA_CLUSTER_DISS`, data, CLUSTERS)
}

Rcpp_2arma_mat <- function(x) {
.Call('ClusterR_Rcpp_2arma_mat', PACKAGE = 'ClusterR', x)
.Call(`_ClusterR_Rcpp_2arma_mat`, x)
}

SILHOUETTE_metric <- function(data, CLUSTER, tmp_clust, in_cluster_dist) {
.Call('ClusterR_SILHOUETTE_metric', PACKAGE = 'ClusterR', data, CLUSTER, tmp_clust, in_cluster_dist)
.Call(`_ClusterR_SILHOUETTE_metric`, data, CLUSTER, tmp_clust, in_cluster_dist)
}

evaluation_rcpp <- function(data, CLUSTER, silhouette = FALSE) {
.Call('ClusterR_evaluation_rcpp', PACKAGE = 'ClusterR', data, CLUSTER, silhouette)
.Call(`_ClusterR_evaluation_rcpp`, data, CLUSTER, silhouette)
}

mini_batch_kmeans <- function(data, clusters, batch_size, max_iters, num_init = 1L, init_fraction = 1.0, initializer = "kmeans++", early_stop_iter = 10L, verbose = FALSE, CENTROIDS = NULL, tol = 1e-4, tol_optimal_init = 0.5, seed = 1L) {
.Call('ClusterR_mini_batch_kmeans', PACKAGE = 'ClusterR', data, clusters, batch_size, max_iters, num_init, init_fraction, initializer, early_stop_iter, verbose, CENTROIDS, tol, tol_optimal_init, seed)
.Call(`_ClusterR_mini_batch_kmeans`, data, clusters, batch_size, max_iters, num_init, init_fraction, initializer, early_stop_iter, verbose, CENTROIDS, tol, tol_optimal_init, seed)
}

Predict_mini_batch_kmeans <- function(data, CENTROIDS = NULL, fuzzy = FALSE, eps = 1.0e-6) {
.Call('ClusterR_Predict_mini_batch_kmeans', PACKAGE = 'ClusterR', data, CENTROIDS, fuzzy, eps)
.Call(`_ClusterR_Predict_mini_batch_kmeans`, data, CENTROIDS, fuzzy, eps)
}

GMM_arma <- function(data, gaussian_comps, dist_mode, seed_mode, km_iter, em_iter, verbose, var_floor = 1e-10, seed = 1L) {
.Call('ClusterR_GMM_arma', PACKAGE = 'ClusterR', data, gaussian_comps, dist_mode, seed_mode, km_iter, em_iter, verbose, var_floor, seed)
.Call(`_ClusterR_GMM_arma`, data, gaussian_comps, dist_mode, seed_mode, km_iter, em_iter, verbose, var_floor, seed)
}

INV_COV <- function(COV_VEC) {
.Call('ClusterR_INV_COV', PACKAGE = 'ClusterR', COV_VEC)
.Call(`_ClusterR_INV_COV`, COV_VEC)
}

predict_MGausDPDF <- function(data, CENTROIDS, COVARIANCE, WEIGHTS, eps = 1.0e-8) {
.Call('ClusterR_predict_MGausDPDF', PACKAGE = 'ClusterR', data, CENTROIDS, COVARIANCE, WEIGHTS, eps)
.Call(`_ClusterR_predict_MGausDPDF`, data, CENTROIDS, COVARIANCE, WEIGHTS, eps)
}

GMM_arma_AIC_BIC <- function(data, max_clusters, dist_mode, seed_mode, km_iter, em_iter, verbose, var_floor = 1e-10, criterion = "AIC", seed = 1L) {
.Call('ClusterR_GMM_arma_AIC_BIC', PACKAGE = 'ClusterR', data, max_clusters, dist_mode, seed_mode, km_iter, em_iter, verbose, var_floor, criterion, seed)
.Call(`_ClusterR_GMM_arma_AIC_BIC`, data, max_clusters, dist_mode, seed_mode, km_iter, em_iter, verbose, var_floor, criterion, seed)
}

METHODS <- function(data, data1, method, i, j, flag_isfinite, cov_mat, minkowski_p = 1.0, eps = 1.0e-6, exception_nan = TRUE) {
.Call(`_ClusterR_METHODS`, data, data1, method, i, j, flag_isfinite, cov_mat, minkowski_p, eps, exception_nan)
}

SWITCH <- function(method) {
.Call(`_ClusterR_SWITCH`, method)
}

dissim_mat <- function(data, method, minkowski_p = 1.0, upper = TRUE, diagonal = TRUE, threads = 1L, eps = 1.0e-6) {
.Call('ClusterR_dissim_mat', PACKAGE = 'ClusterR', data, method, minkowski_p, upper, diagonal, threads, eps)
.Call(`_ClusterR_dissim_mat`, data, method, minkowski_p, upper, diagonal, threads, eps)
}

boolean_function <- function(x, y) {
.Call('ClusterR_boolean_function', PACKAGE = 'ClusterR', x, y)
.Call(`_ClusterR_boolean_function`, x, y)
}

inner_field_func <- function(f, sorted_medoids_elem, END_IDX_nelem, end_indices_vec, data, sorted_medoids, sorted_medoids_increment) {
.Call(`_ClusterR_inner_field_func`, f, sorted_medoids_elem, END_IDX_nelem, end_indices_vec, data, sorted_medoids, sorted_medoids_increment)
}

silhouette_matrix <- function(data, end_indices_vec, end_cost_vec, threads = 1L) {
.Call('ClusterR_silhouette_matrix', PACKAGE = 'ClusterR', data, end_indices_vec, end_cost_vec, threads)
.Call(`_ClusterR_silhouette_matrix`, data, end_indices_vec, end_cost_vec, threads)
}

subset_vec <- function(x, y) {
.Call('ClusterR_subset_vec', PACKAGE = 'ClusterR', x, y)
.Call(`_ClusterR_subset_vec`, x, y)
}

field_cm_inner <- function(copy_medoids, non_medoids, data, i, j) {
.Call(`_ClusterR_field_cm_inner`, copy_medoids, non_medoids, data, i, j)
}

ClusterMedoids <- function(data, clusters, method, minkowski_p = 1.0, threads = 1L, verbose = FALSE, swap_phase = FALSE, fuzzy = FALSE, seed = 1L) {
.Call('ClusterR_ClusterMedoids', PACKAGE = 'ClusterR', data, clusters, method, minkowski_p, threads, verbose, swap_phase, fuzzy, seed)
.Call(`_ClusterR_ClusterMedoids`, data, clusters, method, minkowski_p, threads, verbose, swap_phase, fuzzy, seed)
}

dissim_MEDOIDS <- function(data, method, MEDOIDS, minkowski_p = 1.0, threads = 1L, eps = 1.0e-6) {
.Call('ClusterR_dissim_MEDOIDS', PACKAGE = 'ClusterR', data, method, MEDOIDS, minkowski_p, threads, eps)
.Call(`_ClusterR_dissim_MEDOIDS`, data, method, MEDOIDS, minkowski_p, threads, eps)
}

fuzzy_and_stats <- function(data, threads = 1L, eps = 1.0e-6, fuzzy = FALSE) {
.Call('ClusterR_fuzzy_and_stats', PACKAGE = 'ClusterR', data, threads, eps, fuzzy)
fuzzy_and_stats <- function(data, eps = 1.0e-6, fuzzy = FALSE) {
.Call(`_ClusterR_fuzzy_and_stats`, data, eps, fuzzy)
}

isolation <- function(dissim_mat_subset, x) {
.Call('ClusterR_isolation', PACKAGE = 'ClusterR', dissim_mat_subset, x)
.Call(`_ClusterR_isolation`, dissim_mat_subset, x)
}

ClaraMedoids <- function(data, clusters, method, samples, sample_size, minkowski_p = 1.0, threads = 1L, verbose = FALSE, swap_phase = FALSE, fuzzy = FALSE, seed = 1L) {
.Call('ClusterR_ClaraMedoids', PACKAGE = 'ClusterR', data, clusters, method, samples, sample_size, minkowski_p, threads, verbose, swap_phase, fuzzy, seed)
.Call(`_ClusterR_ClaraMedoids`, data, clusters, method, samples, sample_size, minkowski_p, threads, verbose, swap_phase, fuzzy, seed)
}

predict_medoids <- function(data, method, MEDOIDS, minkowski_p = 1.0, threads = 1L, fuzzy = FALSE, eps = 1.0e-6) {
.Call('ClusterR_predict_medoids', PACKAGE = 'ClusterR', data, method, MEDOIDS, minkowski_p, threads, fuzzy, eps)
.Call(`_ClusterR_predict_medoids`, data, method, MEDOIDS, minkowski_p, threads, fuzzy, eps)
}

split_rcpp_lst <- function(lst) {
.Call('ClusterR_split_rcpp_lst', PACKAGE = 'ClusterR', lst)
.Call(`_ClusterR_split_rcpp_lst`, lst)
}

OptClust <- function(data, iter_clust, method, clara = FALSE, samples = 5L, sample_size = 0.001, minkowski_p = 1.0, criterion = "dissimilarity", threads = 1L, swap_phase = FALSE, verbose = FALSE, seed = 1L) {
.Call('ClusterR_OptClust', PACKAGE = 'ClusterR', data, iter_clust, method, clara, samples, sample_size, minkowski_p, criterion, threads, swap_phase, verbose, seed)
.Call(`_ClusterR_OptClust`, data, iter_clust, method, clara, samples, sample_size, minkowski_p, criterion, threads, swap_phase, verbose, seed)
}

set_seed <- function(seed) {
invisible(.Call('ClusterR_set_seed', PACKAGE = 'ClusterR', seed))
invisible(.Call(`_ClusterR_set_seed`, seed))
}

cluster_indices <- function(CLUSTER) {
.Call('ClusterR_cluster_indices', PACKAGE = 'ClusterR', CLUSTER)
.Call(`_ClusterR_cluster_indices`, CLUSTER)
}

check_NaN_Inf <- function(x) {
.Call('ClusterR_check_NaN_Inf', PACKAGE = 'ClusterR', x)
.Call(`_ClusterR_check_NaN_Inf`, x)
}

calc_silhouette <- function(intra, outer) {
.Call('ClusterR_calc_silhouette', PACKAGE = 'ClusterR', intra, outer)
.Call(`_ClusterR_calc_silhouette`, intra, outer)
}

sample_vec <- function(num_elem, start, end, replace) {
.Call('ClusterR_sample_vec', PACKAGE = 'ClusterR', num_elem, start, end, replace)
.Call(`_ClusterR_sample_vec`, num_elem, start, end, replace)
}

squared_norm <- function(x) {
.Call('ClusterR_squared_norm', PACKAGE = 'ClusterR', x)
.Call(`_ClusterR_squared_norm`, x)
}

MinMat <- function(x) {
.Call('ClusterR_MinMat', PACKAGE = 'ClusterR', x)
.Call(`_ClusterR_MinMat`, x)
}

WCSS <- function(vec, centroids) {
.Call('ClusterR_WCSS', PACKAGE = 'ClusterR', vec, centroids)
.Call(`_ClusterR_WCSS`, vec, centroids)
}

validate_centroids <- function(data, init_centroids) {
.Call('ClusterR_validate_centroids', PACKAGE = 'ClusterR', data, init_centroids)
.Call(`_ClusterR_validate_centroids`, data, init_centroids)
}

kmeans_pp_dist <- function(vec, centroid) {
.Call('ClusterR_kmeans_pp_dist', PACKAGE = 'ClusterR', vec, centroid)
.Call(`_ClusterR_kmeans_pp_dist`, vec, centroid)
}

kmeans_pp_init <- function(data, clusters, medoids = FALSE) {
.Call('ClusterR_kmeans_pp_init', PACKAGE = 'ClusterR', data, clusters, medoids)
.Call(`_ClusterR_kmeans_pp_init`, data, clusters, medoids)
}

norm_fuzzy <- function(vec, eps) {
.Call('ClusterR_norm_fuzzy', PACKAGE = 'ClusterR', vec, eps)
.Call(`_ClusterR_norm_fuzzy`, vec, eps)
}

quantile_value <- function(x, clusters) {
.Call('ClusterR_quantile_value', PACKAGE = 'ClusterR', x, clusters)
.Call(`_ClusterR_quantile_value`, x, clusters)
}

duplicated_flag <- function(x) {
.Call('ClusterR_duplicated_flag', PACKAGE = 'ClusterR', x)
.Call(`_ClusterR_duplicated_flag`, x)
}

quantile_init_rcpp <- function(data, sample_rows, clusters) {
.Call('ClusterR_quantile_init_rcpp', PACKAGE = 'ClusterR', data, sample_rows, clusters)
.Call(`_ClusterR_quantile_init_rcpp`, data, sample_rows, clusters)
}

check_medoids <- function(data, clust, tol = 0.5) {
.Call('ClusterR_check_medoids', PACKAGE = 'ClusterR', data, clust, tol)
.Call(`_ClusterR_check_medoids`, data, clust, tol)
}

SCALE <- function(data, mean_center = TRUE, sd_scale = TRUE) {
.Call('ClusterR_SCALE', PACKAGE = 'ClusterR', data, mean_center, sd_scale)
.Call(`_ClusterR_SCALE`, data, mean_center, sd_scale)
}

0 comments on commit ea12e3f

Please sign in to comment.