library(readxl)
cmcData <- read_excel(path = "datakanker.xlsx")
diagnosis <- as.numeric(cmcData$diagnosis == "M")
cmcData$diagnosis <- diagnosis
cmcData
## # A tibble: 569 × 32
##          id diagnosis radius_m…¹ textu…² perim…³ area_…⁴ smoot…⁵ compa…⁶ conca…⁷
##       <dbl>     <dbl>      <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>   <dbl>
##  1   842302         1       18.0    10.4   123.    1001   0.118   0.278   0.300 
##  2   842517         1       20.6    17.8   133.    1326   0.0847  0.0786  0.0869
##  3 84300903         1       19.7    21.2   130     1203   0.110   0.160   0.197 
##  4 84348301         1       11.4    20.4    77.6    386.  0.142   0.284   0.241 
##  5 84358402         1       20.3    14.3   135.    1297   0.100   0.133   0.198 
##  6   843786         1       12.4    15.7    82.6    477.  0.128   0.17    0.158 
##  7   844359         1       18.2    20.0   120.    1040   0.0946  0.109   0.113 
##  8 84458202         1       13.7    20.8    90.2    578.  0.119   0.164   0.0937
##  9   844981         1       13      21.8    87.5    520.  0.127   0.193   0.186 
## 10 84501001         1       12.5    24.0    84.0    476.  0.119   0.240   0.227 
## # … with 559 more rows, 23 more variables: `concave points_mean` <dbl>,
## #   symmetry_mean <dbl>, fractal_dimension_mean <dbl>, radius_se <dbl>,
## #   texture_se <dbl>, perimeter_se <dbl>, area_se <dbl>, smoothness_se <dbl>,
## #   compactness_se <dbl>, concavity_se <dbl>, `concave points_se` <dbl>,
## #   symmetry_se <dbl>, fractal_dimension_se <dbl>, radius_worst <dbl>,
## #   texture_worst <dbl>, perimeter_worst <dbl>, area_worst <dbl>,
## #   smoothness_worst <dbl>, compactness_worst <dbl>, concavity_worst <dbl>, …
#data training diambil dari data index ke-1 sampai ke-100 dengan kolom ke-1 sampai ke-4
training <- cmcData[1:100,1:4 ]
#untuk testing kolom yang dipakai adalah kolom ke-1 sampai ke-3
testing <- cmcData[101:nrow(cmcData),1:3]
#untuk validasi kolom yang dipakai adalah kolom ke-4
validasi <- cmcData[101:nrow(cmcData),4]
#data_research yang digunakan adalah kolom 4(texture_mean) dan 5(perimeter_mean)
data_research <- cmcData[101:nrow(cmcData),c(5,4)]
training 
## # A tibble: 100 × 4
##          id diagnosis radius_mean texture_mean
##       <dbl>     <dbl>       <dbl>        <dbl>
##  1   842302         1        18.0         10.4
##  2   842517         1        20.6         17.8
##  3 84300903         1        19.7         21.2
##  4 84348301         1        11.4         20.4
##  5 84358402         1        20.3         14.3
##  6   843786         1        12.4         15.7
##  7   844359         1        18.2         20.0
##  8 84458202         1        13.7         20.8
##  9   844981         1        13           21.8
## 10 84501001         1        12.5         24.0
## # … with 90 more rows
testing
## # A tibble: 469 × 3
##        id diagnosis radius_mean
##     <dbl>     <dbl>       <dbl>
##  1 862717         1       13.6 
##  2 862722         0        6.98
##  3 862965         0       12.2 
##  4 862980         0        9.88
##  5 862989         0       10.5 
##  6 863030         1       13.1 
##  7 863031         0       11.6 
##  8 863270         0       12.4 
##  9  86355         1       22.3 
## 10 864018         0       11.3 
## # … with 459 more rows
validasi
## # A tibble: 469 × 1
##    texture_mean
##           <dbl>
##  1         25.0
##  2         13.4
##  3         20.5
##  4         19.4
##  5         19.3
##  6         15.6
##  7         18.3
##  8         18.5
##  9         19.7
## 10         21.3
## # … with 459 more rows
data_research
## # A tibble: 469 × 2
##    perimeter_mean texture_mean
##             <dbl>        <dbl>
##  1           88.0         25.0
##  2           43.8         13.4
##  3           77.2         20.5
##  4           64.0         19.4
##  5           67.4         19.3
##  6           87.2         15.6
##  7           75.2         18.3
##  8           79.0         18.5
##  9          153.          19.7
## 10           72.5         21.3
## # … with 459 more rows
## Define interval of data
range.data <-apply(training, 2, range)
range.data
##            id diagnosis radius_mean texture_mean
## [1,]    85715         0       8.196        10.38
## [2,] 86135502         1      25.220        27.54
## Set the method and its parameters,
## for example, we use Wang and Mendel's algorithm
method.type <- "WM"
control <- list(num.labels = 15, type.mf = "GAUSSIAN", type.defuz = "WAM",
type.tnorm = "MIN", type.snorm = "MAX", type.implication.func = "ZADEH",
name = "sim-0")
library(frbs)
## Learning step: Generate an FRBS model
object.reg <- frbs.learn(training, range.data, method.type, control)
## Predicting step: Predict for newdata
res.test <- predict(object.reg, testing)
## [1] "note: Some of your new data are out of the previously specified range"
## [1] "note: Some of your new data are out of the previously specified range"
## Display the FRBS model
summary(object.reg)
## The name of model:  sim-0 
## Model was trained using:  WM 
## The names of attributes:  id diagnosis radius_mean texture_mean 
## The interval of training data:  
##           id diagnosis radius_mean texture_mean
## min    85715         0       8.196        10.38
## max 86135502         1      25.220        27.54
## Type of FRBS model: 
## [1] "MAMDANI"
## Type of membership functions: 
## [1] "GAUSSIAN"
## Type of t-norm method: 
## [1] "Standard t-norm (min)"
## Type of s-norm method: 
## [1] "Standard s-norm"
## Type of defuzzification technique: 
## [1] "Weighted average method"
## Type of implication function: 
## [1] "ZADEH"
## The names of linguistic terms on the input variables:  
##  [1] "v.1_a.1"  "v.1_a.2"  "v.1_a.3"  "v.1_a.4"  "v.1_a.5"  "v.1_a.6" 
##  [7] "v.1_a.7"  "v.1_a.8"  "v.1_a.9"  "v.1_a.10" "v.1_a.11" "v.1_a.12"
## [13] "v.1_a.13" "v.1_a.14" "v.1_a.15" "v.2_a.1"  "v.2_a.2"  "v.2_a.3" 
## [19] "v.2_a.4"  "v.2_a.5"  "v.2_a.6"  "v.2_a.7"  "v.2_a.8"  "v.2_a.9" 
## [25] "v.2_a.10" "v.2_a.11" "v.2_a.12" "v.2_a.13" "v.2_a.14" "v.2_a.15"
## [31] "v.3_a.1"  "v.3_a.2"  "v.3_a.3"  "v.3_a.4"  "v.3_a.5"  "v.3_a.6" 
## [37] "v.3_a.7"  "v.3_a.8"  "v.3_a.9"  "v.3_a.10" "v.3_a.11" "v.3_a.12"
## [43] "v.3_a.13" "v.3_a.14" "v.3_a.15"
## The parameter values of membership function on the input variable (normalized):  
##      v.1_a.1    v.1_a.2   v.1_a.3   v.1_a.4   v.1_a.5   v.1_a.6   v.1_a.7
## [1,]   5.000 5.00000000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,]   0.000 0.07142857 0.1428571 0.2142857 0.2857143 0.3571429 0.4285714
## [3,]   0.025 0.02500000 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000
## [4,]      NA         NA        NA        NA        NA        NA        NA
## [5,]      NA         NA        NA        NA        NA        NA        NA
##      v.1_a.8   v.1_a.9  v.1_a.10  v.1_a.11  v.1_a.12  v.1_a.13  v.1_a.14
## [1,]   5.000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,]   0.500 0.5714286 0.6428571 0.7142857 0.7857143 0.8571429 0.9285714
## [3,]   0.025 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000
## [4,]      NA        NA        NA        NA        NA        NA        NA
## [5,]      NA        NA        NA        NA        NA        NA        NA
##      v.1_a.15 v.2_a.1    v.2_a.2   v.2_a.3   v.2_a.4   v.2_a.5   v.2_a.6
## [1,]    5.000   5.000 5.00000000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,]    1.000   0.000 0.07142857 0.1428571 0.2142857 0.2857143 0.3571429
## [3,]    0.025   0.025 0.02500000 0.0250000 0.0250000 0.0250000 0.0250000
## [4,]       NA      NA         NA        NA        NA        NA        NA
## [5,]       NA      NA         NA        NA        NA        NA        NA
##        v.2_a.7 v.2_a.8   v.2_a.9  v.2_a.10  v.2_a.11  v.2_a.12  v.2_a.13
## [1,] 5.0000000   5.000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,] 0.4285714   0.500 0.5714286 0.6428571 0.7142857 0.7857143 0.8571429
## [3,] 0.0250000   0.025 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000
## [4,]        NA      NA        NA        NA        NA        NA        NA
## [5,]        NA      NA        NA        NA        NA        NA        NA
##       v.2_a.14 v.2_a.15 v.3_a.1    v.3_a.2   v.3_a.3   v.3_a.4   v.3_a.5
## [1,] 5.0000000    5.000   5.000 5.00000000 5.0000000 5.0000000 5.0000000
## [2,] 0.9285714    1.000   0.000 0.07142857 0.1428571 0.2142857 0.2857143
## [3,] 0.0250000    0.025   0.025 0.02500000 0.0250000 0.0250000 0.0250000
## [4,]        NA       NA      NA         NA        NA        NA        NA
## [5,]        NA       NA      NA         NA        NA        NA        NA
##        v.3_a.6   v.3_a.7 v.3_a.8   v.3_a.9  v.3_a.10  v.3_a.11  v.3_a.12
## [1,] 5.0000000 5.0000000   5.000 5.0000000 5.0000000 5.0000000 5.0000000
## [2,] 0.3571429 0.4285714   0.500 0.5714286 0.6428571 0.7142857 0.7857143
## [3,] 0.0250000 0.0250000   0.025 0.0250000 0.0250000 0.0250000 0.0250000
## [4,]        NA        NA      NA        NA        NA        NA        NA
## [5,]        NA        NA      NA        NA        NA        NA        NA
##       v.3_a.13  v.3_a.14 v.3_a.15
## [1,] 5.0000000 5.0000000    5.000
## [2,] 0.8571429 0.9285714    1.000
## [3,] 0.0250000 0.0250000    0.025
## [4,]        NA        NA       NA
## [5,]        NA        NA       NA
## The names of linguistic terms on the output variable:  
##  [1] "c.1"  "c.2"  "c.3"  "c.4"  "c.5"  "c.6"  "c.7"  "c.8"  "c.9"  "c.10"
## [11] "c.11" "c.12" "c.13" "c.14" "c.15"
## The parameter values of membership function on the output variable (normalized):  
##        c.1        c.2       c.3       c.4       c.5       c.6       c.7   c.8
## [1,] 5.000 5.00000000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000 5.000
## [2,] 0.000 0.07142857 0.1428571 0.2142857 0.2857143 0.3571429 0.4285714 0.500
## [3,] 0.025 0.02500000 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000 0.025
## [4,]    NA         NA        NA        NA        NA        NA        NA    NA
## [5,]    NA         NA        NA        NA        NA        NA        NA    NA
##            c.9      c.10      c.11      c.12      c.13      c.14  c.15
## [1,] 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000 5.0000000 5.000
## [2,] 0.5714286 0.6428571 0.7142857 0.7857143 0.8571429 0.9285714 1.000
## [3,] 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000 0.0250000 0.025
## [4,]        NA        NA        NA        NA        NA        NA    NA
## [5,]        NA        NA        NA        NA        NA        NA    NA
## The number of linguistic terms on each variables 
##      id diagnosis radius_mean texture_mean
## [1,] 15        15          15           15
## The fuzzy IF-THEN rules:  
##    V1 V2 V3       V4  V5        V6 V7       V8  V9         V10 V11      V12
## 1  IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.9
## 2  IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.8
## 3  IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.7
## 4  IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 5  IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.4
## 6  IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.7
## 7  IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 8  IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.6
## 9  IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.11
## 10 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.5
## 11 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.2
## 12 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.4
## 13 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.4
## 14 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.6
## 15 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 16 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 17 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.9
## 18 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.5
## 19 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.7
## 20 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.6
## 21 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.8
## 22 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.3
## 23 IF id is v.1_a.15 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.4
## 24 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.9
## 25 IF id is v.1_a.15 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.1
## 26 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.4
## 27 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.6
## 28 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 29 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.11
## 30 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.9
## 31 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.7
## 32 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.6
## 33 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.2
## 34 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.5
## 35 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.5
## 36 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 37 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.11
## 38 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.5
## 39 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.2
## 40 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.2
## 41 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.6
## 42 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.12
## 43 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.1
## 44 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.4
## 45 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.1
## 46 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 47 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.7
## 48 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.8
## 49 IF id is  v.1_a.2 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 50 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.8
## 51 IF id is  v.1_a.2 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 52 IF id is  v.1_a.2 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.2
## 53 IF id is  v.1_a.2 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.7
## 54 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.3
## 55 IF id is  v.1_a.2 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.4
## 56 IF id is  v.1_a.2 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.9
## 57 IF id is  v.1_a.2 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.11
## 58 IF id is  v.1_a.2 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 59 IF id is  v.1_a.2 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.15
## 60 IF id is  v.1_a.2 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 61 IF id is  v.1_a.2 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.4
## 62 IF id is  v.1_a.2 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.7
## 63 IF id is  v.1_a.2 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 64 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.6
## 65 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 66 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 67 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.6
## 68 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.8
## 69 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 70 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.5
## 71 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.4
## 72 IF id is  v.1_a.2 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.9
## 73 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.4
## 74 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.7
## 75 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 76 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.8
## 77 IF id is  v.1_a.1 and diagnosis is  v.2_a.1 and radius_mean  is  v.3_a.4
## 78 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.6
## 79 IF id is  v.1_a.1 and diagnosis is v.2_a.15 and radius_mean  is v.3_a.10
## 80 IF id is v.1_a.15 and diagnosis is v.2_a.15 and radius_mean  is  v.3_a.6
##     V13          V14 V15  V16
## 1  THEN texture_mean  is  c.1
## 2  THEN texture_mean  is c.10
## 3  THEN texture_mean  is c.11
## 4  THEN texture_mean  is c.14
## 5  THEN texture_mean  is c.10
## 6  THEN texture_mean  is c.13
## 7  THEN texture_mean  is c.10
## 8  THEN texture_mean  is c.10
## 9  THEN texture_mean  is  c.7
## 10 THEN texture_mean  is  c.9
## 11 THEN texture_mean  is  c.4
## 12 THEN texture_mean  is  c.3
## 13 THEN texture_mean  is  c.8
## 14 THEN texture_mean  is c.15
## 15 THEN texture_mean  is c.13
## 16 THEN texture_mean  is  c.6
## 17 THEN texture_mean  is  c.8
## 18 THEN texture_mean  is  c.8
## 19 THEN texture_mean  is  c.7
## 20 THEN texture_mean  is c.10
## 21 THEN texture_mean  is c.12
## 22 THEN texture_mean  is c.10
## 23 THEN texture_mean  is  c.8
## 24 THEN texture_mean  is  c.9
## 25 THEN texture_mean  is  c.6
## 26 THEN texture_mean  is  c.7
## 27 THEN texture_mean  is c.12
## 28 THEN texture_mean  is  c.8
## 29 THEN texture_mean  is  c.4
## 30 THEN texture_mean  is  c.5
## 31 THEN texture_mean  is c.12
## 32 THEN texture_mean  is  c.5
## 33 THEN texture_mean  is  c.9
## 34 THEN texture_mean  is c.10
## 35 THEN texture_mean  is c.12
## 36 THEN texture_mean  is  c.8
## 37 THEN texture_mean  is c.11
## 38 THEN texture_mean  is c.10
## 39 THEN texture_mean  is c.10
## 40 THEN texture_mean  is  c.7
## 41 THEN texture_mean  is  c.9
## 42 THEN texture_mean  is c.11
## 43 THEN texture_mean  is  c.2
## 44 THEN texture_mean  is  c.9
## 45 THEN texture_mean  is c.10
## 46 THEN texture_mean  is c.11
## 47 THEN texture_mean  is  c.9
## 48 THEN texture_mean  is  c.6
## 49 THEN texture_mean  is  c.5
## 50 THEN texture_mean  is c.13
## 51 THEN texture_mean  is  c.1
## 52 THEN texture_mean  is  c.3
## 53 THEN texture_mean  is  c.4
## 54 THEN texture_mean  is  c.5
## 55 THEN texture_mean  is  c.6
## 56 THEN texture_mean  is  c.6
## 57 THEN texture_mean  is c.12
## 58 THEN texture_mean  is  c.7
## 59 THEN texture_mean  is c.13
## 60 THEN texture_mean  is c.14
## 61 THEN texture_mean  is  c.5
## 62 THEN texture_mean  is  c.9
## 63 THEN texture_mean  is  c.4
## 64 THEN texture_mean  is c.11
## 65 THEN texture_mean  is  c.7
## 66 THEN texture_mean  is c.13
## 67 THEN texture_mean  is  c.5
## 68 THEN texture_mean  is  c.9
## 69 THEN texture_mean  is  c.5
## 70 THEN texture_mean  is  c.7
## 71 THEN texture_mean  is  c.4
## 72 THEN texture_mean  is  c.8
## 73 THEN texture_mean  is  c.5
## 74 THEN texture_mean  is c.10
## 75 THEN texture_mean  is c.10
## 76 THEN texture_mean  is  c.7
## 77 THEN texture_mean  is  c.8
## 78 THEN texture_mean  is c.12
## 79 THEN texture_mean  is  c.9
## 80 THEN texture_mean  is c.11
## Plot the membership functions
plotMF(object.reg)

pred <- predict(object.reg, testing)
## [1] "note: Some of your new data are out of the previously specified range"
## [1] "note: Some of your new data are out of the previously specified range"
str(pred)
##  num [1:469, 1] 20.3 16.3 17.1 17.9 15.6 ...
str(data_research)
## tibble [469 × 2] (S3: tbl_df/tbl/data.frame)
##  $ perimeter_mean: num [1:469] 88 43.8 77.2 64 67.4 ...
##  $ texture_mean  : num [1:469] 25 13.4 20.5 19.4 19.3 ...
data_research$predict <- pred
data_research
## # A tibble: 469 × 3
##    perimeter_mean texture_mean predict[,1]
##             <dbl>        <dbl>       <dbl>
##  1           88.0         25.0        20.3
##  2           43.8         13.4        16.3
##  3           77.2         20.5        17.1
##  4           64.0         19.4        17.9
##  5           67.4         19.3        15.6
##  6           87.2         15.6        20.2
##  7           75.2         18.3        17.1
##  8           79.0         18.5        17.2
##  9          153.          19.7        22.6
## 10           72.5         21.3        17.0
## # … with 459 more rows
data_research$residual <- (data_research$perimeter_mean-data_research$texture_mean )
data_research
## # A tibble: 469 × 4
##    perimeter_mean texture_mean predict[,1] residual
##             <dbl>        <dbl>       <dbl>    <dbl>
##  1           88.0         25.0        20.3     63.1
##  2           43.8         13.4        16.3     30.4
##  3           77.2         20.5        17.1     56.7
##  4           64.0         19.4        17.9     44.6
##  5           67.4         19.3        15.6     48.1
##  6           87.2         15.6        20.2     71.6
##  7           75.2         18.3        17.1     56.8
##  8           79.0         18.5        17.2     60.5
##  9          153.          19.7        22.6    133. 
## 10           72.5         21.3        17.0     51.2
## # … with 459 more rows
mean(data_research$predict != data_research$texture_mean)
## [1] 1
accuracy <- table(data_research$predict, data_research$texture_mean)
sum(diag(accuracy))/sum(accuracy)
## [1] 0.004264392