Python関連のことを調べてみた

Python関連のことを調べてみた

python

# Python

## 参考

– イテレータ・イテラブル・ジェネレータ
– [Pythonにおけるイテレータとジェネレータについて学ぶ](https://zenn.dev/ganariya/articles/python-iterator-generator)
– [図解「generator・native coroutine・with」 〜 関心やコードを分離する文法と、処理順序・構造](https://zenn.dev/339/articles/6832decc5ef1b4a0821b)

– async/await
– [python の async/await 構文について調べる。](https://gist.github.com/nakamuray/13be3471ebed1e6845f2a3499e7e9575)

– その他

– [「Pythonの実践」簡単速習‼【Webとネットワーク/応用③】](https://medical-science-labo.jp/python_advance03/)
– [「Pythonの実践」簡単速習‼【並列化/応

元記事を表示

PythonコードによるWord文書のパスワード設定、変更、解除

財務記録、法的文書、個人記録などの機密性の高いWord文書を共有および保存する際には、文書を暗号化することでセキュリティと機密性をさらに保護することができます。さらに、Pythonを使用することで、ユーザーは簡単に多数のWord文書を暗号化することができます。この記事では、Pythonを使用して**Word文書を簡単に暗号化および復号化し**、文書管理を強化する方法を紹介します。

– **[PythonでWord文書をパスワードで暗号化する](#pythonでwrd文書をパスワードで暗号化する)**
– **[PythonでWord文書のパスワードを変更する](#pythonでword文書のパスワードを変更する)**
– **[PythonでWord文書から暗号化を解除する](#pythonでword文書から暗号化を解除する)**

この記事で使用されている方法には、[Spire.Doc for Python](https://www.e-iceblue.com/Download/Spire-Doc-Python.html)ライブラリが必要です。公式ウェブサイトからダウンロードするか

元記事を表示

pythonのコメントアウト

## コメントアウト
“`py
#一行だけ

“””
複数行
複数行
複数行
“””
“`

元記事を表示

誤分類コストが非対称な場合の機械学習(コスト考慮型学習)

# はじめに
機械学習を用いて分類タスクを行う場合、誤った予測によって生じる損害が異なるケースがある。

例えば、レントゲン画像から癌かどうかを分類する場合、誤分類した時の対応は下記の通り。

![スクリーンショット 2024-03-18 115141.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/324032/8578ae4e-0704-2d14-4ffb-a5dfe1074a71.png)

癌予測のケースでは、死亡リスクが増大するので明らかに実際には癌であったが、予測が癌でない時(偽陰性)のリスクが高い。

このように誤分類した時のリスクが非対称な場合は、非対称性を考慮して機械学習モデルを学習する必要がある。

この場合、 機械学習モデルの学習方法として、**コスト考慮型学習(Cost Sensitive Learning)** が活用される。

今回はコスト考慮型学習について解説していく。

# コスト考慮型学習とは
コスト考慮型学習は、機械学習において誤分類のコスト(損害や重大さ)を考慮した

元記事を表示

nohupを用いてstreamlitをバックグラウンドで動かしていたらIDが迷子になった!時の対処法

# 「nohupを用いてstreamlitをバックグラウンドで動かしていたらIDが迷子になった!時の対処法」

こんにちは、すぎもちです。今回は、バックグラウンドで`streamlit`アプリを動かす際に`nohup`コマンドを使用しているときに起きがちな問題、それは「プロセスIDがわからなくなった!どうしよう?」という状況の対処法について、備忘録として残しておきたいと思います。

### 問題の発生

`streamlit`を含む様々なアプリケーションをバックグラウンドで動かしておきたいとき、私たちはしばしば`nohup`コマンドを利用します。例えば、こんな感じで:

“`bash
nohup streamlit run app.py &
“`

このコマンドは、ターミナルが閉じても`streamlit`アプリが止まらないようにしてくれます。非常に便利ですが、問題が一つ。ターミナルを閉じたり、PCを再起動したりすると、「あれ、動かしていたあのアプリ、どうやって止めればいいんだっけ?」という状況に陥りがちです。

特に、`streamlit`のようにポートを占有して動作するアプリケ

元記事を表示

N-QueensパズルのQUBOを高速生成し,Gurobiで解く

# ポイント
* N-QueensパズルのQUBOは,one-hot制約の数式を展開するといった方法を用いず,直接的に作ることができる
* Gurobiのコールバック関数の設定し,指定した値の解が得られたら解探索を終了する方法

# N-QueensパズルのQUBOを高速生成
[N-QueensパズルのQUBOをSymPyで生成し,Gurobiで解く](https://qiita.com/koji_nakano/items/860bd9fb46072af986af)では,one-hot制約およびzero-one-hot制約を満たす式を構築し,SymPyを用いて展開してQUBOを生成しました.数式処理を伴うため,ボードのサイズが大きくなると計算にかなりの時間がかかります.ここでは、より直観的かつ簡単にN-QueensパズルのQUBOを生成する方法を用います.
前回と同様に,バイナリ変数の$n\times n$行列$X=(x_{i,j})$を使用してボードを表現します.ここで,$x_{i,j}=1$は座標$(i,j)$にQueenが配置されていることを意味します.このバイナリ変数の総数を最

元記事を表示

Pythonのエラー集

ほぼ自分用のよくあるエラーまとめ

# SyntaxError
– コードの文法が正しくない場合に発生。
– 例:括弧の閉じ忘れ、不正なキーワードの使用、インデントの誤りなど。

# NameError
– 存在しない変数を参照しようとしたときに発生。
– スペルミスとかでありがち。typoがないかしらべる。Formatterがあると理解しやすい

# TypeError
– 定義されたデータ型に対して操作が不適切な場合に発生。
– 例:文字列と数値の足し算など。

# ValueError
– 型は正しいが不適切な値を関数に渡したときに発生。

# IndexError
– リストやタプルなどのシーケンスで、範囲外のインデックスにアクセスしようとした場合に発生。

# KeyError
– 辞書に存在しないキーにアクセスしようとした場合に発生します。

# AttributeError
– 存在しない属性やメソッドをオブジェクトから呼び出そうとした場合に発生します。

# ZeroDivisionError
– 名の通り0で割り算しようすると発生。

# OverflowError

元記事を表示

spotipyを使った開発備忘録

## はじめに
 何か開発してみようと思い立ったので、その過程を備忘録として記していく。開発経験が乏しい、且つ、それを記事にすることは初めてなので間違っていることや間違った言い回しも多いと思うがお手柔らかにどうぞ。本記事は環境構築からspotipyを使ってなんか動作したぞ~~~~ってところまで。

## spotipyとはなんぞや
 平たく言うとspotifyが出しているAPIをpythonで使いやすいようにまとめたライブラリのようなもの(?)。そもそもspotifyのAPIは楽曲の様々な情報を取得できて、それをほぼ無料で使えるらしい。様々な情報とは、曲のテンポや雰囲気、更にはリスナーのトップソングなど。それを使ってオリジナルサジェスト機能を作ったりできるっぽい。すごい(小並)。
なのでそんな情報を使ってゆくゆくは機械学習とかにかけられたりしたらいいな~という展望である。(わざわざpythonつかうのもそれを見越していたりいなかったり)

## 環境構築
VSCodeを使って開発したかったため、いくつか記事を見繕って環境構築を行った。まずは、以下の記事を参考にVSCod

元記事を表示

20240320の日記、RR-automateの開発記録、WezTermの初期位置とサイズ設定、neovimあれこれ

### RR-automateの改良

#### Jake Paulの画像追加
DiscordにもJake Paulをなんとかしてくれ、というリクエストがあったけど、ほんとこれ欠片をゲットできないから強化できないし完全オワコンヒーローなんだよね
R.I.P.
![Jake Paul.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3740499/2a4cfdd6-2173-7b02-2ce1-f1e86fff5568.png)

#### こんな関数はどう作るといいの?
* エラーの数を返す
* さらに何らかのリストを作って返したい
* 呼び出し元がリストを渡して、関数の中で追加する、というのはやりたくない
* すると、`return (error_count, some_list)` ってやるの?

Result型というのが似てるけど、ちょっと違う
[PythonでのResult型、returnsでエラー処理してみる #Python – Qiita](https://qiita.com/sobacha/

元記事を表示

ベルヌーイ分布を実装する

確率分布で有名なベルヌーイ分布を理解するためにプログラミングで試します。動作環境はVisual Studio Community 2022のバージョン17.7.4です。

# 概要
ベルヌーイ分布とは、確率${\theta}$で1を、確率${\theta-1}$で0をとる離散確率分布のことです。確率質量関数は次の式で表されます。

“`math
P(x|\theta) = \theta^{x}(1 – \theta)^{1-x}
“`
“`math
x = 0, 1
“`
“`math
\theta\in(0, 1)
“`

簡単に言うとコインを投げて裏表どちらが出るかとか、ゲームで攻撃が命中するか外れるかのような2択の試行を扱う離散確率分布です。

# Pythonでの実装
Pythonでベルヌーイ分布を実装する場合、オープンソースのライブラリであるSciPyを使うと簡単に実装できます。SciPyは外部のライブラリなのでインストールされていない場合は、pip installでインストールしてください。Pythonでの実装は以下のようになります。

“`Python:be

元記事を表示

Pythonプロジェクトの時間節約術: PydanticとPysonDBでデータ管理を効率化

# はじめに
Python開発で時間を節約し、データの整合性を確保する方法をお探しですか?PydanticとPysonDBを組み合わせることで、その両方を実現できます。この記事では、型安全性を提供するPydanticと、JSONベースのデータベース操作を簡単にするPysonDBの使用方法を解説し、これらを利用してデータ管理プロセスを効率化する手法を紹介します。

# Pydanticによる型安全性とデータバリデーション
Pythonの開発プロセスにおいて、データの型安全性とバリデーションは、バグを減らし、アプリケーションの信頼性を高めるために不可欠です。Pydanticは、Pythonの強力な型ヒントシステムを活用して、データバリデーションと設定管理を簡単にし、開発者がより安全で読みやすいコードを書くことを支援します。このセクションでは、Pydanticを使用して型安全性を強化し、データモデルを通じてアプリケーションデータの整合性を保つ方法について説明します。

### 型ヒントとPydanticの基本
Pydanticの中心的な機能は、Pythonの型ヒントを使用して、モデル定義時に

元記事を表示

【初めての人用】Django 環境構築 #1

今回やること

前回HTMLを表示までやりたいといったが、長いので2回に分ける

  • ルートurlの記述
  • settings.pyへの記述
  • templateフォルダの用意

[#【初めての人用】Django 環境構築ロケット飛ばすところまで](https://qiita.com/souichirou157/items/0ebe37a1016d79062f49)

[#【初めての人用】Django アプリケーションフォルダを作る](https://qiita.com/souichirou157/items/6fd44126871b45e9b1a0)

プロジェクトフォルダとアプリケーションフォルダの中身
“`
プロジェクトフォルダ/
__init__.py
asgi.py
settings.py
urls.py
wsgi.py

“`

“`
アプリケー

元記事を表示

Python で数式構文木をランダム生成する

# 概要

シンボリック数式を入力や出力とする機械学習タスクにおいて、数式をランダムに生成したくなることがあります。今回は [Lample and Charton, 2019](http://arxiv.org/abs/1912.01412) の Appendix C を参考に、数式構文木をランダム生成するコードを実装してみました。さらに得られた構文木をパースすることで、最終的には下図のようにたくさんの数式を生成することができます。

![random_math_expressions.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2531435/ec7be896-1404-6e49-1e09-b055970f1a8b.png)

# 実装

全体のアルゴリズムを記した擬似コードは次のようになります (元論文 Appendix C より引用)。最終的に現れてほしい演算子の個数を$n$とし、1ループごとに1個ずつ演算子をサンプリングしながら木を育てていきます。$e$は各時点で値が確定していないノードの個数

元記事を表示

ポッドキャストの文字起こし #Whisper

ポッドキャストを最近はじめました。
ウェブマーケターとしては**ポッドキャストの集客のしづらさ**は問題に映ります。
これをカバーするために、字幕(トランスクリプト/文字書き起こし)作成の作業をプログラマーらしく自動化したいと考えることは、不自然なことではないでしょう。

## Whisperで音声認識(Speech To Text)

ChatGPTでおなじみのOpenAIが作っている[Whisper](https://github.com/openai/whisper)を使います。

録音された音声ファイルを指定して実行すると、以下のように出力されます。

“`
$ whisper 240320.mp3 –language Japanese
[00:00.000 –> 00:08.000] すごいレス付いてるよね、これ。259レスって書いてあるよ。
[00:08.000 –> 00:15.000] あの、いや、これ。
[00:16.000 –> 00:26.000] 罰一かどうか、結婚して離婚しましたっていうものかどうかと、同じか同義かどうかっていうのは分かんないけど、

元記事を表示

[Django-Ninja] Schemaに定義したaliasの名前をレスポンスに使用する

# まえがき
先日Django-Ninjaでバリデーションエラーをハンドリングする記事を書きました。
その記事の一番最後で、

>これ書いている途中で色々試してたら、Python組み込みの型の名前を **レスポンスしなくちゃいけないときとかどうしよう** って悩みが生まれてしまいました。
>listっていうキーを含んだJSONをレスポンスしたいけど、Schemaでlistっていうフィールド名は使っちゃまずいし。
>aliasをFieldに設定してみたけど、思ってた挙動とは違ったし。
>どうしよう。わかんない。 誰か教えてほしい。

ていう疑問を書いてたんですけど、Django-NinjaのGitHubを読んでたら解決方法が載っていたので、早速試す。

https://qiita.com/bachikawa/items/2905c0f284220264ec92

# 解決策
`by_alias=True`を指定してあげるといいみたいです。
Django-Ninjaの内側(?)で動いているPydanticは、デフォルトでは`by_alias`はFalseなんだそう(当然か)。

# 実装

元記事を表示

Python フォーマット文字列からプレースホルダ名etcを取得する

## 問題意識

たとえば
“`python
greeting = “My name is {name}, inmate number {number:04d}”
“`
のような文字列を考える。`greeting.format(name=’Shohei’, number=17)`のようにすれば、`name`あるいは`number`というプレースホルダに明示的に値を与えることもできるし、通常の文字列の代わりにf-stringにすればスコープから`name`や`number`といった名前を引っ張ってきてくれる。

せっかくなのでconfig fileなんかから引っ張ってきた設定も、この方式でフレキシブルにフォーマットできるようにしたい。

もちろん実際に使うときには
“`python
cfg = dict(…)

text = greeting.format(**cfg)
“`
のようなかたちで使えば良いけれど、実際に`format()`メソッドを**呼ぶ前に**、`cfg`の中に対応したキーが想定された型で入っているかをチェックしたい。

具体的には、たとえば上の

元記事を表示

【Python】ttkbootstrapでGUIアプリ制作&改修

# GUIアプリの概要
以前投稿したアプリを改修したのでそれを共有したいと思います。
以前投稿したアプリは以下の記事になります。

https://qiita.com/kensaka1228/items/3663fc18ed7c893feeee

ttkbootstarpのGoogle検索をしたら二番目にヒットします。
是非合わせてお読み下さい。

## 改良点
ソースコードをクラスで作成
QRコードの作成を自分で指定した場所に作成できるように改修
日記を書けるように改修

## アプリ概要
### QRコード
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/2bf43cfc-8c0e-9e9a-38f2-5c5ae525fee4.png)

### 勤怠計算
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2759758/441b8800-fa5c-6b9f-dddf-197

元記事を表示

poetryに直接wheelを読み込ませる方法

pystanが動く環境をpoetryとdockerを使って作ろうとしましたが、僕の使っているM1 macではpystanが依存しているhttpstanのwheelファイルが用意されていないらしく、httpstanを直接buildしてpoetryに読み込ませる羽目になりました。

同じ悩みを持っていた方

dockerコンテナの作成や、poetryプロジェクトの作成は終わっているものとします。

# ライブラリのダウンロード
wheelファイルがないライブラリのgithubに行ってライブラリをダウンロードします。
“`
wget https://github.com/stan-dev/httpstan/archive/refs/tags/4.12.0.tar.gz
tar -zxvf 4.12.0.tar.gz
“`

# ライブラリのbuild
githubのinstallationに従ってbuildしてwheelを作ります。
“`
cd httpstan-4.12

元記事を表示

Streamlitでpage_linkを使おうとしたらStreamlitAPIExceptionで怒られた話

# Streamlitでpage_linkを使おうとしたらStreamlitAPIExceptionで怒られた話

Streamlitは、データサイエンスと機械学習向けのアプリケーションを簡単に作成できるフレームワークです。今回は、異なるページ間でのナビゲーションを実装しようとしたらエラーが発生して仕様の理解に詰まったため、備忘録もかねてまとめてみます。この記事では、`page_link`を使ってページ間リンクを設定しようとした際に遭遇した`StreamlitAPIException`エラーのトラブルシューティングプロセスについて紹介します。

## 発生した問題

page_linkを使用したら、以下のようなエラーメッセージに直面しました。

“`
StreamlitAPIException: Could not find page: ./movie_app/app.py. Must be the file path relative to the main script, from the directory: ocam_app. Only the main app file a

元記事を表示

Streamlitを使用した音声解析アプリの作成:OpenAI WhisperAPIの活用

![スクリーンショット 2024-03-20 160607.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3364428/5e448abc-1ca6-fc12-f613-7c43826c53cd.png)

# はじめに
この記事では、OpenAIのWhisperAPIを使用して音声ファイルをテキストに変換し、さらにそのテキストを処理する「音声解析アプリ」の作成方法についてステップバイステップで説明します。PythonとStreamlitを用いて、ユーザーフレンドリーなウェブアプリを構築します。

# ステップ1: 開発環境の準備
まずは、必要なPythonパッケージをインストールします。これにはstreamlit、python-dotenv、openaiが含まれます。
“`python
pip install streamlit python-dotenv openai
“`
これらのライブラリにより、ウェブアプリの構築、環境変数の管理、OpenAI APIの呼び出しが可能になります。

# ステ

元記事を表示

OTHERカテゴリの最新記事