edo1z blog

プログラミングなどに関するブログです

Python

nvim(neovim)でpython3を使えるようにする

環境 環境はmac m1です。 nvimでpython3が使えない nvimでultisnipsを使おうとしたら、python3使えないエラーが出た。 init.vimにPythonのパスを設定してみる Pythonのパスをinit.vimに設定する。 Pythonがインストールされている前提。 let g:python_host_p…

BTCFXの約定データで強化学習してみる (4)

google マシーンラーニングを使ってみたいと思います。お金はかかりますが、速いし、ハイパーパラメータのいいやつを探してくれるということなので、よさそうだと思っております。強化学習については、下記記事に色々書いてあります。 cloudplatform-jp.goog…

BTCFXの約定データで強化学習してみる (3)

前回、前々回と全然ダメでしたので、先人の知恵を探しておりました。基本的に下記のアリさんの過去のつぶやきを沢山拝見しました。ありがとうございますm(. .)m またアリさんがつぶやかれていた下記論文に関しても一応ぼんやりと眺めました。 sigfinいくつか…

BTCFXの約定データで強化学習してみる (2)

下記で、Open AI Gymを使って、BTCFXの約定データをもとに強化学習するコードを一応作成しましたが、結果はボロボロでした。 blog.logicky.com 前回のコードは、テスト不十分だったので、とりあえず、実際に想定どおりに注文・約定・利確・損切等が行われる…

BTCFXの約定データで強化学習してみる

BTCFXの1日分の約定データ(1分足データ)をもとに、取引方法を学習させてみたいと思います。Open AI GymのEnvというのを自作することで、学習環境を自作することができます。 Open AI Gymが用意してくれているEnvは、env = gym.make('CartPole-v0')といっ…

Google Cloud VisionでOCRする

CLOUD VISION API PHP用のライブラリを使ってみる Cloud Vision API Client Libraries (APIリファレンス)Google\Cloud\Vision\VisionClient $ composer require google/cloud $ gcloud auth application-default login $ vim cv.php $ php cv.php サンプルコ…

Python3 - 対数

Pythonで対数を出すには、math.logを使います。import mathで使えるようになります。 import math print(math.log(2, 10)) 0.30102999566398114 これは、10を何乗したら2になるか?です。log102です。 試しに、10を0.30102999566398114乗してみます。 print(…

Python3 - xのn乗のグラフ(matplotlibのsubplotとアニメーション)

GIFアニメーション matplotlibのアニメーション作成は2つ種類があって、ArtistAnimationとFuncAnimationとがある。 参考:matplotlib でアニメーションを作る ArtistAnimation は、あらかじめ全てのグラフを配列の形で用意しておき、それを1枚ずつ流すという…

Python3 - 変数のスコープについて

下記コードのとき結果は1と表示されます。 n = 1 def hoge(): print(n) hoge() 下記コードのときエラーになります。 n = 1 def hoge(): n += 1 print(n) hoge() UnboundLocalError: local variable 'n' referenced before assignment 参考:なぜ変数に値があ…

Python3 - matplotlibでアニメーションGIFをつくる

matplotlib.animatioを使うとアニメーションがつくれます。自分の環境ではgifで保存しようとしたら、imagemagickがなくてエラーになりました。imagemagickのインストールとかはここに書いてありました。 Imagemagick http://www.imagemagick.org/script/bina…

Python3 - 素因数分解

素因数分解 正の整数 n を素因数分解するための最も単純な方法は、2 から順に √n までの素数で割っていく方法である(Trial division(英語版))。しかし、n が大きくなると、この方法では困難である。 結果 [3, 79, 519507173] 参考:Python Finding Prime…

Python3 - timeitを使ってコマンドライン上で関数の実行速度を計る

コマンドラインで実行できるので、プログラムに計測用のコードを書かなくてよくて便利。 timeit — 小さなコード断片の実行時間計測 計測方法 自分の環境だと、実行したいpythonファイル(hoge.py)がおいてあるディレクトリで、下記のようにやると動きます。(…

Python3 - 素数

エラトステネスの篩 エラトステネスの篩 結果 [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197,…

強化学習 - Python3でSarsaを使って行動価値を出す

これからの強化学習という本の31頁にのってる状態遷移グラフの行動価値をSarsaを使って出してみます。ちなみにこの本の数式誤字多くないですか??Python3で書いてみます。

Python3 - Seleniumの使い方

Selenium http://www.seleniumhq.org/ 作業環境 私の環境は、下記です。 Windows10 Python3.5 Firefox 51.0.1 Chrome 56.0 ChromeDriver 2.27 Selenium WebDriver SeleniumRCはJavascriptでブラウザを操作してたけどセキュリティ的に難しくなってSelenium We…

Python3 - アルゴリズム(重み付きグラフ・最短経路探索・ダイクストラのアルゴリズム)

参考:欲張り法 (greedy strategy) 重み付きグラフ networkxでつくった重みグラフ networkxのコードサンプル 上記は重み付きのグラフです。これはnetworkxで書きました。コードは下記です。 import numpy as np import matplotlib.pyplot as plt import netw…

Python3 - ヒープをnetworkxではなくgraphvizで書いてみる

networkxだときれいに表示できない。posに表示スタイルを設定するようですが、spring_layout、spectral_layout、shell_layoutとかありますが、全部キレイな木を表示してくれる感じじゃない。外部のdotファイルとかいうのを読み込むとできるようですが、graph…

Python3 - ヒープ

ヒープはノードに常に子供が2個あって、子供より親は小さい値を持ちます。ヒープは配列で表せます。配列の0番目は一番上の根ノードです。あとは、k番目のノードの子供は、左が2k+1、右が2k+2番目になります。挿入は最後に挿入して、親ノードと比較して必要に…

Python3 - グラフ・探索

参考:http://www.geocities.jp/m_Hiroi/light/pyalgo05.html グラフをプログラムする場合、よく使われる方法に「隣接行列」と「隣接リスト」があります。隣接行列は 2 次元配列で頂点の連結を表す方法です。頂点が N 個ある場合、隣接行列は N 行 N 列の行…

Python3 - NetworkXでグラフを表示する

https://networkx.github.io/ インストール https://github.com/networkx/networkx/ $ pip install networkx $ pip install decorator Decoratorというのも必要っぽい。両方ともすでに入ってた。 サンプルコード import networkx as nx G=nx.Graph() G.add_n…

Python3 - アルゴリズム(累乗)・計算量

累乗 pow0は遅いやつ。計算量はループをn回回すので、O(n)という。pow1は速いやつ。計算量はO(log n)らしい。 def pow0(x, n): value = 1 for i in range(n): value *= x return value def pow1(x, n): if n == 0: return 1 value = pow1(x, int(n / 2)) val…

Python3 - 動的計画法(フィボナッチ数列)

動的計画法は、分割統治法とメモ化を合わせた方法のことらしい。分割統治法は、問題を細分化して、細かい部分を順に解いていくことで全体を解明するようなことの総称らしい。 分割統治法は、コード的には下記のようになり、再帰することになる。 function co…

greedyアルゴリズム(貪欲法)

greedyアルゴリズムは、全部をN回試して、報酬の平均が最も高いやつを選択するというアルゴリズムです。 当たりか外れがでる機械が4個あって、どれが一番当たり率が高いか分からないのでgreedyアルゴリズムでやってみる想定にします。機械はa~dまであってそ…

Python3 - random

randomを試してみます。 下記をやってみます。100回randintを0~100まででやってみます。 import numpy as np import random import matplotlib.pyplot as plt arr = np.zeros([100]) for _ in range(100): a = random.randint(1, 100) arr[a - 1] += 1 x = …

手書き文字を作れるJavascriptをつくってTensorFlowで予測させてみた(2)

この前、「手書き文字を作れるJavascriptをつくってTensorFlowで予測させてみた」という投稿でブラウザ上で手書きした文字画像を、MNISTで訓練したモデルで予測してみましたが、ものすごく精度が悪かったです。今回改めて、CNNを使ってやってみたらかなり精…

TensorFlow - Local Response Normalization(LRN)(局所的応答正規化)

参考:theanoで局所コントラスト正規化(Local Contrast Normalization)を使う 正規化の方法にはいろいろあり、代表的なものを挙げると Global Contrast Normalization(GCN) Local Contrast Normalization(LCN) Local Response Normalization(LRN) ZCA whiten…

Python3 - NumpyとPythonの配列のスライスでマイナス使った場合

開始位置より終了位置が小さい場合は空。 マイナスの場合、後ろから数える。一番最後が-1。 終了位置が実際の配列の最後より大きい場合は、実際の配列の最後になる。 開始位置は0だったら0番目も含まれるが、終了位置が例えば10だった場合、9番目までが含ま…

TensorFlow - tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=None)

tf.nn.max_pool(value, ksize, strides, padding, data_format='NHWC', name=None) value: A 4-D Tensor with shape [batch, height, width, channels] and type tf.float32. ksize: A list of ints that has length >= 4. The size of the window for each …

TensorFlow - weight decay

機械学習のweight decayは、重みの2乗ノルム(L2ノルム)を損失関数に加えること。これによって重みが大きいと損失関数の値が大きくなるので、重みが大きくなりすぎないようになる。過学習は重みが大きくなることで発生することが多いからこういうことする。…

TensorFlow - tf.add_to_collection

tf.add_to_collection(name, value)は、tf.Graph.add_to_collection(name, value)のラッパーだそうです。 引数 name: The key for the collection. The GraphKeys class contains many standard names for collections. value: The value to add to the coll…