ゆるふわめも

東京か京都にいます。

python

matplotlibでの散布図・プロット・アニメーションなどのサンプル集

マルチラベルデータのプロット プロットするデータの作成 二次元で可視化 三次元で可視化 三次元で可視化してそれを回転させるアニメーションを作成 分類問題データのプロット Isomapで次元削減したものを可視化 プロットのマーカを変える+ランダムに色を生…

Ubuntu14.04にてtesseractとLeptonicaのインストール

Leptonicaのインストール tesseractのインストール autoconf-archive その他の依存関係のインストール tesseract本体のインストール 訓練済みモデルのダウンロード 環境は Ubuntu14.04. Google Clowd APIを使いたくないのでインストール. Tesseractのバージ…

画像に含まれる色をクラスタリングして自動的に抽出する

できたもの 実装内容 仕組み 改善点 おまけ 今後の課題 クラスタリング数を動的に変更する ワンポイントの色の抽出 クラスタリングについてのメモ クラスタリングするアルゴリズムの分類 階層的なクラスタリング手法 繰り返し割り当てを変えていく手法 その…

さくらレンタルサーバーでのpython環境のセットアップ

python インストール python2.7 python3.4 外部ライブラリのインストール numpy pip pyenv pandas エラーなど ImportError BootStrapform djangoを使ったウェブアプリケーションの開発をする必要になっ(てしまっ)たため. レンタルサーバーでpythonを使えると…

matplotlibでの凡例(ラベル)の表示場所・形式を変更する

データを生成 legend(凡例)の表示方法の指定 通常 場所を指定(グラフ枠内) 凡例表示を複数列に分割する, 枠に影をつける, 横幅いっぱいにする グラフの枠外に表示する 凡例にタイトルをつける 凡例を分割して別々に表示する ラベル名を任意の文字列に付け替…

Python djangoでGroup byを用いて要素ごとのレコード数をカウントしてテンプレートに渡す

使いそうになったので. ModelNameがモデルの名前, attribute_nameがgroup byを行いたいカラムの名前です. from django.db.models import Count target_data = ModelName.objects.all() groupby_data = target_data.values('attribute_name').annotate(total=…

エラー解決:Anaconda環境でauto-sklearnをインストール

エラー内容 インストール手順 環境に入る gccをインストール (必要なら)以下のライブラリをアンインストール auto-sklearnのインストール 追記 参考文献 エラー内容 python2.7, 3.5にて、OSはMac OS X. auto-sklearnのドキュメントにしたがって Anaconda以下…

画風変換をtensorflowで実装し、最適化の項を変化させた時の出力画像の変化を見る

Neural Style Transfer VGGネット 訓練済みモデルのダウンロード モデルの定義 モデルを宣言 中間層での画像特徴量の抽出 プロット用の関数 中間層の画像の可視化 最適化問題 損失関数の計算 出力結果 画風変換に関する論文一覧 学会に参加してるのですが、…

エラー解決:Cannot remove entries from nonexistent file ...easy-install.pth

エラー内容 pip3コマンドでインストールしようとした際に、依存関係のあるライブラリのバージョンを削除する場合があってその際に Cannot remove entries from nonexistent file anaconda...easy-install.pth のエラー。 解決 --ignore-installedオプション…

エラー解決:chainerを利用している時に AttributeError: 'module' object has no attribute 'full_like'

エラー内容 解決方法 エラー内容 いろいろ長いエラーの後に AttributeError: 'module' object has no attribute 'full_like' と言われる。 解決方法 chainerでGPUを利用しない場合、以下の箇所で numpyに切り替わる。 そのnumpyにfull_linkの属性がないため…

ディープラーニングのパラメータ設定・更新方法に関するメモ

パラメータの初期化 Xavier Initialization He Initialization Glorot initialisation パラメータ更新の手法 Vanilla update Momentum Nesterov Momentum Nadam AdaGrad AdaDelta Adam(Adaptive Moment Estimation) RMSprop Eve その他多数 自分で定義した目…

XGBoostで自分で設計した目的関数(objectiveを自分で定義)で回帰を行う

やること Quantile Regression イメージ scikit-learnのGradientBoostingでの実装 XGBoostの目的関数を変更する 目的関数 結果 他の目的関数 やること xgboostの目的関数を定義済みのものから自分で定義したものに変える。 回帰は常に 正解ラベル=予測の平…

pythonで文字列を日付(datetime)に変換後、日付間の日数の差を求める

やりたいこと データ形式 変換コード よく特徴を新しく作る時に使うのでメモ。 やりたいこと csvファイルの二つのカラムに入った文字列形式の日時データ、その二つの日時データの日数の違いを一気に計算したい。 下のデータ形式だと end_date_time - start_d…

pandasのDataFrameの連結、内部結合、外部結合のサンプル

データフレーム結合の使用例 Grouobyとそれに対する操作(フィルタなど) データ選択の方法(ix, queryなど) リンクのみです。 Qiita等の例の内の多くはpandasのドキュメントに載っている気がします。いちいち検索せずにドキュメントを読む癖をつけたい。特によ…

python, pandas.DataFrameにてapply内部のlambda式でtry, exceptを行う

コード try and catch部分 変換部分 最後に 結論から言うとできないそうです。 もっとも利用するのは DataFrame形式にapplyを使ってデータを変換する時だと思います、自分だけかもしれないですが。 コード とっさに作った例ですが、データに含まれる文字列の…

pythonで乱数を生成・特定の分布から乱数を生成する

ドキュメント 必要なライブラリをインポート 分布から乱数を生成 一様分布 np.random.rand random.random ガンマ分布 ガウス分布 ワイブル分布 混合ガウス分布 カーネル密度推定した分布のプロット アイテムを選択 アイテムごとの重みに基づいて選択 アイテ…

ubuntuにanacondaをインストール、仮想環境の作成、削除

インストール 仮想環境の名前一覧を見る 環境を作る 仮想環境に入る 仮装環境から出る 仮想環境の削除 conda-forge 本家のドキュメント メモのみ。Ubuntu 14.04とMac OS Xで行っています。 本家からダウンロードしてインストールするだけです。 インストール…

バンディットアルゴリズムの復習6:トンプソン抽出(ThompsonSampling)

概要 コード ログ出力 アームが保持する変数 アーム選択部分 なぜか日本語の記事があまりない。 概要 以前ソフトマックス法を 実行した時、期待値最大が見込めるアームは指数分布に基づいて決定していた。 このアームkの期待値E_kがアームごとに何らかの事前…

pythonのloggingの詳細設定を行う

利用するたびに設定を指定する .confにロギングの設定を指定する 詳細 データ解析のステップが大きくなってくるとログファイルを出力しないとどこにエラーがが入ったかやバグのチェックが大変になってくるのでメモ。 利用するたびに設定を指定する 一瞬使い…

バンディットアルゴリズムの復習4:Contextual Bandit

前回 Contextual Bandit スライド 説明 各アルゴリズム外観 EXP4 Epoch-Greedy LinUCB Thompson sampling for Contextual Bandits HyperTS・HyperTSFB 次回 書きかけ、後ほど各アルゴリズムの説明や実験など追加予定。 →水曜夜あたり→土日あたり 前回 UCB,そ…

バンディットアルゴリズムの復習3:UCB(Upper Confidence Bound)

前回 UCB(Upper Confidence Bound) UCBの説明 理論的な説明 UCBのアルゴリズム アームの定義 Arm0: ベルヌーイ Arm1: 適当に作った分布 実験 Arm0: ベルヌーイ Arm1: 適当に作った分布 次回 参考文献 前回 ε-Greedy+softmaxについてやった。 UCB(Upper Confi…

バンディットアルゴリズムの復習2:softmax

前回 Softmax Softmaxによるアーム選択 Boltzmann分布(Gibbs 分布) Softmaxのコード アーム選択部分 実験 アームの定義 Arm0: ベルヌーイ Arm1: 適当に作った分布 実験結果 Arm0: ベルヌーイの場合 Arm1: 適当に作った分布の場合 次回:UCB 参考文献 前回 ε-G…

バンディットアルゴリズムの復習1:epsilon-Greedy

A/B テスト epsilon-Greedy アルゴリズム 説明 epsilon-Greedy アルゴリズムコード 実験(ベルヌーイ分布のアーム) アームの定義 実行結果 実験(ペナルティが大きいアームがあるケース) アームの定義 実験結果 実験(アームの分布が時間によって変化する場合) …

pythonで決定木の出力と決定境界の可視化

参考文献 dotのインストール 決定境界の可視化 データの生成 決定境界の可視化 決定木の出力 決定木のデータファイルを出力 出力画像 おまけ:非線形データの場合 データ生成 決定境界の可視化 決定木の可視化 参考文献 Python Data Science Handbook: Essen…

pythonで線形+多項式フィッティング

データの生成 コード グラフ上にプロット フィッテング 過学習のテンプレとして出てくる。 データの生成 コード 予測する曲線のデータと、それにノイズを乗せたデータを生成します。 import matplotlib.pyplot as plt import seaborn import numpy as np def…

python matplotlib 内で日本語を利用する(日本語のラベルや凡例・legendをつける)

matplotlibで使用できるフォントを探す 指定したフォントをmatplotlib全体で使用できるように指定する コード 表示例 matplotlib.rcを使ったフォントの変更 コード 表示例 matplotlibで使用できるフォントを探す 指定したフォントをmatplotlib全体で使用でき…

python matplotlib 内で日本語を利用する(使用できるフォントを探す)

利用できるフォントを探す コード 出力 matplotlibで使用 日本語でラベルや凡例を表示する 利用できるフォントを探す コード import matplotlib.font_manager as fm # フォント一覧 fonts = fm.findSystemFonts() # フォントのパスと名前を取得、とりあえず1…

pythonでgensimを使ってトピックモデル(LDA)を行う

LDA用のデータの作成 単語の辞書を作成して出力 外部に保存したコーパスと辞書の読み込み LDAの実行 コード 出力例 gensimとjanomeを用いたLDAを行います。 必要なデータは一行ごとに文章が入ったtxtファイルです。 LDA用のデータの作成 data.txtには一行ご…

OCR・文字認識の論文とかのまとめ

論文 End-to-End Text Recognition with Convolutional Neural Networks Word Spotting and Recognition with Embedded Attributes Deep structured output learning for unconstrained text recognition Deep Features for Text Spotting Reading Text in t…

pythonでpandasのgroupbyで集約+散布図(scatter)を作成

やること コード データ作成 集計 + 上位の丸め込み コード全体 出力 やること 変数が三つある時によくやるのでメモ。 データで例えると「映画の視聴回数」「変数A」「変数B」で回数ごとに A, Bの変数に変化があるかを調べたい時にとりあえず見てみる。 大抵…

pandas.DataFrameでcsvファイルを内部結合

やりたいこと コード 他の例 よく使うのでメモ。 ID_labelxとID_labelyが同じ行をまとめる内部結合です。 やりたいこと X: (ID_labelx, xa, xb) = (tanaka, data_xa, data_xb) Y: (ID_labely, ya, yb) = (tanaka, data_ya, data_yb) のデータが join: (ID_la…

pythonのpandas.DataFrameで特定文字列だけ含む行を選択

大量データのカラム名の仕分けとかでよく使うのでメモ。 # データをロード clm = pd.DataFrame(data) # カラム名を付け替える clm.columns = ['id', ...] # idカラムの中から "tanaka" が含まれる行だけを選択 clm[clm['id'].str.contains("tanaka", na=Fals…

Mecabに文字列のデータ一覧を渡して単語ごとに分割させる(分かち書き)

やること 私は宇宙人です。 -> '私 は 宇宙人 です。' と変換していく。 前回クロールしてアドレス一覧からページのテキストを拾ってきて '.csv' に保存したので今回はそれらのテキストを分割して word2vecなどの前処理に入れられる状態で保存する。 前回 pa…

Ubuntu 14.04, Mac OS X に MeCab をインストール

Mac OS X Ubuntu 14.04 すでに以下のような記事があるのですが qiita.com 以下でいけました。 Mac OS X $ brew install mecab $ brew install mecab-ipadic $ pip install mecab-python $ pip install mecab-python3 (python3なら) Ubuntu 14.04 $ sudo apt-…

pythonでウェブサイトをクロールしてページの説明を収集する

やること コード 集めたテキストを形態素解析する やること ページの文章からトピックモデルを作って、ウェブの移動履歴や購入履歴からユーザの特徴ベクトルを作りたい。 その初めの一歩として、とりあえず url の一覧からページの説明を取得してcsvに保存し…

pythonでdenoising auto encoderを使ってデータを前処理する

概要 モデル定義 ノイズ付加 デノイジングオートエンコーダーの訓練 損失関数の推移 概要 まず、PFNの得居さんの記事を参照。 www.beam2d.net データにランダムにノイズを乗せたものを入力として、元のデータを正解とするDNNを学習することでデータからノイ…

pythonでpd.DataFrameのカラム名一覧を取得+単純集計

やりたいこと コード 出力 他の例 やりたいこと 全特徴のヒストグラムを作成する。 data.columns.valuesで DataFrameのカラム一覧を取得する。 コード data = pd.read_csv(filename) names = data.columns.values N, M = 5, 5 plt.figure(figsize=(N*2, M*2)…

mini-batch k-meansでデータをクラスタリングして教師データの偏りを可視化する

やること コード クラスタリング プロットするためのデータ準備 グラフ作成 結果 やること データをクラスタリングして、各クラスタごとの教師データの分布の偏りを確かめたい。 今回は 教師データ = 0, 1 の2クラスを想定。 可視化をするためのデータは 主…

pythonでAutoencoderの精度をバッチサイズを変更しながら確認

コード モデル定義 モデルの訓練 バッチサイズを狭めながらオートエンコーダを訓練して、その損失関数の減少具合を確認する。 緑色線がエポックごとのおおよその損失関数のlossの値、赤色がバッチごとのlossの値を全てプロットしたものです。 コード モデル…

pythonでAutoencoderを動かす

環境 モデルの定義 出力 モデルの訓練 誤差の減少具合 オートエンコーダーのモデルを複雑に 二つのモデルの比較 参考 環境 python2.7, ubuntu14.04上。Kerasを使用して、入力はベクトルを想定。 モデルの定義 print(autoencoder.summary())とすればモデルに…

xgboostのパラメータをグリッドサーチで決定する

モデルの詳細 コード 参考スライド モデルの詳細 Python API Reference — xgboost 0.6 documentation にあるパラメータのうち、特に影響が大きい物をグリッドサーチで決定します。xgboostの本論文はKDD2016の以下を参照。最近のコンペでは協力なベースライン…

pythonで相関係数を可視化する

問題設定 ニクラス問題で教師データのラベルが 1, 0だった時にそのラベルごとに変数の相関を、さらにラベルの違いごとに変数相関に違いがあるかを確認する。 コード plt.figure(figsize=(10, 10)) plt.subplot(221) plt.title('alldata corr') sns.heatmap(t…

pythonで分類問題のハイパーパラメータをグリッドサーチで見つける

内容が薄いのでコードのみ。 sklearn.__vsrsion__==0.18である必要あり。 from sklearn.pipeline import Pipeline from sklearn.decomposition import PCA, NMF from sklearn.preprocessing import PolynomialFeatures from sklearn.feature_selection impor…

pythonでクラスごとの分布をPCAで可視化して問題の難しさを確かめる

やりたいこと データを二次元で可視化 データを三次元で可視化 やりたいこと 主成分分析を行い、データを低次元に表す。 その分布をクラスごとに可視化して、クラスごとに分布が違っている(分布が重なっていない)なら予測が簡単そうだ、とわかるしPCAを教…

pythonで予測ミスの分布を確認

いつもいっかいどっかでやるのでメモ。 クラスを分類しまちがえた時は、そのミスの自信度を確認すること。 コード # check error prd = clf.predict_proba(X_test)[:, 1] tfdata = pd.concat([pd.DataFrame(y_test), pd.DataFrame(prd)], axis=1) tfdata.col…

pythonでBidirectional LSTMを使った分類問題

モデルの定義 モデルの精度の確認 コード 出力 Bidirectional LSTMを使って時系列データを2クラスに分類できるか確かめる。 Schuster, Mike, and Kuldip K. Paliwal. "Bidirectional recurrent neural networks." IEEE Transactions on Signal Processing 45…

pythonで母集団の分布を確認する

各特徴の分布を確認 目的値ごとに分布に違いがあるのかを確認する 2変数間の関係を見る 等高線をプロットして分布を確認する 前提として、2クラス分類。 データに含まれる特徴量は data_train.columns.values >> array(['feature1', 'feature2', 'feature3',…