scikit-learnのMultiLabelBinarizerで個々の購入データを表にまとめる
データ元
個々の購入データ(変換前)
各行はユーザID、各列はユーザの購入したアイテムを表している。列数は最も購入アイテムの多いユーザの購入数になる。そのため、空欄にはNaNが入っている。
つくりたいテーブル(変換後)
各列を特定のアイテムに固定して、それぞれのユーザが購入したかを1/0で表す
やりかた
scikit-learn の MultiLabelBinarizerを用いる。変換前のデータフレームをdfとする。変換後の出力はdf_transとする。
from sklearn.preprocessing import MultiLabelBinarizer
df = df.fillna("none")
mlb = MultiLabelBinarizer()
result = mlb.fit_transform(df.values)
df_trans = pd.DataFrame(result, columns = mlb.classes_).drop('none', axis=1)
データフレーム中にNaNが入っているとMultiLabelBinarizerでエラーが発生するので適当な文字列に変換しておく(重複しなければ別にnoneじゃなくてもよい)
MultiLabelBinarizerオブジェクトを生成しfit_transformメソッドを呼び出す。引数にはdf.valuesとしてnumpy.array形式で指定する。
列名(アイテム名)はmlb.classes_で取り出せる。
最後にdropメソッドでnoneを削除すれば、変換後のテーブルを得る。
Author And Source
この問題について(scikit-learnのMultiLabelBinarizerで個々の購入データを表にまとめる), 我々は、より多くの情報をここで見つけました https://qiita.com/triwave33/items/522eab7db41f07a565dc著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .