R 中的任何包都可以执行 Multi Class 、过采样、欠采样、两者和 SMOTE?
Any package in R which can Do Multi Class ,Oversampling,Under sampling,Both And SMOTE?
我正在寻找可以执行多重class 过采样、欠采样或这两种技术的软件包。我尝试使用 ROSE
包,但它仅适用于二进制 class.
我的目标变量有 4 个 class 并且有 %。
"0"-70% "1"-15% "2"-10% "3"-5% "4"-5%
我相信您应该能够使用 Caret 包对两个以上的 class 进行下采样或上采样。
如果 caret 没有,也许最好的办法是编写自定义代码,从变量 classess 中随机抽取相等的数字。
通常,在实践中,下采样或上采样是针对二进制 classifications 的。您可能需要考虑单一与全部方法。如果你随后进行下采样,你必须调整回你的概率,因此它们不受 classes 之间的各种下采样率的影响。
更新示例代码:
y = c("A", "A","A", "B", "B", "C", "C", "C","C", "C", "C")
x = c(1,2,1,2,3,4,5,4,5,6,7)
data=cbind(y=y,x1=x)
fin=NULL
for (i in unique(y)) {
sub=subset(data, y==i)
sam=sub[sample(nrow(sub), 2), ]
fin=rbind(fin, sam)}
结果:
y x1
A 2
A 1
B 3
B 2
C 6
C 7
我已经从这里的每个 Y 中抽取了 2 个 - 但你应该把最小的 class 的数字放在你的 Y 中,而不是 2 个。
您可以试试 SMOTE。
如果 needed.So,大多数情况下,SMOTE 通过生成观察结果对数据进行过高或过低采样,smote out 执行任何其他采样技术。
这是 python.In R 中的一段代码,使用 SMOTE 均衡目标变量的水平分布有点困难,但可以一次考虑 2 类
from imblearn.over_sampling import SMOTE
sm = SMOTE(random_state=99, ratio = 1.0)
x_train, y_train = sm.fit_sample(X_var, target_class)
print(pandas.value_counts(y_train))#verify class distribution here
比率在这里是超参数。
希望对您有所帮助。
可以使用R UBL package。它有多种技术实现来对多类问题进行过采样,例如ADASYN等算法处理不平衡类.
我正在寻找可以执行多重class 过采样、欠采样或这两种技术的软件包。我尝试使用 ROSE
包,但它仅适用于二进制 class.
我的目标变量有 4 个 class 并且有 %。 "0"-70% "1"-15% "2"-10% "3"-5% "4"-5%
我相信您应该能够使用 Caret 包对两个以上的 class 进行下采样或上采样。
如果 caret 没有,也许最好的办法是编写自定义代码,从变量 classess 中随机抽取相等的数字。
通常,在实践中,下采样或上采样是针对二进制 classifications 的。您可能需要考虑单一与全部方法。如果你随后进行下采样,你必须调整回你的概率,因此它们不受 classes 之间的各种下采样率的影响。
更新示例代码:
y = c("A", "A","A", "B", "B", "C", "C", "C","C", "C", "C")
x = c(1,2,1,2,3,4,5,4,5,6,7)
data=cbind(y=y,x1=x)
fin=NULL
for (i in unique(y)) {
sub=subset(data, y==i)
sam=sub[sample(nrow(sub), 2), ]
fin=rbind(fin, sam)}
结果:
y x1
A 2
A 1
B 3
B 2
C 6
C 7
我已经从这里的每个 Y 中抽取了 2 个 - 但你应该把最小的 class 的数字放在你的 Y 中,而不是 2 个。
您可以试试 SMOTE。 如果 needed.So,大多数情况下,SMOTE 通过生成观察结果对数据进行过高或过低采样,smote out 执行任何其他采样技术。 这是 python.In R 中的一段代码,使用 SMOTE 均衡目标变量的水平分布有点困难,但可以一次考虑 2 类
from imblearn.over_sampling import SMOTE
sm = SMOTE(random_state=99, ratio = 1.0)
x_train, y_train = sm.fit_sample(X_var, target_class)
print(pandas.value_counts(y_train))#verify class distribution here
比率在这里是超参数。
希望对您有所帮助。
可以使用R UBL package。它有多种技术实现来对多类问题进行过采样,例如ADASYN等算法处理不平衡类.