pytestについてのメモ
PyTestの階層問題
以下のようなディレクトリ構成の時、
. ├── main.py └── tests └── test_main.py
ルートディレクトリから
pytest
を行うためには、tests/に"init"ファイルを置いておくと 上記のコードを実行できる
つまり、以下のようになる。
. ├── main.py └── tests ├── __init__.py # new └── test_main.py
簡単なテストサンプル
main.py
from flask import Flask, render_template app = Flask(__name__) @app.route("/", methods=["GET"]) def index(): if request.method == "GET": return render_template("index.html") if __name__ == "__main__": app.run(threaded=True)
test_main.py
import unittest import sys import main class TestMain(unittest.TestCase): def setUp(self): self.app = main.app.test_client() def test_index(self): response = self.app.get('/') assert response.status_code == 200 if __name__ == '__main__': unittest.main()
djangoのメモ
django mysql
pip install django==2.1.7 pip install pymysql
manage.pyかsetting.pyの一番上に
import pymysql pymysql.install_as_MySQLdb()
setting.pyに
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 変更 'NAME': 'database_name', # プロジェクトで使用するデータベース名 'USER': 'root', # パソコンにインストールしたMySQLのユーザー名 'PASSWORD': '', # 同上。そのパスワード } }
django shell
>>> python manage.py shell from myapps.models import MyModel
credentials
https://www.django-rest-framework.org/api-guide/testing/
test
jwtで単体テストをする時のメモ
jwtでテストユーザーを作成してからテストを始める
サンプルコード
参考文献
https://stackoverflow.com/questions/47576635/django-rest-framework-jwt-unit-test
jsonで返す
from django.http import JsonResponse def hogeView(request): hoge = {} # データのセットとか return JsonResponse(hoge)
test時
エラー
django.urls.exceptions.NoReverseMatch: Reverse for 'insert_memo' not found. 'insert_memo' is not a valid view function or pattern name.
testしたいappのurlsの urls.pyにapp_nameとurlpatternsにnameの追加する必要がある
urlpatterns = [ path('', views.ListMemo.as_view()), path('<int:pk>/', views.DetailMemo.as_view()), path('insert_memo/', views.insert_memo, name="insert_memo"), path('get_memos/', views.get_memos, name="get_memos"), ] app_name = "memos"
Metaクラス
以下、参照 メタクラスは「「class文の持つ定義する機能」を定義する機能」があるのです。 「「定義する機能」を定義する機能」というのがメタと名付けられている所以です。 https://teratail.com/questions/87695
ユーザーを作る時のメモ
Django Login/Logout Tutorial (Part 1) - William Vincent
djangoの自作ライブラリの場所について
- すべてのアプリ全体で使うならsetting, urlsと同じところに
- 各アプリで使うなら各アプリのディレクトリ配下
https://teratail.com/questions/5316
djangoのテストについて
https://docs.djangoproject.com/ja/3.0/intro/tutorial05/
djangoの設定
https://qiita.com/okoppe8/items/e60d35f55188c0ab9ecc
pandasかどうかの確認(testのページにつくる)
mysqlについてのメモ
mysqlのインストールなど
sudo apt-get --purge remove mysql-server mysql-common mysql-client sudo apt update && sudo apt dist-upgrade && sudo apt autoremove sudo apt-get install -y mysql-server mysql-client sudo service mysqld start sudo mysql_secure_installation sudo mysql -u root -p
sql文の読み込み
mysqlにログインして
source xxx.sql
ログイン中のユーザーの確認
mysql>select USER();
ユーザーの確認
mysql>use mysql; mysql>select * from user;
確率に関してのメモ
点推定
具体的な数値を推定すること
区間推定
母数がある区間に収まることを推定すること
不変性
推定量の期待値が母数に一致すること
$$\begin{aligned} E[\hat{\theta}] = \theta \end{aligned}$$
一致性
標本の数が増加するにつれて、推定量は母数にに近づくこと。 具体的には以下の式で定義する
$$\begin{aligned} \lim{N\to \infty} P(|\hat{\theta}N-\theta| < \epsilon|) = 1 \end{aligned}$$ 上記のような状態に成る推定値(\hat{\theta})を一致推定量という
標本平均は一致推定量。それは
$$\begin{aligned} E[(\hat{\mu}-\mu)2] = \frac{1}{N}\sigma ^2 \end{aligned}$$ Nを無限に飛ばすと0となるので一致するので一致性推定量
信頼区間(Confidence interval)
(1-\alpha )の確率で、新の母数の値が区間([L, U])に入る区間のこと。
$$\begin{aligned} P(L \leq \theta \leq U) = (1-\alpha) \end{aligned}$$
scikit-learnについてのメモ
二乗誤差
>>> from sklearn.metrics import mean_squared_error >>> y_true = [3, -0.5, 2, 7] >>> y_pred = [2.5, 0.0, 2, 8] >>> mean_squared_error(y_true, y_pred)
クロスバリデーション
訓練データとテストデータの分離
backtesting.pyについてのメモ
Strategy
Strategy.data
Strategy.sell
- Let the strategy close any current position and use all available funds to short sell the asset for p
Strategy.buy
- Let the strategy close any current position and use all available funds to buy the asset for price
Strategy.position
- ポジションの確認
参考文献
ModuleNotFoundError: No module named 'apscheduler.scheduler'
aspchedulerが新しすぎると起こるみたい。
なので、
pip uninstall apscheduler pip install apscheduler==2.1.2