# UfsCov: UfsCov algorithm for unsupervised feature selection In SFtools: Space Filling Based Tools for Data Mining

## Description

Applies the UfsCov algorithm based on the space filling concept, by using a sequatial forward search (SFS).

## Usage

 `1` ```UfsCov(data) ```

## Arguments

 `data` Data of class: `matrix` or `data.frame`.

## Details

Since the algorithm is based on pairwise distances, and according to the computing power of your machine, large number of data points can take much time and needs more memory. See `UfsCov_par` for parellel computing, or `UfsCov_ff` for memory efficient storage of large data on disk and fast access (by using the `ff` and the `ffbase` packages).

## Value

A list of two elements:

• `CovD` a vector containing the coverage measure of each step of the SFS.

• `IdR` a vector containing the added variables during the selection procedure.

## Note

The algorithm does not deal with missing values and constant features. Please make sure to remove them.

## Author(s)

Mohamed Laib Mohamed.Laib@unil.ch

## References

M. Laib and M. Kanevski (2017). Unsupervised Feature Selection Based on Space Filling Concept, arXiv:1706.08894.

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42``` ```infinity<-Infinity(n=800) Results<- UfsCov(infinity) cou<-colnames(infinity) nom<-cou[Results[]] par(mfrow=c(1,1), mar=c(5,5,2,2)) names(Results[])<-cou[Results[]] plot(Results[] ,pch=16,cex=1,col="blue", axes = FALSE, xlab = "Added Features", ylab = "Coverage measure") lines(Results[] ,cex=2,col="blue") grid(lwd=1.5,col="gray" ) box() axis(2) axis(1,1:length(nom),nom) which.min(Results[]) ## Not run: #### UfsCov on the Butterfly dataset #### require(IDmining) N <- 1000 raw_dat <- Butterfly(N) dat<-raw_dat[,-9] Results<- UfsCov(dat) cou<-colnames(dat) nom<-cou[Results[]] par(mfrow=c(1,1), mar=c(5,5,2,2)) names(Results[])<-cou[Results[]] plot(Results[] ,pch=16,cex=1,col="blue", axes = FALSE, xlab = "Added Features", ylab = "Coverage measure") lines(Results[] ,cex=2,col="blue") grid(lwd=1.5,col="gray" ) box() axis(2) axis(1,1:length(nom),nom) which.min(Results[]) ## End(Not run) ```

### Example output  ```================================================================================x2
2