Python 如何利用支持向量机对不平衡数据集进行分类
我正在使用支持向量机,我的数据集是不平衡的。我得到的结果是,它将0类划分为99%,将1类划分为1%。是否有任何方法可以使用SVM正确分类不平衡数据集。有许多方法可以使用不平衡数据集。我最常用的是以下几种:Python 如何利用支持向量机对不平衡数据集进行分类,python,svm,imbalanced-data,Python,Svm,Imbalanced Data,我正在使用支持向量机,我的数据集是不平衡的。我得到的结果是,它将0类划分为99%,将1类划分为1%。是否有任何方法可以使用SVM正确分类不平衡数据集。有许多方法可以使用不平衡数据集。我最常用的是以下几种: 错误输出惩罚:如果类A的样本数远少于类B,则您可以增加类A错误分类的惩罚 使用模块。它基本上采用给定类中两个点的凸组合,并为其指定与两个选定点相同的标签 其他可能的选择包括查看不同的评估指标和验证策略,如。有几种方法可以调整不平衡的数据集,以将其用于回归/分类。这里我将描述过采样和欠采样方法
A
的样本数远少于类B
,则您可以增加类A
错误分类的惩罚其他可能的选择包括查看不同的评估指标和验证策略,如。有几种方法可以调整不平衡的数据集,以将其用于回归/分类。这里我将描述过采样和欠采样方法 在过采样中,即使数据中有完全相同的行,也会复制少数类的数据。在欠采样中选择所有具有类别1的数据,并选择具有标签0的相同数量的样本(只有在样本数量较多时,这才是一个好选项) 你也可以将两者混合使用。比如:
def obtain_equal_idx(idx_0, idx_1, n_samples, ratio_unbalance):
idx_1_repeated = np.repeat(idx_1, (n_samples // len(idx_1)) + 1)
idx_0s = np.random.choice(idx_0, ratio_unbalance * (n_samples // 2), replace=False)
idx_delay = np.random.choice(idx_1_repeated, n_samples // 2, replace=False)
return np.concatenate([idx_0s, idx_delay])
idx_0
是整个数据集的索引,标记为0,idx_1
与标记为1的数据相同,n_samples
是您想要获得的样本数,ratio_
是一个数字(通常为2或3)这使得您得到的数据有点不平衡,因此您的模型知道数据不是完全平衡的