怎样开辟针对不平衡分类的资本敏感神经网络 python

[复制链接]
发表于 2026-1-30 11:49:03 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
怎样开辟针对不平衡分类的资本敏感神经网络

深度学习神经网络是一类机动的呆板学习算法,可以在各种题目上体现良好。
神经网络利用偏差反向流传算法举行练习,该算法涉及盘算模子在练习数据集上产生的偏差,并根据这些偏差的比例更新模子权重。这种练习方法的范围性在于,每个种别的示例都被视为雷同,对于不平衡的数据集,这意味着模子对一个种别的顺应性要强得多,而对另一个种别的顺应性则弱得多。
反向流传算法可以更新,以根据种别的告急性对错误分类偏差举行加权,称为加权神经网络或资本敏感神经网络。这可以使模子在种别分布严峻倾斜的数据会集更加关注少数种别的样本,而不是多数种别的样本。
在本教程中,您将发现用于不平衡分类的加权神经网络。
完资本教程后,您将相识:

      
  • 尺度神经网络算法为何不支持不平衡分类。  
  • 怎样修改神经网络练习算法,以根据种别告急性对错误分类偏差举行加权。  
  • 怎样为神经网络设置类权重并评估对模子性能的影响。
教程概述

本教程分为四个部门:
      
  • 不平衡分类数据集  
  • Keras 中的神经网络模子  
  • 深度学习办理不平衡分类题目  
  • 利用 Keras 的加权神经网络
不平衡分类数据集

在深入研究怎样修改神经网络以办理不平衡分类题目之前,让我们起首界说一个不平衡分类数据集。
我们可以利用make_classification() 函数来界说一个合成的不平衡二分类数据集。我们将天生 10,000 个示例,少数类与多数类的比例约为 1:100。
  1. ...
  2. # define dataset
  3. X, y = make_classification(n_samples=10000, n_features=2, n_redundant=0,
  4.         n_clusters_per_class=2, weights=[0.99], flip_y=0, random_state=4)
复制代码
一旦天生,我们可以总结类分布以确认数据集是按照我们预期创建的。
  1. ...
  2. # summarize class distribution
  3. counter = Counter(y)
  4. print(counter)
复制代码
末了,我们可以创建示例的散点图并按类标签对其举行着色,以资助明确从该数据集对示例举行分类的寻衅。
  1. ...
  2. # scatter plot of examples by class label
  3. for label, _ in counter.items():
  4.         row_ix = where(y == label)[0]
  5.         pyplot.scatter(X[row_ix, 0], X[row_ix, 1], label=str(label))
  6. pyplot.legend()
  7. pyplot.show()
复制代码
综合以上几点,天生合成数据集和绘制示例的完备示比方下所示。
  1. # Generate and plot a synthetic imbalanced classification dataset
  2. from collections import Counter
  3. from sklearn.datasets import make_classification
  4. from matplotlib import pyplot
  5. from numpy import where
  6. # define dataset
  7. X, y = make_classification(n_samples=10000, n_features=2, n_redundant=0,
  8.         n_clusters_per_class=2, weights=[0.99], flip_y=0, random_state=4)
  9. # summarize class distribution
  10. counter = Counter(y)
  11. print(counter)
  12. # scatter plot of examples by class label
  13. for label, _ in counter.items():
  14.         row_ix = where(y == label)[0]
  15.         pyplot.scatte
复制代码
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表