- 1. Python3ではじめるシステムトレード: システムトレードにおける対数の役割
- 2. Anaconda3環境で,cadnano2.5をインストールする
- 3. Anaconda3環境で,cadnano2をインストールする
- 4. ゼロから始めるLeetCode Day72 「1498. Number of Subsequences That Satisfy the Given Sum Condition」
- 5. 割り算の切り上げ
- 6. 店舗に設置された監視カメラの画像を使って来店客の状態を識別してみる
- 7. YOLOv3で物体検出 with TensorFlow 2 + Colaboratory
- 8. python matplotlibを用いた複数の表描出に関する疑問
- 9. ゼロから始めるLeetCode Day71 「1496. Path Crossing」
- 10. Selenium x GeckoDriverでダウンロードができなかったのを解決した関数
- 11. 弱参照を使う
- 12. DynamoDB Streamを用いて、日付のパラメータを与えながらLambdaを繰り返し呼び出す
- 13. ノイズ処理でnp.fft.fftにデータがうまく渡せません。教えてください。
- 14. Pythonのf-stringsについてしっかり調べてみた
- 15. 【備忘】Google Colaboratoryでカスタムモジュールをインポート
- 16. K-Shape法を用いて心電図データをクラスタリングしてみた
- 17. Pythonで文字列の”一部分”反転方法と気をつけること
- 18. ゼロから始めるLeetCode Day70 「295. Find Median from Data Stream」
- 19. 製薬企業研究者がPythonのユニットテストについてまとめてみた
- 20. 2値分類問題を解くAutoMLを自作した(その2)-学習と予測-
Python3ではじめるシステムトレード: システムトレードにおける対数の役割
システムトレードという言葉は和製英語で正式にはsystematic tradingといいます。予め定められた規則に従って株式、債券、為替などの流動性の高い(取引の活発な)金融商品を売買する方法だと考えればよいと思います。長い間、金融商品の価格を科学的に分析するといっても、十分なデータが得られずに来ました。そのために、イデオロギーや概念、語り継がれている売買手法が注目を浴びてきました。しかし、システマティック・トレーディングの世界ではデータを重視して、売買の方法を探していきます。したがって、本書がもっとも大事にしているのが
データ
モデル
売買の規則
一貫性
です。データを客観的に分析するために、価格の動きのメカニズムを説明するモデルを考えます。また、投資目的を達成するために売買の方法を作り上げていきます。設計した売買が実現可能かどうかを判断するためには、金融市場の売買のメカニズムを知っている必要があります。そして、出来上がった取引手法の作り出す成果、またはその効果を客観的に判断するために、統計的手法を用います。
# 利回り、収益率、変化率
投資によりどれだけの収益が得られたか
Anaconda3環境で,cadnano2.5をインストールする
# 前書き
別記事 (https://qiita.com/ktmene/items/9546bb3379973fd3e88a ) にAnaconda3環境でcadnano2をインストールする方法をまとめました.
この記事では,現在開発途上にあるcadnano2.5をインストールする方法をまとめます.
## 参考
https://github.com/douglaslab/cadnano2.5
https://cadnano.readthedocs.io/en/master/index.html
# 実行環境
– windows10
– Anaconda3 (Python3系)# cadnano2.5のインストール
python3.6の仮想環境を作る
※3.6でないとだめ“`
$ conda create -n cadnano2.5 python=3.6
> Proceed ([y]/n)?
$ y
“`仮想環境に移動
“`
$ conda activate cadnano2.5
“`インストール
※これで必要なパッケージを全てインストールしてく
Anaconda3環境で,cadnano2をインストールする
# 前書き
私はAnacondaを使ってpython環境を構築しています.
現在,インストーラでインストールできるcadnanoは,python2.7でしか動かず,パスを通す必要もあって不便でした (https://cadnano.org/windows-installation.html ).
そこで,cadnano (cadnano2) をpython3系で使えるようにする方法をまとめました.
この方法でインストールしたcadnano2は少しバグが多いかもしれません.
## 私の環境でのバグ
見つけたらメモしていきます
– 上書き保存をすると,ファイル名が`C`(拡張子なし)になり,保存先も`cadnano2`フォルダ直下になる.
– deleteで要素を消せなくなるときがある.(cadnano再起動で直る)
– pencilで繋いだときに表示がおかしくなる.(そのcross overを少し動かすと直る,python2版のcadnanoも同じ症状あり)## 参考
– [cadnano2](https://github.com/douglaslab/cadnano
ゼロから始めるLeetCode Day72 「1498. Number of Subsequences That Satisfy the Given Sum Condition」
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
割り算の切り上げ
pythonコードを読んでいて不思議な記述を見かけたのでメモ。
割り算で切り捨てをしたい場合は、`//`を利用することができます。
切り上げをしたい時には`math.ceil`が利用できます。
というのが基本だと思うのですが、もっとお手軽に切り上げすることができるみたいです。
## -1を2回かける
マイナスの値に対して切り捨て演算をすることで、値は小さい方に寄ります。
そこにもう一度-1をかけることで、切り上げ演算と同じ結果を得ることができます。“`python
>>> 10//3
3
>>> -10//3
-4
>>> -(-10//3)
4
“`## 0–10//3
`0–10//3`も、`math.floor(10/3)`と同様の結果を得ることができます。“`python
>>> 0–10//3
4
“`pythonには`–`という演算子はありません。
一見不思議に見えるこの式は、優先順位がわかりやすいように括弧をつけると以下のようになります。[参考: 公式ドキュメント](https://docs.python.org/ja/3/
店舗に設置された監視カメラの画像を使って来店客の状態を識別してみる
# はじめに
小売店舗の経営者さんから「監視カメラの映像を使って来店客の分析をしたいけど、何か方法ないかな?」と質問があり、詳しく聞いてみるとカメラ画像とレジデータの突合をし、商品を購入されたお客さんの性別や年齢と購入されたものを分析して、仕入れの計画を立てる参考資料にしたいとのこと。
ということで、手始めに監視カメラのことを調べ、監視カメラの画像をパソコンに取り込めるようにし、カメラの画像から商品を購入された来店客を抽出して、時間ごとに表示することで、レジの記録と突合しやすくなるのかなと考え、試してみたら意外と簡単にできたので、以下に手順をまとめます。
なお、監視カメラはレジカウンターの斜め後ろ奥に設置され、レジカウンター越しに店内を映しています。
# やったこと
1. 監視カメラの画像をパソコンに取り込む
2. 監視カメラの画像から人を抽出
3. 抽出した人の状態を識別# 動作環境
## 機器
– 監視カメラ(CVI方式)
– [AHD/TVI/CVI to HDMI変換器](https://amzn.to/2Zm0kOb)
– [HDMI to USBキャプチャ
YOLOv3で物体検出 with TensorFlow 2 + Colaboratory
# はじめに
去年からYOLOを使ってシステムを構築していたのですが、TensorFlowのバージョンが2になってから従来の手法([keras-yolo3](https://github.com/qqwweee/keras-yolo3))が利用できなくなってしまいました。
結果として、TensorFlowのバージョンを1.14に下げて運用するようにしていたのですが、どうしてもTensorFlow2系を使わなくてはならず、方法を探していたらうまくできたのでまとめておきます。
# 動作環境
– [Colaboratory](https://colab.research.google.com/)
– Python 3.6.9
– TensorFlow 2.2.0
– [yolov3-tf2](https://github.com/zzh8829/yolov3-tf2)ここで紹介した内容は以下のURLにて確認することができます。
https://colab.research.google.com/drive/1IICGm0pA93JKqtvaJumHTW1MGO7_uLi8?usp
python matplotlibを用いた複数の表描出に関する疑問
pythonでのmatplotlibを用いたグラフ表記について調べている中で、以下のエラーが発生しました。pandasのdataframeから、複数の表を同時に作成しようとしたところ、表が重なってしまいうまく描画できませんでした。
環境:Python 3.8.2, matplotlib 3.2.1
“`
fig,axes = plt.subplots(nrows=14,ncols=3)
for column in df.columns:
i=0
try:
axes[i].plot(df[column],df[‘Y’],alpha=0.3)
i = i+1
except:
pass
“`
「表が重なっている」という理由から、nrows=3,nrows=1に変更したところ、表がうまく描出できました。複数の表(例えば、14行*3列)を一度に描出する方法はあるのでしょうか。駆け出しで拙い質問で申し訳ございません。
原因または解決法をご存知の方はコメントいただけますと幸いです。
ゼロから始めるLeetCode Day71 「1496. Path Crossing」
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
Selenium x GeckoDriverでダウンロードができなかったのを解決した関数
# Chromeが使えないPCが存在した
今回のはこれが原因でFirefox利用になりました。
https://forest.watch.impress.co.jp/docs/news/1226294.html# ダウンロード処理の際にダイアログが出てきてしまって詰まった
ざっくりと調べたところ、`result.set_preference(“browser.helperApps.neverAsk.saveToDisk”, mimetypes)`
でしっかりとMIMEタイプを指定できれば良いようです。今回ダウンロードしたいファイルはtxtなので、`text/plain`でいいと思ったのですがそれではうまくいかない….# MIMEタイプを調べる方法
解決にはこのページが役に立ちました。
https://stackoverflow.com/questions/39519518/python-selenium-firefox-neverask-savetodisk-when-downloading-from-blob-url
実際は上記のサイトとは微妙に異なっていました。
バージ
弱参照を使う
Pythonでなんらかのクラスのコレクションのようなものを作るとき、親になっているオブジェクトの参照を持っておきたい ということはあると思います。
そんなとき、他の言語などだとときどき、`owner`という変数を作って親オブジェクトの参照を持っておく などと言うことがあるのですが、そのまま実装すると循環参照となり、取得したメモリが意図したタイミングで解放されなくなることがあります。
“`py:循環参照が起こりうるコード
class ParentClass:
def __init__(self):
self.child = []class ChildClass:
def __init__(self, owner):
self._owner = ownerp = ParentClass()
p.child.append(ChildClass(p))
# …
“`こんなときのために、オブジェクトを参照する際に参照カウンタを増やさない、**弱参照(weakrefモジュール)**というものがあります。
* [weakref \-\-\- 弱参照
DynamoDB Streamを用いて、日付のパラメータを与えながらLambdaを繰り返し呼び出す
## はじめに
パラメータを変えながらLambdaを繰り返し実行したくてDynamoDB Streamを使いました。参考までにと思い投稿してみました。この記事ではAWS LambdaからDynamoDBに日付などの数字を書き込んだのち、DynamoDB Streamを用いて同じLambda関数を呼び出し、書き込んだ日付について処理を行う実装をします。
ランタイムはPython3.8を選択しています。
Lambdaの設定で「ハンドラ」は「lambda_function.lambda_handler」であるものとし、
LambdaのロールにはDynamoDBFullAccess権限が付与されています。### この方法を使ってよかったこと
自分の場合はS3でyyyymmddフォルダに入ったファイルを処理する必要に迫られましたが、
Lambdaの性質上+自分の技能上の都合で、「どのファイルを処理するか/したか」をどこかに持たないと再実行は実装できませんでした。が、大量のファイル名をリクエストに手書きする訳にもいかず・・・そんな悩みをここに書いてある方法で解決することが出来ました。
ノイズ処理でnp.fft.fftにデータがうまく渡せません。教えてください。
プログラム初心者です。
windows10,python 3.8,IDLEで作っています。脳波のノイズ処理プログラムをいろいろ組み合わせながら作成したのですが、
np.fft.fftでデータがうまく渡せていないようです。
111行目では、読み込んだ―データをfloatの配列で読み込めています。
プログラムが動作しているか確認の為に、60行から73行目まで
元の波形とそのFFT、IFFTとカット後の波形を表示するプログラムを入れております。
そのグラフをみると、元データはきちんとプロットされているのですが、FFTを見ると、
元データと同じような表示になっているためFFTがうまく動いていないように見えます。
どこを触ったら修正できるのか見当がつかなくなったので、投稿させていただきました。
参考としたプログラムは以下のサイトのものです。
https://qiita.com/ajiron/items/ca630de8b6e3ed28ad1e
https://qiita.com/spicy_HotChicken/items/83c329c4eb0ea9401fe5“`
# – codi
Pythonのf-stringsについてしっかり調べてみた
Pythonの文字列関係の制御を調べていて、f-strings(f文字列)が結構奥が深く知らないことも多かったので、別途Qiita記事にまとめておきます。
# そもそもf-stringsってなに?
Pythonで文字列の前に`f`という文字を付与し、且つ`{}`の括弧を使うことで文字列中に変数を展開したりコードを実行したりできる機能です。
以下のようなコードになります。
“`py
name = ‘タマ’
txt = f’猫の名前は{name}です。’
print(txt)
“`“`
猫の名前はタマです。
“`# 主な参考サイト
f-stringsについて詳しく説明がされている[PEP 498 — Literal String Interpolation](https://www.python.org/dev/peps/pep-0498/)を主に参考にします。
# 記事上で使う環境
– Windows10
– Python 3.8.0
– Jupyter(実行にはVS CodeのPython拡張機能を利用)# f-stringsを使うと何が嬉しいのか?
【備忘】Google Colaboratoryでカスタムモジュールをインポート
## 手順
**1. Google Driveをマウント**“`python
from google.colab import drive
drive.mount(‘/content/drive’)
“`**2. sys.pathl.append()でパスを通してインポート**
例として次のようなファイル構成だったとします。
– My Drive
– colab Notebooks
– module
– utils.py
– my_modules.py※:「MY Drive」がGoogle Driveのルートディレクトリ
このファイル構成でカスタムモジュールをimportするには次のように`sys.path.append()`でモジュールの親ディレクトリまでのパスをシステムに伝える必要があります。
“`python
import sys
ROOT_PATH = ‘drive/My Drive/ colab Notebooks/module/’
sys.path.append(ROOT_PA
K-Shape法を用いて心電図データをクラスタリングしてみた
# 本記事サマリ
– K-Shape法を用いて時系列データをクラスタリングしてみる# データセット
– 今回はカリフォルニア大学リバーサイド校の時系列データコレクション(UCR Time Series Classification Archive)を使います– 心電図(ECG)は心疾患検出を促進するものとして知られています
– 使用する**ECGFiveDays_TRAIN.tsv**の中身は以下の通りです
“`python:DataFrame
df = pd.read_table(“ECGFiveDays_TRAIN.tsv”,header=None)
df.head(10)
“`![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577151/e92cecd3-489c-4f95-ee10-d51564f2242a.png)
データサマリはこちら
“`python:Summary
import numpy as
Pythonで文字列の”一部分”反転方法と気をつけること
#はじめに
pythonで文字列を反転するときにスライスで[::-1]をよく使いますが、
普通のスライスは“`[left:right+1:step]“` で**left
ゼロから始めるLeetCode Day70 「295. Find Median from Data Stream」
# 概要
海外ではエンジニアの面接においてコーディングテストというものが行われるらしく、多くの場合、特定の関数やクラスをお題に沿って実装するという物がメインである。
どうやら多くのエンジニアはその対策としてLeetCodeなるサイトで対策を行うようだ。
早い話が本場でも行われているようなコーディングテストに耐えうるようなアルゴリズム力を鍛えるサイトであり、海外のテックカンパニーでのキャリアを積みたい方にとっては避けては通れない道である。
と、仰々しく書いてみましたが、私は今のところそういった面接を受ける予定はありません。
ただ、ITエンジニアとして人並みのアルゴリズム力くらいは持っておいた方がいいだろうということで不定期に問題を解いてその時に考えたやり方をメモ的に書いていこうかと思います。
[Leetcode](https://leetcode.com/)
Python3で解いています。
[ゼロから始めるLeetCode 目次](https://qiita.com/KueharX/items/6ee2502c3b620c795b70)
前回
[ゼロから始めるLeetC
製薬企業研究者がPythonのユニットテストについてまとめてみた
# はじめに
ここでは、`unittest`を用いたPythonのテストについて解説していきます。
# テストの基本
テストは、対処となる関数に対応させるように、以下のように書きます。
“`python
import unittestdef average(num1, num2):
return (num1 + num2) / 2class AverageTests(unittest.TestCase):
def test_average(self):
actual = average(1, 2)
expected = 1.5
self.assertEqual(actual, expected)
“``average`という関数に対して、`AverageTests`というclassが用意され、このクラス内のメソッドとして、`test_average`が書かれています。
このように、テスト用の関数は`test_テスト対象の関数名`とすることが多いです。# `assert`メソッド
2値分類問題を解くAutoMLを自作した(その2)-学習と予測-
その1の記事に引き続き、[自作のAutomated Machine Learning(AutoML)プログラム][1]の解説を書きます。
[1]:https://github.com/bright1998/AutoML_Binary_Classification/blob/master/AML_binary-classification.py##【データの分割】
“`
# モデル用データの分割
X_train_eval, X_test, y_train_eval, y_test = train_test_split(X_fin_m, y_m, train_size=0.8, test_size=0.2, random_state=1)
X_train, X_eval, y_train, y_eval = train_test_split(X_train_eval, y_train_eval, train_size=0.8, test_size=0.2, random_state=1)
“`
学習用、検証用、テスト用のデータに分割しています。今回はテスト用とし