基于k-means和smote的不平衡学习过采样
kmeans-smote的Python项目详细描述
基于k-means和smote的不平衡学习过采样
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分三步工作:
- 使用k-均值对整个输入空间进行聚类[1]。
- 将要生成的样本数分布到群集:
- 筛选出具有大量多数类的群集 样品。
- 将更多的合成样本分配给少数类 样本分布稀疏。
- 使用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。