基于k-means和smote的不平衡学习过采样

kmeans-smote的Python项目详细描述


基于k-means和smote的不平衡学习过采样

PyPI versionBuild StatusDocs Statuscodecov

k-means-smote是一种针对类不平衡数据的过采样方法。它 通过在安全和 输入空间的关键区域。该方法避免了 噪音和有效地克服班级之间和班级内部的不平衡。

这个项目是k-means smote的python实现。它是 与scikit learn contrib项目兼容 imbalanced-learn

安装

依赖性

该实现在Python3.6下进行了测试,并与最新的 不平衡学习框架的发布:

  • 不平衡学习(>;=0.4.0,<;0.5)
  • numpy(numpy>;=1.13,<;1.16)
  • 科学套件学习(>;=0.19.0,<;0.21)

安装

pypi

pip install kmeans-smote

源代码

克隆此存储库并运行setup.py文件。使用以下命令 从github获取副本并安装所有依赖项的命令:

git clone https://github.com/felix-last/kmeans_smote.git
cd kmeans-smote
pip install .

文档

https://kmeans_smote.readthedocs.io找到api文档。作为 这个项目遵循不平衡的学习api,即imbalanced-learn documentation 可能也会有帮助。

示例用法

importnumpyasnpfromimblearn.datasetsimportfetch_datasetsfromkmeans_smoteimportKMeansSMOTEdatasets=fetch_datasets(filter_data=['oil'])X,y=datasets['oil']['data'],datasets['oil']['target'][print('Class {} has {} instances'.format(label,count))forlabel,countinzip(*np.unique(y,return_counts=True))]kmeans_smote=KMeansSMOTE(kmeans_args={'n_clusters':100},smote_args={'k_neighbors':10})X_resampled,y_resampled=kmeans_smote.fit_sample(X,y)[print('Class {} has {} instances after oversampling'.format(label,count))forlabel,countinzip(*np.unique(y_resampled,return_counts=True))]

预期输出:

Class -1 has 896 instances
Class 1 has 41 instances
Class -1 has 896 instances after oversampling
Class 1 has 896 instances after oversampling

看看imbalanced-learn pipelines 有效使用交叉验证。

关于

K-means smote分三步工作:

  1. 使用k-均值对整个输入空间进行聚类[1]。
  2. 将要生成的样本数分布到群集:
    1. 筛选出具有大量多数类的群集 样品。
    2. 将更多的合成样本分配给少数类 样本分布稀疏。
  3. 使用smote[2]对每个过滤的簇进行过采样。

贡献

如果工作方式与以下不同,请随时提交问题 预期。也欢迎拉取请求-只要确保测试 绿色,在提交之前运行pytest

引文

如果你在科学出版物中使用k-means smote,我们会 感谢以下引用 paper

@article{kmeans_smote,
    title = {Oversampling for Imbalanced Learning Based on K-Means and SMOTE},
    author = {Last, Felix and Douzas, Georgios and Bacao, Fernando},
    year = {2017},
    archivePrefix = "arXiv",
    eprint = "1711.00837",
    primaryClass = "cs.LG"
}

参考文献

[1]MacQueen,J.“一些分类和分析方法 多元观察〉,《第五届伯克利研讨会论文集》 关于数理统计和概率,1967年,第281-297页。

[2]Chawla,Nitesh V.等人“Smote:合成少数族裔过度抽样 技术〉,《人工智能研究杂志》,第16卷, 2002年1月,第321357页,doi:10.1613/jair.953。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用Hibernate替换一组记录的正确方法是什么   java调用存储过程时返回相同的记录   java创建一个ActionListener,逐步更新JPanel   java如何为这个WSDL工作wsimport我遇到了错误,我无法让它工作   Java Mysql空指针异常   java执行超时(1600ms)如何优化此代码以更快地运行?   java在Spring的@Transactional方法期间处理异常   java如何在驱动程序类中调用泛型方法   java如何理解SpringMVC工作流?   java在TomcatJSP页面中使用JDK15的JEP378文本块   java为什么在类中找不到主方法?   在java中创建链表而不使用内置方法/importing util   java在空格和破折号上拆分字符串,但不在字符串的值上拆分字符串   不带按钮的java JOptionPane   java如何减少Netbeans中JTable的列?   通过spring的JavaRESTAPI   Java:最简单的日期减法   来自JPanel的java BuffereImage,背景透明   JavaJFrame:如何使用linebreaklike行为创建简单布局?