Python3関連のことを調べてみた2022年06月26日

Python3関連のことを調べてみた2022年06月26日
目次

DockerFileを利用した「Hello World」のブラウザへの出力方法

# やりたい事
 ブラウザ(ホスト側)からのHTTPリクエストにより、Docker(コンテナ)上のアプリからのレスポンス「Hello World」をブラウザ(ホスト側)に出力したい

 ■前提
  ・DockerFileを利用すること
  ・WebサーバにはPythonのFlaskを利用

 ■補足
  勝手に思っていることですが「ホスト」と「コンテナ」は
  別世界と捉えると色々理解しやすくなります
  ※違うかもしれませんが、現実世界とメタバース、みたいな関係?

  その別世界に対する「環境構築」までの手順は基本、ターミナルからのCUIベース。
  アプリの実行はブラウザ経由です。

# 知りたい事 
 大きくは下記の点です

  ・DockerFileとアプリケーションファイルの関連性
  ・Dockerを利用したブラウザ経由の通信の仕組み

# ステップ1:アプリケーションファイルを作る
 まずは、Docker関係なく、ローカル(ホスト側)で「Hello World」が出力されるAPファイル(hello.py)を用意

“`python:hello.py
from flas

元記事を表示

Python3ではじめるシステムトレード:モンテカルロ法によるアメリカンオプションの評価

2022/06/25 23:23

# アメリカンオプション

アメリカンオプションは為替市場などで活発に取引されているだけではなく、リアルオプションの分野でも重要なモデル化の手法の1つです。そこで、Pythonでいくつかの評価モデルを実装してみたいと思います。参考文献はフィナンシャルエンジニアリングbyジョン・ハルとオプション価格方程式by エスペン・ファウグです。

満期より前であればいつでも行使できるオプションは、アメリカンオプションと呼ばれます。このような金融派生商品の価値は、おもに満期までの原資産の価格の動きとオプション保有者の行使戦略により左右されます。しかし、このような未知な要素を行使戦略に含む構造は、理論価格の算出を困難にします。

アメリカンコールオプションの価値は

$C=\underset{\tau}{\max} E[e^{-r\tau}\max⁡(S_\tau-K,0)]$

として与えられます。早期行使を行う時刻$\tau$を停止時刻といい、$\tau\le T$(満期)で表します。時刻は有限な離散時間$ t_0=0

元記事を表示

Windows10 + Python3 + BeautifulSoup4 を試してみる

# 目的
[Yahoo!ニュース](https://news.yahoo.co.jp/)の主要トピックスに対してBeautifulSoupを使って以下を試したときのメモ
・Copy selectorの出力
・Copy XPathの出力
・find、find_allを使った例
検索結果で記述した日付が記述されていない記事は注意が必要
Yahoo!ニュースの構成が変更される頻度が多い??ようなので、まずはtagを検証する

## 使用するパッケージのインストール
“`
PS > pip3 install BeautifulSoup4
PS > pip3 install lxml
“`

## サンプルコード

“`python
# ここからは共通コード。
# Windows Add env PYTHONIOENCODING = UTF-8 & restart vscode
# coding:utf-8

from bs4 import BeautifulSoup
import urllib.request
import re
from lxml import etree
from l

元記事を表示

言語処理100本ノック解いてみた 6

“`python
str1 = “paraparaparadise”
str2 = “paragraph”
def bigram(string):
return [string[i:i+2] for i in range(len(string)-1)]
X = bigram(str1)
Y = bigram(str2)
print(X+Y)
dup = [_ for _ in X if _ in Y]
print([_ for _ in X if _ not in dup],[_ for _ in Y if _ not in dup])
print([[_,__]for _ in X for __ in Y])
if “se” in X: print(“X”)
elif “se” in Y: print(“Y”)
else: print(“None”)
“””
[‘pa’, ‘ar’, ‘ra’, ‘ap’, ‘pa’, ‘ar’, ‘ra’, ‘ap’, ‘pa’, ‘ar’, ‘ra’, ‘ad’, ‘di’, ‘is’, ‘se’, ‘pa’, ‘ar’, ‘ra’,

元記事を表示

pythonのアンダースコア

# pythonのアンダースコア(_)を使う
コードを見ていると所々に出てくるアンダースコア。
変数の頭に付いていたり、関数の頭に二つ付いていたり、どんな意味があるかまとめた。

### 必要のない値を一時的に格納するもの


・for文
“`
# 単純に文字列を5回出力したいだけ。range()から取り出した変数は使わない。
for _ in range(5):
print(“test”)
“`
・return値を返さない
“`
def main():
a = “hoge”
b = “fuga”
return a, b

if __name__ == ‘__main__’:
# aしか出力しない
# bは廃棄される。
a, _ = main()
print(a)

“`

### 関数名や変数名の頭に1つ付いているもの
クラス内メソッドや変数
あくまでも慣例的なので、外部からアクセス可能
importのワイルドカードで読み込まれない

### 関数名や変数名の頭に2つ付いているもの
ネー

元記事を表示

Pythonでポケモン御三家の種族値をソートする

初投稿 & タイトルの通りです。

大学院の研究でグラフを描くために最近Pythonを使っているのですが「どうせなら言語丸ごと習得してしまうか~」と思い立ち、着想から約2~3時間ほどで書きました。

ご指摘やアドバイスの他、「こういう機能作ったらいいんじゃない?」などありましたら是非コメントいただけますと大変有り難いです。

“`python
import pprint

#御三家の種族値のタプルリスト
pokemon_data = [
(“フシギバナ”, 80, 82, 83, 100, 100, 80, 525),
(“メガニウム”, 80, 82, 100, 83, 100, 80, 525),
(“ジュカイン”, 70, 85, 65, 105, 85, 120, 530),
(“ドダイトス”, 95, 109, 105, 75, 85, 56, 525),
(“ジャローダ”, 75, 75, 95, 75, 95, 113, 528),
(“ブリガロン”, 88, 107, 122, 74, 75, 64, 530),

元記事を表示

DockerでCentos7 Python3.6の環境を構築 & Jupyter Lab

# 構築内容
“`
Centos7
Python3.6
Jupyter Lab
“`

# クローン
以下リポジトリをクローンする
https://github.com/yamada-ham/centos7_python3.6

# コマンド ビルドして起動
“`
$ docker-compose up -d
“`

# コンテナに入る
“`
$ docker-compose exec centos bash
“`

# Jupyter起動
“`
$ jupyter lab –ip=0.0.0.0 –port 9999 –allow-root
“`

元記事を表示

【音声認識】MFCCからlog-mel スペクトルで深層学習をしたら正解率が上がった

本記事では、[MFCC(メル周波数ケプストラム係数)入門](https://qiita.com/tmtakashi_dist/items/eecb705ea48260db0b62)の記事で見かけた[Deep Learning for Audio Signal Processing](https://arxiv.org/abs/1905.00078)の論文で特徴量抽出をMFCCからlog-mel スペクトルにして深層学習にするとよい、というヒントから実践してみた記事です。

# メル尺度
メル尺度は、定性的には人間の音高の知覚的尺度です。数式的定義は次のようになります。

“`math
m = m_{o} \log\left(\frac{f}{f_o} + 1\right)
“`

ただし、$f_o$はパラメータの一つの周波数パラメータで、$m_o$は「1000Hzは1000メル」という制約から導かれる式、
“`math
m_{o} = \frac{1000}{\log\left(\frac{1000\rm{Hz}}{fo} + 1\right)}
“`
で算出される従属パラメー

元記事を表示

attributeに指定するlocationIdは、locationのlocationIdではない(GoogleMyBusiness API)

# 前置き
GoogleMyBusinessのBusinessInfomationAPIでlocationを更新する際は、location_idを指定する。
locations.attributesを更新するには以下のように行う。

“`py

location_location_id = location.get(“name”).split(“/”)[-1]
attr_response = self.api.attributes.get(location_id)
attribute_location_id = attr_response[“name”].split(“/”)[1]

attribute = gen_attribute(attribute_location_id)

# attributesAPIにpatchでリクエストするとattributesを更新できる
response = self.api.attributes.patch(location_location_id, attribute, field_mask)

“`

attributesを更新する際に

元記事を表示

カスタムモデルを sagemaker neo コンパイルしようとしてハマった

## 表題の通りコンパイルしようしてハマった以下エラー

“`py: error
ClientError: InputConfiguration: Unable to load provided Keras model. Error: Unknown layer: Functional For further troubleshooting common failures please visit: https://docs.aws.amazon.com/sagemaker/latest/dg/neo-troubleshooting-compilation.html
“`

– 原因は、カスタムモデルのネスト構造をフラット処理しようとした時に、tensorflow のバージョンを違うものにしていたので、エラーが出ていた。
バージョンを統一することで解決。

しかし、わかりづらいエラーの内容にハマった。面倒くさい。。。(笑)

元記事を表示

Pandas: データフレームについて–11: 重複データの処理

# 重複データの処理

列単位でユニークな値,行単位でユニークな行についての処理を行う。

“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [4, 4, 1, 5, 1, 3, 4, 3, 5, 3, 3, 4, 3, 3, 5],
‘b’: [4, 1, 4, 3, 1, 2, 4, 4, 2, 1, 1, 1, 1, 3, 3]
})
df
“`

Pandas: データフレームについて–10: データの置換

# データの置換

欠損値 `NaN` の置換については, 「Pandas: データフレームについて–02: 欠損値の扱い」を参照のこと。

“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, 9.0]
})
df
“`

天気予報データを解析してみよう 〜数値予報から時系列グラフを作る〜

この記事では、気象庁が配信する天気予報の基礎資料となる数値予報データを扱って、将来の気圧の時系列グラフを作成する方法を紹介します。

# はじめに
みなさんが見ている天気予報は、さまざまな機関(気象庁)や民間の気象会社がそれぞれ持つノウハウ等を注ぎ込んで将来の天気を予想した結果です。ただそのベースは共通していて、コンピュータが将来の地球表面のようすをシミュレーションによって予測しています。この手法は、機械で数値的に計算することから**数値予報**と呼ばれています。

日本では気象庁が数値予報の業務を行っていて、その予報結果は気象業務支援センターを通じて契約者向けに公開されています。公開されたファイルには、気温、湿度、気圧、風、日射量…といった値が一定間隔に置かれた緯度格子、経度格子ごとに収録されています。こういった、等間隔に区切った格子ごとに気象要素を収録したデータは**GPVデータ**(Grid Point Value Data)と呼ばれます。日本語にすると格子点値データなのでそのままですね。

GPVデータの形式は、世界気象機関(WMO)が定めた二進形式格子点資料気象通報式(第2版

Pandas: データフレームについて–09: データフレームを表示する

# データフレームの表示

“`python
import pandas as pd
import numpy as np

n = 65
np.random.seed(123)
df = pd.DataFrame({
‘a’: np.arange(n) + 100,
‘b’: np.random.rand(n),
‘c’: np.around(np.random.normal(50, 10, n)),
‘d’: np.random.choice([‘A’, ‘B’, ‘C’, ‘D’, ‘E’], n)
})
df
“`