imbalanced-learn SMOTE:expects n_neighbors <= n_samples, but n_samples < n_neighbors

Published on:
Last updated:

This post is also available in: 日本語 (Japanese)

imbalanced-learn の SMOTE関数 を使ってオーバーサンプリングした際に、下記のようなエラーが出た時の対処方法について、備忘録的にメモを書いています。

expects n_neighbors <= n_samples, but n_samples < n_neighbors

簡易的な対処法としては、SMOTE関数の k_neighbors の設定値がデフォルトでは k_neighbors=5 となっているので、エラー内容の通り、
k_neighbors の設定値を少なくする
n_samples の数を増やす
という対処法が必要になるかと思います。

参考:
imbalanced-learnドキュメント
https://imbalanced-learn.org/stable/references/generated/imblearn.over_sampling.SMOTE.html
Stack Overflow(詳細な対処法が書かれています)
https://stackoverflow.com/questions/49395939/smote-initialisation-expects-n-neighbors-n-samples-but-n-samples-n-neighbo

About
Kuniyoshi Takemoto is the founder of Amelt.net LLC, and editor of this blog(www.amelt.net).Learn more and follow me on LinkedIn.