Python関連のことを調べてみた2021年11月06日

Python関連のことを調べてみた2021年11月06日

株価シュミレーターの計算結果確認ツール作成

###今回は、前回3部作で紹介させて頂いた、「なんちゃって株価データ」生成ツールGUI版用の、生成データ可視化専用ツールについて簡単に触れさせて頂きます。

##この可視化ツールが出来ること・・・
この可視化ツールは、前回までのデータ生成ツール専用に作られていますので、他のケースへの転用を検討される場合は、その関連部分を書き直して頂く必要があります。

下図は、このツールを使ってSingleStore向けに生成された株価データを可視化した例になります。
基本的にはPython界の汎用モジュールを幾つか組み合わせたモノになりますので、改造や他のデータ可視化の際にも柔軟に対応出来るかと思います。

![スクリーンショット 2021-11-05 7.52.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/01b0ae3f-1ff7-e0d3-6990-5d49b88864b9.png)

データの可視化・・・・と最近よく耳にされるかと思います。確かに自分で作って言うのも・・の典型的なパターンで

元記事を表示

株価シュミレーター(?)を作る(3)

###今回で株価シュミレータ(?)のGUI部分を紹介させて頂き、取り急ぎ・突貫工事で急遽作成した「なんちゃって株価データ生成ツール」の全3部作を終了とさせて頂きます。

##ただひたすらに・・ただ懸命に書き並べて、表示して、位置調整して・・・・・
今回は最終段階の、GUIツールの定義部分になります。基本的には定型的な書き並べを繰り返していく事になるのですが、むしろその後の微調整時間に手数を「修行の様に」多く取られる作業になるかと思います。

・・・最近、この類いの作業を多く行う機会が有り、やっぱりUIデザイナーさん達は凄い!
と感じる次第です。。。(汗)

特に難しい点は無いと思いますので、詳しい説明は割愛させて頂きます。
記述の順序は、GUIの上から順番(実際には位置調整のパラメータ合わせ作業を行い易くする意図・・丸見えですが・・・(苦笑))に並んでいます。

~~~Python
#
# メインの処理
#
# 生成するデータの個数
label1 = tk.Label(root, text = “生成するデータの数”)
label1.place(x = 20, y = 20)
Gen_

元記事を表示

株価シュミレーター(?)を作る(2)

###前回は、「なんちゃって株価シュミレーター」の前半部分を、出来上がりのGUIイメージと生成されたデータ可視化の例で、取り急ぎの紹介をさせて頂きました。

今回は、引き続きPythonコードの中盤部分で、今回の肝とも言える部分の公開・紹介等を進めて行きます。

今回のツールを取り急ぎ作成しなければならない状況で、むむむむ・・・・と唯一考え込んだ「なんちゃって株価の計算」をどうするか?について、苦しいときのGoogle先生頼み!で行き着いた公開ブログ情報が下記になります。(ご参考まで)

https://blog.porto-folio.net/2020/02/blog-post_20.html

幾つかのパターンをシュミレーションした所、最も変化が解り易くコード自体もシンプルでしたので、今回のツールで参考にさせて頂きました。(その他の部分も含めて、知らない事が「ドン!」と書いてありましたので、非常に有益な技術情報(株式系技術ノウハウ)だと思います) 

また、この場をお借りしてブログの作者様に厚く御礼申し上げます。

因みにこの式・・・多分他のシュミレーションにも使えると思うので、こ

元記事を表示

株価シュミレーター(?)を作る(1)

###今回から数回に分けて、Pythonを使った「なんちゃって株価データ作成ツール」の解説をさせて頂きます。

本来であれば、前回のデータ生成ツールの公開・共有をさせて頂く予定でしたが、別件でEqualumが自動的に即時掻き集めてくるデータを、SingleStore上で瞬時に(10数億件を3秒以内にSQL処理した国内実績・・)処理して、機械学習経由のAI予測・・という話が飛び込んできましたので、急遽の方針変更で株価(的な)データ生成ツールを作ってみました。

##出来上がるとこんな感じ・・・・
今回は、デモ等で使い易くするためにGUIベースのツールとして作成します。基本的には、計算に必要なパラメータを設定して、ボタンの選択イベントで計算・処理等を制御する仕組みになります。

![スクリーンショット 2021-11-05 8.45.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/197589/fd0f1326-033b-63e7-22d6-4c687732d904.png)

##Pythonコードの

元記事を表示

複素数の対数の写像について

#はじめに
 プログラムでlog(-1)と書くと、NaN(非数)が返されます。自分のプログラムでは、0のように扱われていたので、このことに無頓着であまり気にしていませんでした。よくよく調べると、log(-1)は実数では存在せず、虚数なら存在するということを知ったので、いろいろ試した結果のまとめです。

#オイラーの公式
e^iθ = cosθ + i sinθ
から
e^iπ = -1
となり両辺の対数をとって
log(-1)=log(e^iπ)
が得られます。
log(e^iπ)は当然iπなので
log(-1)=iπ
負の対数は、虚数となることが確認できます。

#google
 googleの検索ボックスに「log(-1)/log(e)」と入力すると「3.14159265 i」と答えが返ってくることからgoogleは複素数を扱えるようです。なおgoogleのlogは底が10なので、式変形して使ってます。

#多価関数
さて、この複素数の振る舞いがよくわかりません。
log(-1) = πi
log(-2) = 0.693147181 + πi
log(-3) = 1.0986122

元記事を表示

【Python × bottle】 PCで立ち上げたローカルのサーバーに、スマホからアクセスする方法

# 目的
Python のライブラリ bottle を使用してローカルなサーバーを作成する
手持ちのスマホから作成したサーバーにアクセスする
(作成したサーバーへPC以外を使用して接続するのに少し詰まった。備忘録として載せる。)

# 手順
① : bottle でサーバーを作成
② : PCとスマホ の wifi環境 を統一する
③ : PCから wifi のIPアドレスト取得する
④ : ③のIPアドレスをもとに スマホからサーバーへアクセス

# ① : bottle でサーバーを作成

※Pythonの環境構築 や bottleのインストール については省略

“`BottleSample.py
from bottle import route, run, template

@route(‘/hello/‘)
def index(name):
return template(‘Hello {{name}}!’, name=name)

# ポートは任意 (スマホから接続するときに使用する)
run(host=”0.0.0.0″, port=

元記事を表示

netkeibaスクレイピング

**スクレイピングは節度を守って行いましょう。**(ここに書いてあるものは全て1秒以上の間隔をあけています)
また、出てくるデータが若干汚いですが、後で整形すればいいやという気持ちでやっています。
また、掲載にあたって少しコードをいじったので、動かないことがあります。

# レースIDの取得
netkeibaでは、各レースがレースIDという数字で管理されているようです。レース一覧のページから、当日の各レースについてレースIDを取得できます。

“`python
def get_raceid_list_from_date(today):
date = f'{today.year:04}{today.month:02}{today.day:02}’
url = ‘https://db.netkeiba.com/race/list/’ + date
html = requests.get(url)
html.encoding = “EUC-JP”
soup = BeautifulSoup(html.text, “html.parser”)
r

元記事を表示

【Python初学者】自然言語処理の基礎を理解する。

##はじめに

この記事の対象者は「機械学習初学者」です。
つまり私です。

##自然言語とは
自然言語ってなんだろう。
まずは、そこから理解しました。

例えばpythonのようなプログラミングで使う言語が
「固い言語」としたら、
普段私たちが使う言葉は**「やわらかい言葉」**です。
1つの言葉や文字にも複数の意味があり
時代によって消えたり増えたりする
まさに生きているような言葉が**「自然言語」**です。

そんなやわらかい言葉を
頭の固い(?)コンピュータに理解させる技術が
**自然言語処理**です。

##実践したこと
早速、以下の文を名詞抽出してみました。

“`
text = ‘こんにちは。最近Python学習を始めたさとちんといいます。’
“`
MeCabをインポートして-Ochasen を使用して
形態素解析(品詞などを必要な情報を分ける)します。

“`
import MeCab

# -Ochasen を使用
mecab = MeCab.Tagger(‘-Ochasen’)

# 形態素解析
res = mecab.parse(text)
print(

元記事を表示

【勉強メモ5】教師無し学習(KMeans)

#始めに
今回記事作成者の機械学習の勉強&メモのために記事を作成しています
間違いなどありましたらコメントにてご指摘いただけると幸いです。

#参考資料

Discordでレギオン運営支援Botを運用してみた(保守・今後の展望編)

本記事は下記の記事のその後の運用編になります。
導入までの経緯と初期導入についてはこちら

https://qiita.com/shamimi367/items/996612e2e845fe9d1db3

# 本記事の想定読者
・discordでなんらかのBotを使用している
・pythonでなにか作ってみたい
・アサルトリリィ Last Bullet(#ラスバレ)をプレイしている
・discordで専用サーバを運営しているレギオンの管理者の皆様

# 動作環境
Python 3.9.7
Heroku
Heroku Postgres
Google Cloud API(Drive API/Sheets API)
Googleスプレッドシート

# 使用ライブラリ
discord.py
gspread 
psycopg2
psycopg2.extras 
oauth2client

# 構成概略
![Untitled Diagram.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1138438/8fadb6

元記事を表示

spaCyとGiNZAを使った日本語自然言語処理

# はじめに

本記事では、spaCyとGiNZAを使った日本語の自然言語処理の手順を紹介します。
コードの部分ではspaCyのクラスがわかるように示していますので、ぜひ公式ドキュメントも参照ください。

## 想定する読者

以下の人を想定して書いてます。

– 日本語の自然言語処理に興味がある人(※自然言語処理に関する知識は必要ないです。)
– Pythonのソースコードが読める人

# 使用するライブラリ

今回はspaCyとGiNZAという2つのライブラリを使用します。

## spaCyとは

spaCyは高度な自然言語処理を行うためのライブラリです。
自然言語処理では対象とする言語(日本語や英語)によって必要な処理や複雑度が変わるのですが、spaCyは多言語対応を意識して設計・開発されており、そのアーキテクチャから学べることも多く非常に良くできたライブラリです。

https://spacy.io/

spaCyでは訓練済みのモデルを読み込むことで多言語の自然言語処理に対応します。

## GiNZAとは

GiNZAは日本語の自然言語処理を行うためのライブラリでリクルー

元記事を表示

RDKitのフィンガープリントをPandasのデータフレームに取り込んで使い倒そう

#はじめに
化学構造を用いた機械学習手法では、説明変数としてRDKitやmordred等で提供される記述子が良く用いられているが、これ以外にフィンガープリントも用いられる。

フィンガープリントについて詳しくは[参考文献](https://future-chem.com/rdkit-fingerprint/)を参照してほしい。

フィンガープリントには多くの種類があり、RDKitやmordredの記述子と組み合わせることで予測モデルの精度向上が期待できる。また、手法によってはフィンガープリントのビットから部分構造が特定できるものがあるため、どの部分構造が予測に寄与しているのかを知ることも可能となる。

フィンガープリントを用いた化合物の類似度の計算については記事が多くあるが、計算結果を機械学習の説明変数に利用する事例は少ない(気がする)。

本記事ではRDkitで用意されている様々な種類のフィンガープリントについて、主に機械学習の説明変数として用いるためにPandasデータフレームに取り込む方法について解説する。

# 環境
– RDKit 2020.09.3

# 前準備
本記事の

元記事を表示

音データの前処理・次元削減 Hz領域からmel領域へ

# 音データの前処理・次元削減 Hz領域からmel領域へ
## 内容

* メル尺度とは
* 実際にメル変換してみる
* おまけ:メル逆変換してみる

## 導入
音声データ分析する時,1chだと特にスペクトログラムで分析する事が多いよね.
そんで音声データもサンプリングレートが10000Hzを上回ることもざらですよね.
なので次元を落としたい!
ってことでHzからメル尺度へ変換です.
## メル尺度ってなんぞや
音声データ(音響データ含む)に行う前処理・次元削減として使われる
人間の感覚に近い音の尺度ってことでわりと好まれてる
周波数が2倍になるとオクターブが1上がり,周波数が4倍になるとオクターブが2上がるといった音の高さに着目した尺度みたい.

$$m = m_0 \ln\Bigl(\frac{f}{f_0}+1\Bigr)$$
なので周波数$f$に対して対数(log)をとってますね.

定義では1000メルが1000Hzになるようにしているらしいけど,定義をそのまま使うことはほぼない…
よく使われるのは,音声データをメル尺度上で等分割するって手法で,
例1:1次

元記事を表示

pythonの真偽値と条件分岐

pythonで、Noneかどうか、空文字列かどうか、空配列かどうか、空辞書かどうかの判定とその時の処理の書き分けで迷いがちです。

それらを正しく書き分けるためには、何が`None`で何が`True/False`で、それらがどうやってや`if`文や比較演算子で処理されるのかをちゃんと理解する必要があると思っています。

そこで、ここでは、python3の真偽判定とその時の条件分岐について書こうと思います。

## この記事を書こうと思った訳

条件式は色々な書き方ができますが、推奨されている書き方や短く簡潔に書く方法があります。

[PEP8プログラミングに関する推奨事項](https://pep8-ja.readthedocs.io/ja/latest/#id42)にはこのように書かれています。

>> None のようなシングルトンと比較をする場合は、常に is か is not を使うべきです。絶対に等値演算子を使わないでください。

>> また、 本当は if x is not None と書いているつもりで、 if x と書いている場合は注意してください – たとえば、デフ

元記事を表示

ArduinoをWindows PCからPythonで操作するためのTOOL : Ardipy

#Ardipy
Arduinoには標準でfirmata arduinoが用意されています。
ただ、このfirmataは速度が遅い問題があることや、Pythonとのインターフェースが不十分な状況です。
また、firmataはいろいろな方式に対応しようとしているため、I2Cなどの通信などを行う場合に重く
使いづらいため、独自FWとPythonドライバを作ってみました。

Ardino+Pythonで Ardipy

I2C, SPIのUSB変換とPythonドライバはAardvarkという機器が標準でサポートしていますが
価格と入手性が悪いため、Arduinoを使った簡易検査装置として使う事が目的としています。

##Ardipyソースコード
Arduino Uno スケッチ(Arduinoで動作するFW)
https://github.com/Nomisugi/Ardipy/blob/master/Ardipy01.ino

Pythonインターフェース(Arduino FWをPCからコントロールするPython Driver)
https://github.com/Nomisugi/A

元記事を表示

macでAnaconda(Python)の環境構築の話

# 初めに
MacでのPython実行環境を構築しようとしたところ, 色々つまづいたのでメモします。

# 環境

・`macOS Monterey ver 12.0.1`
・`Visual Studio Code ver 1.62.0`

# Anacondaバージョン

・`anaconda3-2021.05`

# Anacondaインストール

`pyenv`でインストール

“`
pyenv install anaconda3-2021.05
“`

# vscodeでのAnacondaの適用
vscodeを開いた状態で `fn` + `f1`を押す

すると以下の画像のように検索フォームと検索候補が出てくるので,

以下の画像で一番上に表示されている 「Python: インタープリターを選択」

を選択します。(表示されていなければ検索)

![スクリーンショット 2021-11-05 15.48.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/17562

元記事を表示

「.env」ファイルでの環境変数設定

Pythonにおいて、“`.env“` ファイルを読み込んで環境変数を設定する方法をまとめておく。
“`.env“` ファイルは、***python-dotenv***モジュールを使用することで読み込むことができる。
“`.env“` でパラメータを指定することで、ハードコーディングを回避し、再利用性を高く保つことができるメリットがある。

# 使い方
####1. python-dotenvモジュールのインストール
次のように、“`pip“`コマンドを使用して***python-dotenv***モジュールをインストールすることができる。

“`
$ pip install python-dotenv
“`

####2.「.env」ファイルを作成する
例として、以下の“`.env“`ファイルを作成した。

“`:.env
DATABASE_NAME = sample.db
“`

####3.「.env」ファイルを読み込む
そして、“`.env“`ファイルを読み込むには、“`load_dotenv()“`を使用する。これを実行することで、“`.

元記事を表示

選択したキューを止めるキューを作る ADX2ロボット

#なぜ作ったか?
ADX2で音を止める時に、特定のキューのみ止めたい時があります。

#ADX2で音を止める方法
ADX2では
キューを再生したプレーヤーに対してStopを呼べば止められます。

実際、音を止める必要がある場面はそれほど多くないです。

ループの音を管理するプレーヤーを用意して、再生とかでもよいのですが、
基本、再生しかしないシステムにしておくことで、めったに使わない停止を呼ばなくても済ませることができそうです。

# どんな音を止めるのか?

特にループのキューを止める時が多い。
再生時にループがどうか判断するのはなかなか難しいのと
プレーヤーをループ再生を止めるためだけに特別に用意して管理するのは
面倒(どのプレーヤーで、何が鳴っていたかとかなかなか難しい)
なので、キューを止めるキューを作り、
これを呼んでもらうことが多いです。

止めたい音を止められるので、便利です。
(まぁ、再生中の全部の同じ名前のキューの音が止まることになりますが)

# コード
https://gist.github.com/tatmos/86886f94183857fabb1a38fcf

元記事を表示

【第二回】YOLOv3を一から実装 ~dataset作成~

# はじめに
 [前回の記事](https://qiita.com/gotty21/items/7dd8993425d0f3c90d9c)ではYOLOv3のモデル構造について簡単に解説しました。今回は実際にYOLOv3を実装するにあたって、動作の確認等に使うためにdatasetを先に作成していこうと思います。データは実際に論文でも使用されたCOCO datasetを使ってdatasetを作成していきます。

COCO datasetは物体検出系の論文でよく評価用に使われています。本記事ではCOCO datasetを扱うCOCO API(pycocotools)を使って、pytorchのdatasetを作るまでを解説します。

# 最終目標
 最終的にdatasetにindexを入力するとpixel値を0-1に正規化した画像([color channel, height, width]の順)、画像内の物体の位置を示すバウンディングボックスの座標[x_center, y_center, height, width]、バウンディングボックスの内の物体のラベル(種類)を含むTensorが返

元記事を表示

python-docxで日本語フォント対応

## やりたいこと
英語用のフォントと日本語用のフォントを分ける。

以下のページとほぼ同じことしてます。
本家にプルリクエストが入っているみたいですが、テストやドキュメンテーションの不足などでリジェクトされているみたいです。

https://github.com/python-openxml/python-docx/pull/329/commits/097586cab016c10cfaefb3cf283355f74889a27d

## 使用例
“`Python
paragraph.runs[0].font.name_eastasia = “MS ゴシック”
“`

## モジュールの変更点

“`diff_Python:docx/oxml/text/font.py
class CT_Fonts(BaseOxmlElement):
“””
“ element, specifying typeface name for the various language
types.
“””
ascii = Optiona

元記事を表示

OTHERカテゴリの最新記事