基于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 ASCII码   音频如何在Java中设置SourceDataLine的音量   java MyBatissSpringBoot无法使用作为bean注入的数据源   Java字谜递归列表<List<String>>仅存储空列表<Strings>   java显示30px高的JPanel,然后用minecraft填充剩余空间   java JOGL平滑度   Java:按完整与否对1d对象数组进行排序   arraylist仅当java结构不存在时才将对象添加到java结构中   无法初始化java渲染库在安卓 studio 4.1.1上出现错误   java SpringBoot ClassCastException   java解析文本文件,基于字数   java=运算符引发异常   java使点可拖动并存储新坐标JavaFx   JavaWebSphereApplicationServer:EJB模块和JMS路由器