社会性フィルタージェネレーターを作りました

ここ最近、研究が立て込んでいてツイートが邪悪になりかけていたのですが友人にあんまりインターネットに負をまかないほうがいいみたいなことを言われたのでそれ移行反省して「にゃーん」としかつぶやかなくなりました。 にゃーんとは社会性フィルターというもので元ネタは以下にあるので参照してください。 社会性フィルターについて – わかられない自由について しばらくにゃーんとつぶやいていたのですが、Twitterは重複ツイートを許してくれないのでいろいろなパターンのにゃーんを生成する必要性が現れました。 なのでにゃーーーんとかにゃーん、、、、とか色んなバリエーションの社会性フィルターを生成してつぶやいていました。 しかしそんなことをしてると何のためににゃーんとつぶやいているのか、自分でもわからなくなり、プログラムで自動生成してくれるサービスをつくろうと思ってつくりました。 社会性フィルタージェネレーター – garicchi.github.io 使い方はひごろのうっぷんを書いてボタンを押すだけ。にゃーんに変換されます。 原文を含めてツイートもできるし音声合成で読み上げもできます。 もはやフィルターの概念が消えました。   自己満足ツールですがGitHubで開発してますので要望などあればどうぞ https://github.com/garicchi/socialfilter

python pandasのDataFrameをいい感じにmultiprocessingで並列処理する

pandasのDataFrameに文字列データとかを入れてるとなんとなく並列処理したくなります。そんな時のTips とりあえずデータを作る import pandas as pd import numpy as np from multiprocessing import Pool import multiprocessing df = pd.DataFrame({ ‘animal’:[‘monkey’,’dog’,’monkey’,’cat’,’dog’], ‘count’:[2,4,1,4,5] }) df データを等分割して並列化する 各行が独立していて、計算処理を分割した各行に実行したい場合。 numpyのarray_splitはDataFrameを入れても均等に分割してくれます。それを利用して均等にDataFrameを分割して並列化します。 今回は普通に各行のcountを3倍する計算を並列化してみます。 def split_parallel(df,num_split,map_func): p = Pool(multiprocessing.cpu_count()) df_split = np.array_split(df,num_split) result = p.map(map_func,df_split) p.close() return pd.concat(result) def map_count(df): df[‘count’] *=3 return df df = split_parallel(df,10,map_count) df データをキーごとに分割する 例えばanimalの種類ごとに並列化したい場合(map reduceによくある感じ)、下記のようにDataFrameを指定カラムの種類ごとに分割して並列化できます。 def…

pandasで不均衡データをアンダーサンプリング、オーバーサンプリングする

何やらよさげな記事を見つけたんですが pandasを使った不均衡データの整形 – drilldripper’s blog imblearnというパッケージを使えばもっと簡単にアンダー(オーバー)サンプリング可能なのでgistにあげました(ipynbをwordpressに貼り付けられないのつらすぎる) https://gist.github.com/garicchi/0a587042bb74dfd2c7c3fccbd43a9fcf

Azure Machine Learning Tutorialに献血識別のチュートリアルを追加しました

前回作ったAzure Machine Learning Tutorialですが新しく献血データを使って献血に行った人とそうでない人を分類する識別チュートリアルを追加しました。 https://github.com/garicchi/azureml-tutorial/tree/master/blood-classify Azure Machine Learningにはデフォルトでいくつかサンプルのデータセットがついているのでその中の一つである「blood donation data」を使いました。データの内訳はこのようになっていて、0か1かが書かれているClassを識別します。 このチュートリアルを作っていて初めて気づいたのですがAzure MLにはSMOTEモジュールというものがあり、これを使うことによってデータの不均衡をオーバーサンプリングによって均等にすることができます。 Two Class Neuralnetworkを用いて識別、10点交差検証した結果、F値0.6とあまり良い結果にはなりませんでした。パラメータ調整とか特徴量選定とかの余地がありますね。