質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

9816閲覧

python 不均衡なデータを under samplingを行う

KentaIrie

総合スコア8

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2020/07/08 02:38

不均衡なデータを under samplingする方法を知りたいです。
train.vlue_counts[4]のデータの個数が非常に多かったので、
train.vlue_counts[1]の個数と同じにしようと思い、下のコードを書きました。

from imblearn.under_sampling import RandomUnderSampler

rank_1 = Y_train.value_counts()[1]
rank_2 = Y_train.value_counts()[2]
rank_3 = Y_train.value_counts()[3]

rus = RandomUnderSampler(ratio={1:rank_1, 2:rank_2, 3:rank_3, 4:rank_1}, random_state=71)

X_train_rus, Y_train_rus = rus.fit_sample(X_train,Y_train)

しかし、次のようなエラーが出ました。
TypeError: init() got an unexpected keyword argument 'ratio' 

どのようにtrain.vlue_counts[4]のデータの個数を減らせばよいでしょうか?

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

imbalanced-learnのドキュメントをみるとratioというパラメータはバージョン0.6以降削除されたようです。代わりにsampling_strategyを使ってくださいと書かれています。

python

1import pandas as pd 2from imblearn.under_sampling import RandomUnderSampler 3 4# ダミーデータを作成 5df = pd.DataFrame( 6 { 7 "feature1": [3] * 23621 + [2] * 2235 + [1] * 2232 + [0] * 2229, 8 "feature2": [4] * 23621 + [0] * 2235 + [2] * 2232 + [1] * 2229, 9 "target": [4] * 23621 + [1] * 2235 + [3] * 2232 + [2] * 2229, 10 } 11) 12X_train = df[["feature1", "feature2"]] 13Y_train = df["target"] 14print(Y_train.value_counts()) 15 16# アンダーサンプリング 17rus = RandomUnderSampler(random_state=71) 18 19X_train_runs, Y_train_rus = rus.fit_sample(X_train, Y_train) 20print(Y_train_rus.value_counts())

結果

terminal

1$ python hoge.py 24 23621 31 2235 43 2232 52 2229 6Name: target, dtype: int64 74 2229 83 2229 92 2229 101 2229 11Name: target, dtype: int64

投稿2020/07/09 00:15

yymmt

総合スコア1615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KentaIrie

2020/07/20 03:43

AttributeError: 'RandomUnderSampler' object has no attribute '_validate_data' というエラーが出るのですがそうしたらよろしいですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問