SeaClass R软件包提供了分析分类问题的工具。特别是,可以使用专用工具来解决不平衡数据集的问题。SeaClass应用程序提供了一个易于使用的界面,只需要很少的R编程知识即可开始,并且可以使用RStudio Addins菜单启动。该应用程序允许用户通过简单地单击可用选项并与生成的结果进行交互来探索多种方法。用户可以选择下载他们希望进一步探索的任何程序的代码。SeaClass旨在为新手和高级R用户启动分析过程。请参阅下面的屏幕截图进行
安装说明
SeaClass应用程序依赖于多个R包。要安装SeaClass及其依赖项,请运行:
install.packages('devtools’)
devtools::install_github('ChrisDienes/SeaClass')
使用说明
步骤1.首先在R中加载和准备数据。一些一般建议:
- 数据集必须保存为R数据框对象。
- 数据集必须包含二进制响应变量(0/1,PASS / FAIL,A / B等)
- 所有其他变量必须是预测变量。
- 预测变量可以是数字,分类或因子。
- 包含太多预测变量可能会降低应用程序速度并降低性能。
- 当级别数超过10时,通常会忽略分类预测变量,因为它们往往具有不正确的影响。
- 缺少值是不允许的,并会抛出一个标志。请在启动应用程序之前删除或归档NA。
- 将观察(行)的数量保持为中等或小尺寸。
- 具有多行(> 10,000)或多列(> 30)的数据集可能会降低应用程序的交互式响应速度。
步骤2.完成数据准备后,通过从RStudio Addins下拉菜单加载SeaClass或从命令行加载SeaClass函数来启动应用程序。例如:
library(SeaClass)### Make some fake data:
X <- matrix(rnorm(10000,0,1),ncol=10,nrow=1000)
X[1:100,1:2] <- X[1:100,1:2] + 3
Y <- c(rep(1,100), rep(0,900))
Fake_Data <- data.frame(Y = Y , X)### Load the SeaClass rare failure data:
data("rareFailData")### Start the interactive GUI:
SeaClass()
如果应用程序无法加载,您可能需要先指定您喜欢的浏览器路径。例如:
options(browser = "C:/Program Files (x86)/Google/Chrome/Application/chrome.exe")
步骤3.用户可以在GUI中配置各种分析。分析运行后,用户可以查看结果,与结果交互(依赖于模块),保存基础R脚本或重新开始。应用程序中提供了其他帮助。有关这些步骤的一个描述,请参见上面的屏幕截图。
步骤4.除了SeaClass函数之外,库中还包含其他几个函数。例如:
### List available functions:
ls("package:SeaClass”)
### Note this is a sample data set:# data(rareFailData)### Note code_output is a support function for SeaClass, not for general use.### View help:
?accuracy_threshold#
## Run example from help file:### General Use: ###s
et.seed(123)
x <- c(rnorm(100,0,1),rnorm(100,2,1))
group <- c(rep(0,100),rep(2,100))
accuracy_threshold(x=x, group=group, pos_class=2)
accuracy_threshold(x=x, group=group, pos_class=0)
### Bagged Example ###
set.seed(123)
replicate_function = function(index){accuracy_threshold(x=x[index], group=group[index], pos_class=2)[[2]]}
sample_cuts <- replicate(100, { sample_index = sample.int(n=length(x),replace=TRUE)
replicate_function(index=sample_index)})
bagged_scores <- sapply(x, function(x) mean(x > sample_cuts))
unbagged_cut <- accuracy_threshold(x=x, group=group, pos_class=2)[[2]]
unbagged_scores <- ifelse(x > unbagged_cut, 1, 0)
# Compare AUC:
PRROC::roc.curve(scores.class0 = bagged_scores,weights.class0 = ifelse(group==2,1,0))[[2]]
PRROC::roc.curve(scores.class0 = unbagged_scores,weights.class0 = ifelse(group==2,1,0))[[2]]
bagged_prediction <- ifelse(bagged_scores > 0.50, 2, 0)
unbagged_prediction <- ifelse(x > unbagged_cut, 2, 0)
# Compare Confusion Matrix:
table(bagged_prediction, group)table(unbagged_prediction, group)