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

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

ChatGPT に便利コマンドラインプログラムを書いてもらう: search_files.py

### **user**:

指定したディレクトリの中の .py ファイルを再帰的に全部走査し、目的の文言を含むファイルとその該当箇所をリストアップする python プログラムを書いてください。

### **assistant**:

指定したディレクトリ下の全ての`.py`ファイルを走査し、特定の文字列を含むファイルと該当箇所をリストアップするためのPythonスクリプトは以下のようになります。

“`python
import os

def search_files(start_directory, target_string):
for root, _, files in os.walk(start_directory):
for file in files:
if file.endswith(“.py”):
with open(os.path.join(root, file), ‘rt’) as f:
lines = f.readlines

元記事を表示

メモ: VSCodeのPythonコード整形プラグインBlack formatterの設定/quote変換を回避

### `VSCode`に`Black formatter`プラグインを導入したあとの設定メモ。

基本的にはデフォルト設定で、保存毎に整形していく。
しかしデフォルトでは[シングルクオートの文字列をダブルクオートに変換するようになっている](https://black.readthedocs.io/en/stable/the_black_code_style/current_style.html#labels-strings)。

パイソニアンにはなぜかシングルクオートユーザーが多いが、勝手にダブルクオートに変えられるのは頭にくるだろう。つまりこの挙動では彼らに失礼である。

したがって、`–skip-string-normalization`を設定し、クオート変換はOffにするとよい。

“`json:setting.json
{
“[python]”: {
“editor.defaultFormatter”: “ms-python.black-formatter”,
“editor.formatOnSave”: true
},

元記事を表示

shap package

# shap

`shap`(SHapley Additive exPlanations)パッケージは、機械学習モデルの予測を解釈し、モデルの特徴の重要性を明らかにするためのツールキットです。`shap`は、Shapley値と呼ばれるゲーム理論の概念をベースにしており、特徴の寄与を個々に評価し、モデルの予測を説明するために使用されます。

https://github.com/shap/shap

2023年12月26日, ChatGPT3.5 & GPT4により記載。

## 説明

以下は、`shap`パッケージの主要な機能と用途についての説明です:

1. **Shapley値の計算**: `shap`は、Shapley値を計算するためのアルゴリズムを提供します。Shapley値は、特徴がモデルの予測に対してどれだけ寄与しているかを評価します。これにより、特徴の重要性を定量化することができます。

2. **モデルの解釈**: `shap`を使用すると、機械学習モデルの予測を説明するためにShapley値を利用できます。これにより、モデルがどの特徴にどのように依存しているかを

元記事を表示

Pythonの並列処理、threading

# 1 音を鳴らしながら、次の処理させたい・・・
### 前提、背景
パソコンがシリアル通信で他の設備から情報を毎秒している
想定した異常が返ってきた時、警報を鳴らしたいなぁ・・・
でも、シリアル通信を毎秒繰り返しているのは止めたくないなぁ

↓こんな感じ

| time(s) | serial | beep |
| —- | —- | —- |
| 1 | 正常 | — |
| 2 | 正常 | — |
| 3 | 正常 | — |
| 4 | 異常 | beep |
| ・・・ | ・・・  | ・・・ |
| 15 | 異常  | beep |
| 16 | 異常 | beep |
| 17 | 正常 | — |
| 18 | 正常 | — |
| 19 | 正常 | — |
| 20 | 正常 | — |

beep音は短い音を繰り返し鳴らせて、正常になったら止めたい。
そして、また異常が来たらbeep音を鳴らした

元記事を表示

LabelImgの使い方

アノテーションツールであるLabelImgの使い方をメモしておきます。
実行環境:MacBook Air M1, 2020

https://github.com/HumanSignal/labelImg

# LabelImg(アノテーションツール)
https://github.com/HumanSignal/labelImg
https://laid-back-scientist.com/labelimg

ターミナルにてインストール
“`zsh
git clone https://github.com/tzutalin/labelImg.git
cd labelImg
conda create -n labelImg python # 仮想環境を構築
conda activate labelImg
brew install qt
brew install libxml2
pip install pyqt5 lxml
make qt5py3
“`

LabelImgを起動
“`zsh
cd labelImg
conda activate labelImg
python la

元記事を表示

レーベンシュタイン距離(編集距離)の解説と実装

レーベンシュタイン距離(編集距離)とは、2つの文字列がどの程度異なっているかを示す数値です。

例えば「ちからうどん」を「からげんき」に編集するには以下の4手順が必要なため、編集距離は4となります。
※ 編集、削除、置換をそれぞれコスト1とした場合

1. 「ち」を削除 : 「からうどん」
1. 「う」を削除 : 「からどん」
1. 「ど」を「げ」に置換 : 「からげどん」
1. 「き」を挿入 : 「からげんき」

# ■処理

「ちから」を「くらげ」に編集するための距離を求めてみましょう。
※編集、削除、置換をそれぞれコスト1とします。

### 1. 二次元配列を用意する

x を `編集文字列(ちから)の文字数 + 1` 、 y を `目標文字列(くらげ)の文字数 + 1` とする二次元配列を用意します。

| | (x = 0) | ち (x = 1) | か (x = 2) | ら (x = 3) |
| — | — | — | — | — |
| (y=0) | | | | |
| く (y=1) | | | | |
| ら (y=

元記事を表示

labelmeの使い方

アノテーションツールであるlabelmeの使い方をメモしておきます。
実行環境:MacBook Air M1, 2020

https://github.com/wkentaro/labelme

# labelme(アノテーションツール)
https://github.com/wkentaro/labelme
https://qiita.com/omuram/items/a3be821734fd81c3ac59
https://farml1.com/yolact/
https://farml1.com/multiclass_classification/

ターミナルにてインストール
“`zsh
git clone https://github.com/wkentaro/labelme.git
cd labelme
conda install -n labelme python=3.9 # 仮想環境を構築
conda activate labelme
pip install -e .
“`

labelmeを起動
“`zsh
conda activate labelme
lab

元記事を表示

空のDataFrameに対して`pivot_table`を実施すると、`columns`プロパティが空のDataFrameが生成される

# 環境
* Python 3.12.1
* pandas 2.2.0

# やりたいこと
[pandas.pivot_table](https://pandas.pydata.org/docs/reference/api/pandas.pivot_table.html)で集計したpandas.DataFrameを、CSVファイルに出力したいです。
空のDataFrameを集計した場合は、CSVファイルにはヘッダ行のみ出力したいです。そうすることで、どのようなDataFrameでもCSVファイルの構造(列情報)は保たれるからです。

“`python:sample.py
import pandas as pd

def aggregate(df: pd.DataFrame) -> pd.DataFrame:
return df.pivot_table(index=”name”, aggfunc=”sum”, values=”working_hours”)

df1 = pd.DataFrame(
{“name”: [“A”, “A”, “B”], “class”

元記事を表示

ベイズ最適化(実験点提案)アプリをStreamlitで構築するぜ!

# はじめに
Streamlitって気づいたら神アプデしてますよね。もっと大々的に宣伝してほしいものです(←自分で情報取りに行け)。

さて、化学メーカーに勤めている”自称”データサイエンティストとしてはやはりベイズ最適化したい衝動に駆られます。Notebook上では実装できていたのですが、もっと簡単に使いたいし、周囲に広めるためにもアプリの方が便利だなぁと思いました。

世の中にはそんなアプリがあるけど、ダウンロードが必要だったり(社内申請めんどくさい)、お金がかかったり・・・そうだ!自作しよう!

ということで、Streamlitでベイズ最適化による実験点提案アプリを自作しました。
ひとまず必要最低限の機能だけ実装したので、今後アップデートしていきます。

**メインライブラリ**
streamlit==1.30.0
scikit-learn==1.4.0

**ガウス過程回帰、ベイズ最適化**
・scikit-learn の GaussianProcessRegressorを使用しました。
・カーネル関数は11種類をクロスバリデーションで最適化しています。
・獲得関数はEIです(

元記事を表示

未経験エンジニアが環境変数と.envなどについて調べたのでメモ

# 環境変数とは
環境変数とは、その名の通り、コンピュータやプログラムが動く環境を設定するための変数です。
# 環境変数の種類
Web開発初心者だと、「環境変数=.env に書くもの」というイメージがあるかもしれません(私だけ?)が、実情はだいぶ違いました。
## .envに書かない環境変数
OSレベルで設定されている環境変数や、フレームワークのデフォルト設定など、開発者が自ら設定しなくて良い環境変数があります。これらは、外部の設定に依存しているので、セキュリティ上問題がないため、敢えて隠しファイルに記入しなくても良いとも言えます。
## .envに書く環境変数
開発物の秘密情報や、プロジェクト固有の設定など、.envに書くべき環境変数もあります。

.envは、ソースコードから分離しているため、外部に漏らしたくない情報を管理するのに適しています。例えば、DBのパスワードやAPIキーがその例です。DBパスワードが流出して、自社の大切なデータが奪われてしまったり、有料のAPIを無断で利用されたりするリスクを防ぐことができます。

また、開発環境と本番環境でDBを切り替える場合なども、.e

元記事を表示

DataBricksを使ったSBA 7(a)融資プログラム FOIAデータの分析

## 0. はじめに

[第2回 金融データ活用チャレンジ][第2回金融データ活用チャレンジ](金融データの活用可能性を深化させる業界を挙げた超実践プログラム)のコンペに参加しました。本コンペについては、第1回も参加したのですが、前回はDatabricksの環境のみでデータ参照・コード開発ができないという条件となっていました。当初は、環境に慣れることができず機能も理解できなかったのですが、終了10日前くらいになり、MLFlowのモデル管理など大変便利な機能があることを知り驚きました。今回は、是非様々な機能を活用してみたいなと思い臨んだのですが、MLクラスターが使える様になったのが2024−02−09からであったこともあり、あまり時間がとれませんでした。

今回は、[第2回 金融データ活用チャレンジ]のデータやその参照元となった[Should This Loan be Approved or Denied?][datasets_source]ではなく、U.S. Small Business
AdministrationがFOIA(Freedom of Information Act:

元記事を表示

日本語OCRの使い方まとめ

# tesseract-ocr

https://github.com/madmaze/pytesseract

### インストール

“`shell
sudo apt-get -y install tesseract-ocr tesseract-ocr-jpn
pip install pytesseract
“`

リポジトリのリンクから日本語データの学習ファイルをダウンロードして

https://github.com/tesseract-ocr/tessdata/blob/main/jpn.traineddata

“`python
import pytesseract
from PIL import Image

im = Image.open(image_path)

text = pytesseract.image_to_string(img, lang=’jpn’)
boxs = pytesseract.image_to_boxes(img, lang=’jpn’)

print(text)
print(boxs)
“`
![スクリーンショット 2024-02

元記事を表示

uuidをモックする

少し手こずったのでメモとして残してきます。

“`python:sample.py
import uuid

def get_id():
return uuid.uuid4().hex
“`
“`python:test.py
from unittest.mock import patch, Mock, PropertyMock
from sample import get_id

# sample.py内のuuidをパッチする
patcher = patch(“sample.uuid.uuid4″)
mock = patcher.start()
m = Mock()

# プロパティをモックする
# side_effectを使って連番を返すようにする
p = PropertyMock(side_effect=[f”id_{i}” for i in range(2)])
type(m).hex = p

# uuid4()の返り値にモックを設定する
mock.return_value = m

assert get_id() == “id_0”
assert get_id(

元記事を表示

Djangoの仮想環境立ち上げまで

### Djangoを学習したので忘れないようにメモ
1. デスクトップに作業用フォルダを作成
1. cdで作業用フォルダに移動
1. 仮想環境を作成 `python –m venv Sample`
1. コマンドを実行し、venv環境が起動 `.\DjangoSample\Scripts\activate`
1. Djangoをインストール `pip install django`
1. Sampleプロジェクトを作成 `django-admin startproject Sample`
1. cdでSampleに移動し、venv環境が起動している状態で `python manage.py runserver`

元記事を表示

selenium in pythonでedgeを自動操作しMicrosoftRewardsを増やす方法~♪

# 初めに
Edgeはseleniumで自動化できるんだってらしい。
というわけで、

\1. Edgeのwebdriverをダウンロード
\2. 任意の場所に解凍
\3. webdriverのパスを環境変数Pathに追加
\4. 下記のコードを記述
“`python:RewardsCreater.py
# 必要なものもろもろをインポート
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

import time as timer

# driverを起動
driver = webdriver.Edge()

# ランダムな30個の検索キーワード(Cpilotさんに頼んだら普通に作成してくれたw)
words = [
“apple”, “banana”, “chocolate”, “dog”, “elephant”,
“flower”, “guitar”, “hiking”,

元記事を表示

それ,numpy で書かない?–7– いや,もうリストやめよぅ

「エラトステネスの篩」の記事は,ここでも,もう数十回あるんじゃないだろうか。車輪の再発明もいいとこだ。
そして,リストを使わないほうが良いよというのも,何回か書いた。

それ,numpy で書かない?–3–
https://qiita.com/WolfMoon/items/0483ac130684a10cf25e

また,出たが,繰り返し述べる。

**リスト,および,リスト内包表記を使うのは,もう,やめよう。**

**numpy は,遥かに速く,書きやすい。**

“`python
import time

def sieve_of_eratosthenes(n):
primes = [True] * (n + 1) #リストの生成、全てTrue
primes[0] = primes[1] = False #0と1は素数ではないので除外 FALSE
for i in range(2, int(n**0.5) + 1):#2以上、2から初めてnの平方根まで計算する
if primes[i]:
for j in ra

元記事を表示

ChatGPTを使いながらRPGゲームを作成する(その1)

### 背景
RPGゲームはRPGツクールなどがあり、だれでも簡単に作れる時代だが、筆者は昔からPygameを使ってゲーム画面まで作りましたが、一度は挫折した。
久しぶりにゲーム作成をググってみたら、昔かなり嫌がっていたkivyが出てきた。しかも、簡単にゲームが作れるとのことで、早速PongBallを作ったが、今回は再度、RPGゲームの作成に挑戦する。

### 目標
RPGフィールドマップの表示とPlayerを動かすまで

### 前提
1. Pythonの基礎文法を理解している
1. クラスメソッドを理解している
1. kivyインストール済
1. 仮想環境構築済

### 早速ChatGPTに質問

筆者が設定した前提
1. kivyを使ってRPGのフィールドマップを作成したい
1. キーボードを使ってPlayerを動かしたい
1. Playerの画像をGif画像である
1. RPGMapは、1と0の数字で構成されています。1は障害物で、0は通行可能で、0と1をそれぞれ別々の画像に置き換えて表示する
1. Mapデータは以下に示す
“`py
map_data = [[0, 0,

元記事を表示

Pythonで素数を見つける方法: 割り出し法とエラトステネスの篩

pythonによる素数を求めるためのコードです。
自然数nが素数であるかどうかを判定する物ではないので注意してください

# コード
1からnまでの素数の数を数えます。
メモリ容量によりますが、n = 10^7~9あたりが限界です。

### 割り出し法による素数判定

“` prime_numbers.py
import time

def is_prime(n):
if n <= 1: #1と0を除く return False for i in range(2, int(n**0.5) + 1): #素数の判定、2から初めてnの平方根まで計算する if n % i == 0: #割り出し return False return True start = time.perf_counter() #計算時間の計測(スタート) n = 10**6 primes = [i for i in range(n) if is_prime(i)] end = time.perf_counter() #計算時間の計測

元記事を表示

seleniumが使いたい人 in Python

# 初めに
スクレイピングがしたくてプログラミング始めました~
って人はそうおらんだろうw
わかんない。いたらごめん。コメントしてねw。

さて、今回はスクレイピング(selenium君使う)についてです。
なんでこんなこと書くかといいますと、そこらの記事が古いからです。
「コピペしてやってんのに動かね~~~怒怒怒」ってことばっかだったので、結局公式ドキュメント(最低限)を見てなんとなくしか理解できていません。

# スクレイピングってなんや~
「スクレイピング」といいますが、正しくは「webスクレイピング」です。
webスクレイピングとは、皆さんが今もご覧になっているような、webサイトから、そのサイトの情報を(情報といっても、膨大な量の)自動的に取得するものです。


– 初めに
– スクレイピングってなんや~
– スクレイピングの需要
– 環境を作る

# スクレイピングの需要
クラウドワークス(というサイトです。)でスクレイピングの案件に絞り込みをかけますと、現時点で多分23件の案件がありますね。(実際にちまちま数えたのではなく、ブラウザコントロール上でコードを書いたので、

元記事を表示

[Sublime Text 4 for Windows] build system で複数コマンドを実行させたいときの書き方

Sublime Textのビルド(Ctrl-B)コマンドでPythonの仮想環境を指定して実行したい場合に仮想環境ごとにbuild systemを作成する必要があるらしいことはわかったが、”cmd”でのパスの書き方やactivateを叩いた後にスクリプトを実行させる場合にコマンドをつなげる「&」や「&&」などの接続詞の書き方などで躓いたのでメモっておく。

# ポイント
– pathの区切り文字である円マークというかバックスラッシュ「\」はエスケープする必要あり
– コマンドをつなげる「&」や「&&」などの接続詞もダブルクオーテーション「”」で括る必要があり、かつ前後をカンマ「,」で区切るべし

# サンプル
“`JSON:Python-venv.sublime-build
{
“shell”: true,
“cmd”: [“C:\\Users\\Username\\Documents\\project\\.venv\\Scripts\\activate.bat”, “&&”, “python”, “-u”, “$file”],
“file_regex”: “

元記事を表示

OTHERカテゴリの最新記事