书中的第二个例子是利用朴素贝叶斯算法判断垃圾短信。 首先载入需要用到的包: library(tidyverse) # 清洗数据 library(here) # 设置数据文件路径 library(tidytext) # 分词及创建稀疏矩阵 library(e1071) # 建模 library(gmodels) # 评估模型 在清洗数据的时候遇到一定的困难,因为书中是用tm包进行文本处理的,而我完全没有用过这个包(甚至也没有装这个包),所以看书中的代码就只能凭感觉脑补了。不过,还好,最后还是成功写出了tidyverse化的数据清洗代码,如下: sms <- read_csv(here('content', 'post', 'data', '02-sms_spam.csv')) %>% mutate(type = factor(type), row = row_number()) %>% unnest_tokens(word, text) %>% anti_join(stop_words) %>% filter(!str_detect(word, '\\d')) %>% cast_sparse(row, word) %>% as.matrix() %>% as_tibble() %>% select(which(colSums(.) > 4)) %>% bind_cols(read_csv(here('data', '02-sms_spam.csv')) %>% mutate(type = factor(type), row = row_number()) %>% unnest_tokens(word, text) %>% anti_join(stop_words) %>% filter(!str_detect(word, '\\d')) %>% select(-3) %>% distinct()) %>% mutate_if(is.

Continue reading

通过将《机器学习与R语言》一书中的代码tidyverse化,来学习这本书。 书中第一个例子是利用kNN算法来诊断乳腺癌。 首先载入需要用到的包: library(tidyverse) # 清洗数据 library(here) # 设置数据文件路径 library(knitr) # 呈现更好看的表格 library(kableExtra) # 同上 library(class) # 使用包中的knn()函数 library(gmodels) # 使用包中的CrossTable()函数 然后导入数据并清洗: wbcd <- read_csv(here('content', 'post', 'data', '01-wisc_bc_data.csv')) %>% select(-id) %>% mutate(diagnosis = factor(diagnosis, levels = c('B', 'M'), labels = c('Benign', 'Malignant'))) %>% mutate_if(is.numeric, ~ (.x - min(.x)) / (max(.x) - min(.x))) 首先使用here函数找到数据文件的路径,然后使用read_csv函数将其读入R中;随后通过select函数将id变量去掉;然后利用mutate函数将diagnosis变量改为因子型;最后利用mutate_if函数,将所有数值型的变量进行min-max标准化,这里用到了公式化的匿名函数,可以使代码更为简练。此时的数据是这样的: wbcd %>% head() %>% kable() %>% kable_styling(bootstrap_options = "striped", font_size = 12) %>% scroll_box(width = "100%") diagnosis radius_mean texture_mean perimeter_mean area_mean smoothness_mean compactness_mean concavity_mean concave points_mean symmetry_mean fractal_dimension_mean radius_se texture_se perimeter_se area_se smoothness_se compactness_se concavity_se concave points_se symmetry_se fractal_dimension_se radius_worst texture_worst perimeter_worst area_worst smoothness_worst compactness_worst concavity_worst concave points_worst symmetry_worst fractal_dimension_worst Malignant 0.

Continue reading

Author's picture

孟祥良

R语言爱好者, 心理学专业硕士 & FGO休闲玩家