前に、
Rでのアソシエーション分析
http://blog.goo.ne.jp/xmldtp/e/25c3a84112cc266cd399dd96bf41f21a
を書いたけど、Pythonの3でやると、どうなるのかについてのメモ。
基本的にOrangeをつかうんだけど、Python3用のOrangeであるOrange3には、
アソシエーション分析が入っていない。そこで、それを作っている人
から、githubでとってくるんだけど、Orange3を入れるのにVisual C++が
必要だったり。。。と、いろいろ大事なので、メモメモ
■前提
・Pythonの3が入っている
■インストール
(1)Visual C++ 2015 Build Tools
http://landinghub.visualstudio.com/visual-cpp-build-tools
が入っていなかったら、上記URLにいき、
ダウンロード&インストール(Orange3のインストールで使う)
(2)必要なものをpipでインストール
pip install numpy
pip install pandas
pip install orange3
を実行する
(pip install orangeとすると、エラーになってインストールできない)
(3)さらに(Orange3には、Association分析が入っていないようなので)
Python でアソシエーション分析 - Orange3-Associate
http://fits.hatenablog.com/entry/2018/01/09/211900
にある手順で,Orange3-Associateを入れる。具体的には、以下のコマンド実行
そうしたら、そこにorangecontribというフォルダができるから、
そのフォルダをPythonのLibの中に入れる(自分の場合
C:\Users\USER\AppData\Local\Programs\Python\Python36-32\Lib
に入れた)
■プログラムファイルを作成する。
日本語が入っていたら、UTF-8で保存する。
プログラムは、以下の通り
上記ソースは、基本的に上述の「Python でアソシエーション分析 - Orange3-Associate」
を踏襲して書いている。
これをhello.pyという名前で保存する。
■データファイルを用意する
1レコード1トランザクション(=1レシート、1バスケット)として、
トランザクション内(レシート内、バスケット内)にある各商品をカンマで区切って
ファイル出力したものを、拡張子.basketとして保存する。
今回は、「Rでのアソシエーション分析」で読み込んだデータGroceriesを、
write(Groceries,file="source.basket",sep=",")
として書き出したものを、利用する。
それが、上記プログラムの
tbl = Orange.data.Table("C:\\Users\\USER\\Desktop\\flask\\source.basket")
のところ
■実行する
python hello.py
こんなかんじ
Rでのアソシエーション分析
http://blog.goo.ne.jp/xmldtp/e/25c3a84112cc266cd399dd96bf41f21a
を書いたけど、Pythonの3でやると、どうなるのかについてのメモ。
基本的にOrangeをつかうんだけど、Python3用のOrangeであるOrange3には、
アソシエーション分析が入っていない。そこで、それを作っている人
から、githubでとってくるんだけど、Orange3を入れるのにVisual C++が
必要だったり。。。と、いろいろ大事なので、メモメモ
■前提
・Pythonの3が入っている
■インストール
(1)Visual C++ 2015 Build Tools
http://landinghub.visualstudio.com/visual-cpp-build-tools
が入っていなかったら、上記URLにいき、
ダウンロード&インストール(Orange3のインストールで使う)
(2)必要なものをpipでインストール
pip install numpy
pip install pandas
pip install orange3
を実行する
(pip install orangeとすると、エラーになってインストールできない)
(3)さらに(Orange3には、Association分析が入っていないようなので)
Python でアソシエーション分析 - Orange3-Associate
http://fits.hatenablog.com/entry/2018/01/09/211900
にある手順で,Orange3-Associateを入れる。具体的には、以下のコマンド実行
git clone https://github.com/biolab/orange3-associate.git cd orange3-associate python setup.py install |
そうしたら、そこにorangecontribというフォルダができるから、
そのフォルダをPythonのLibの中に入れる(自分の場合
C:\Users\USER\AppData\Local\Programs\Python\Python36-32\Lib
に入れた)
■プログラムファイルを作成する。
日本語が入っていたら、UTF-8で保存する。
プログラムは、以下の通り
import Orange from orangecontrib.associate.fpgrowth import * tbl = Orange.data.Table("C:\\Users\\USER\\Desktop\\flask\\source.basket") X, mapping = OneHot.encode(tbl) itemsets = dict(frequent_itemsets(X, 5)) rules = association_rules(itemsets, 0.7) stats = rules_stats(rules, itemsets, len(X)) def decode_onehot(d): items = OneHot.decode(d, tbl, mapping) return list(map(lambda v: v[1].name, items)) for s in sorted(stats, key = lambda x: x[6], reverse = True): lhs = decode_onehot(s[0]) rhs = decode_onehot(s[1]) support = s[2] confidence = s[3] lift = s[6] print(f"lhs = {lhs}, rhs = {rhs}, support = {support}, confidence = {confidence}, lift = {lift}") |
上記ソースは、基本的に上述の「Python でアソシエーション分析 - Orange3-Associate」
を踏襲して書いている。
これをhello.pyという名前で保存する。
■データファイルを用意する
1レコード1トランザクション(=1レシート、1バスケット)として、
トランザクション内(レシート内、バスケット内)にある各商品をカンマで区切って
ファイル出力したものを、拡張子.basketとして保存する。
今回は、「Rでのアソシエーション分析」で読み込んだデータGroceriesを、
write(Groceries,file="source.basket",sep=",")
として書き出したものを、利用する。
それが、上記プログラムの
tbl = Orange.data.Table("C:\\Users\\USER\\Desktop\\flask\\source.basket")
のところ
■実行する
python hello.py
こんなかんじ