listやarrayからPandas DataFrameを作成

カラム名をkey、listやarrayをvalueにして辞書を作成して、DataFrameに突っ込むとできる。 import numpy as np import pandas as pd def make_df_from_list_and_array(): col1 = [0,1,2,3,4] col2 = np.array([5,6,7,8,9]) df = pd.DataFrame({'col_list':co…

Pythonでディレクトリー内から特定の拡張子のファイルを取得

listdirを使ってディレクトリー内のファイルを取得し、リスト内包表記を使って条件付きでファイルを読み込む。 if文を変えれば拡張子に限定されない。 例えば、接頭語を指定するとか。 import os def get_target_files(dir_path='./image_dir/'): files = [f…

Python-OpenCVで動画をフレーム分割して画像として保存

動画をフレームに分割して画像として指定したディレクトリーに保存する操作をまとめた。 動画を読み込んで、フレームごとに存在を確認して、確認できれば画像として保存する、という手順。 引数は適宜変えてください。 import os import shutil import cv2 d…

Pythonでディレクトリーの削除と作成

処理中、一時的にディレクトリーを作ることが多いので、以下に操作をまとめた。 引数にディレクトリーパスを渡して、ある時は削除して、ない時は作るという仕様。 # coding: utf-8 import os import shutil def delete_and_make_directory(dir_path='./image…

TensorFlowからKerasに乗り換えてみた

モデル設計などの際に、TensorFlowのコードが長くなるので自分でラッパーを書いていたのだが、 ざっとKerasを調べてみたら、ラッパーが必要ないくらいシンプルに書けるし、 前処理などモデル設計以外のツールも充実しているようだったので、 KerasでCIFAR10…

PythonでData Augmentation

Pythonで画像の左右反転、回転、拡大を行ってみた。 Data Augmentationに使えるかなと。 左右反転 scikit-imageだけで実現したかったのだが、APIを見つけられなかったのでOpenCVで実装。 でも3つの処理の中で最も簡単に書けた。 ちなみに第2引数を1ではなく…

scikit-imageを使った画像の平行移動

scikit-imageという便利なライブラリーを見つけた。 画像の平行移動が2行で実装できたので、以下に示す。 import skimage as ski from skimage import io from skimage.transform import rescale def test(self): # Lennaさんの画像を読み込み img_raw = ski…

損失関数がNaNになる問題

TensorFlowでDeep Learningを実行している途中で、損失関数がNaNになる問題が発生した。 Epoch: 10, Train Loss: 85.6908, Train Accuracy: 0.996, Test Error: 90.7068, Test Accuracy: 0.985238 Epoch: 20, Train Loss: 42.9642, Train Accuracy: 0.998286…

ResourceExhaustedErrorの原因

TensorFlowで学習していると、訓練データ数が大きい場合、たまにResourceExhaustedErrorが出る。 Windows 10では、以下の内容が表示される。 ResourceExhaustedError (see above for traceback): OOM when allocating tensor with shape[37800,32,28,28] [[N…

Python3でcPickleのエラーを回避する

CIFAR-10を読み込もうとしたら、Python2で動いてたcPickleがPython3では動かない。 import cPickleと書けばImportError: No module named 'cPickle'と吐き、 d = cPickle.load(f)と書けばUnicodeDecodeError: 'ascii' codec can't decode byte 0x8b in posit…

CIFAR-10の取得と整理

MNISTの識別モデルをDeep Learningで上手く学習できたので、次の対象としてCIFAR-10を選んだ。 TensorFlowを使うと、学習が上手くいくように加工してくれるみたいだが、今回は一次ソースからデータを取得する。 CIFAR-10の取得 まず、CIFAR-10 and CIFAR-100…

TensorFlowでmodelを保存して復元する

modelの保存と復元は、それぞれ以下のようにシンプルな設計で行える。 Save a model saver = tf.train.Saver() saver.save(sess, '../model/test_model') Restore a model saver = tf.train.Saver() saver.restore(sess, '../model/test_model') 本記事では…

遺伝的アルゴリズムによるナップサック問題の最適化

以前、 遺伝的アルゴリズムの入門的なOneMax問題を解いた。 testpy.hatenablog.com 今回は、これよりも少し複雑なナップサック問題を解く。 ナップサック問題とは Wikipedia によると、ナップサック問題とは次のような問題である。 ナップサック問題は、計算…

Pandas.DataFrameをdicts in listに変換する

dicts in listからDataFrameを作成することはよくあるが、 DataFrameをdicts in listにしたい時がたまにある。 df.to_dict('records')を実行するだけで良いのだが、 このシンプルなコードを良く忘れるのに記事にした。 入出力がまったく同じdicts in listで…

Pandas.DataFrameの複数カラムの同時ソート

多分100回ぐらい調べてるので、いい加減覚えるために、記事を書いてみた。 ランダム生成したxとyについて、各々降順、昇順で同時にソートする。 import pandas as pd data = [{'x': random.randint(0, 10), 'y': random.randint(1, 5)} for i in range(10)] …

ラベルをOneHotでエンコードする

Deep Learning、と言ってもTensorFlowしか使ったことないけど、 ラベルがnx1(nはレコード数)の行列の場合は、OneHotにエンコードする必要がある(下図)。 scikit-learnのOneHotEncoderで、一発でエンコードできるのだが、 nx1の行列をnxm(mはラベルの値…

遺伝的アルゴリズムによるOneMax問題の最適化

OneMax問題とは、[1,0,0,1,0,1,1,1,1,0]のように0/1からなる数列の和を最大化する問題のこと。 答えはすべて1の数列と自明だが、これを最適化アルゴリズムの1つである遺伝的アルゴリズムで解く。 遺伝的アルゴリズムとは、このような数列を遺伝子と見立て複…

DeepLearningの学習曲線をmatplotlibで可視化

TensorBoardのEventsによる学習状況の可視化 を行ったが、今後いろいろとカスタマイズしたくなると思い、matplotlibで可視化することにした。 今回もFizzBuzz問題を例に扱う。詳しくは、Deep Learning入門としてのFizzBuzz問題を参照。 精度とコストの記録 …

TensorBoardのEventsによる学習状況の可視化

TensorFlowに学習状況を可視化するTensorBoardというツールがあるのだが、 コスト関数と精度を可視化してみたかったので使ってみた。 実装 Deep Learning入門としてのFizzBuzz問題 のモデル学習のメソッドをベースにしている。 コメント# Logging data for T…

Deep Learning入門としてのFizzBuzz問題

FizzBuzz問題とは何か。 こちらから引用させてもらう。 Fizz-Buzz問題の例はこんな感じだ。 1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合に…

Pythonの並列処理

最近Pythonの並列処理をよく使うのでまとめておく。 基本形 並列処理したいメソッドを別に書いてPoolから呼び出す。 multiprocessing.cpu_count()はシステムのCPU数を返す。 僕の環境では4。デュアルコアなのでスレッド数だと思う。 import multiprocessing …

TensorFlowによる精度計算の流れを追う

accuracy = tf.reduce_mean(tf.cast(tf.equal(tf.argmax(Y, 1), tf.argmax(Y_, 1)), tf.float32)) Yをニューラルネットワークの出力層、Y_をその正解ラベルとした場合、学習モデルの精度を計算するとき、 TensorFlowでは上記ようにAPIを組合せて書くことがあ…

jsmでYahooファイナンスのデータを片っ端から取得してMongoDBに保存する

はじめに jsm(Japanese Stock Market)という Yahooファイナンスをクロールして株関連データを取得できるライブラリーがある。 Brand、Finance、Priceデータが取得できるので、東証一部に絞ってデータを片っ端から取得するコードを書いた。 インストール pip…

ReactのListとKey

ReactでList(ObjectのArray)を描画する際、mapを利用して各Objectの項目をセットする。 var data = [ {id: 1, author: "Pete Hunt", text: "This is one comment"}, {id: 2, author: "Jordan Walke", text: "This is *another* comment"} ]; var CommentLi…

React + Flask + Python + MongoDBで作るRSSリーダー

これまで2回に渡ってReactについて学んできた。 testpy.hatenablog.com testpy.hatenablog.com 僕は普段、Pythonを使って機械学習やデータ解析のコードを実装してるのだが、 Webアプリ化したいな、できればReactで実現できたらいいな、と思うことが度々あっ…

Reactチュートリアル入門: Pythonサーバーサイド連携編

チュートリアル | React がなくなったようで。。良いチュートリアルだったのに。。 まあとりあえず、前回は クライアントサイドのみでWebサイトを表示したので、 今回はサーバーサイドで取得したデータをクライアントサイドに渡して表示させる。 とは言って…

Reactチュートリアル入門:クライアントサイド編

チュートリアル | React(何故か2016-10-23時点ではNot Found) を理解しながら写経すると、Reactで簡単なWebアプリが作れるようになる。 しかし、僕自身もそうだが、テンプレートを使ったWebアプリしか作ったことしかなく、 Reactを理解したいという人向け…

Atomがフリーズしたときの対処法

macOS Sierraにアップデートしたら、"Editor is not responding"となったので、その対処法をメモに残しておく。 手順 Finderのメニューバーから、[移動] > [フォルダーへ移動...]と選択 テキストボックスに<~/.atom/storage>を入力して[移動]ボタンをクリッ…

Python製プログレスバーを3行で書く

for文の中に標準出力を書くと、ターミナルが文字で埋め尽くされるので回避したいが、 for文の中身が重くて無反応になるのも困る。 なのでプログレスバーを書けば良い、という結論に至るわけだが、 さくっと色んなfor文に書きたいので、3行で書く方法を説明…

Luhnの要約アルゴリズムの後処理

これまでLuhnの要約アルゴリズムの 前処理として基本的な自然言語処理を、 本処理としてテキストの各文のスコア付けを行った。 今回は後処理として要約テキストとして表示させる。 要約テキストは、スコア付けされた文を選択することで生成される。 ここでは…