自動化無しに生活無し

WEB開発関係を中心に備忘録をまとめています

  • PySide6のQtを使ってGUIアプリを作る

    PythonでもGUIアプリは作れる。 標準モジュールのtkinterと違い、より高度なものを作れる。 【関数】クリックで1ずつ増える 基本のボタン押下で1ずつ増えるコード from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton app = QApplication([]) counter = 0 def click_counter(): global counter counter += 1 button.setText(f"{counter} 回押しました。") print(counter) window = QMainWindow() window.setWindowTitle("テストウィンドウ") button = QPushButton(f"{counter} 回押しました。") button.clicked.connect(click_counter) window.setCentralWidget(button) window.resize(300, 200) window.show() app.exec() このコードではクラスを使わ ...
  • 【Pandas】read_sql で生のSQL(SELECT文)を実行、DBから直接DataFrameを作る

    分析するデータは常にCSVにあるわけではない。DBから取り出す必要もある。 そこで、Pandasからread_sql メソッドを使ってDBから直接DataFrameを作る。 pandasで.read_sql() を使うサンプルコード pip install pandas pip install sqlalchemy 事前にpandas とsqlalchemy をインストールしておく。 import pandas as pd from sqlalchemy import create_engine # 例: PostgreSQL に接続する場合(DB種類・ホスト・ポート・ユーザー・パスワードを変更) engine = create_engine('postgresql://username:password@localhost:5432/mydb') ...
  • 【scikit-learn】ロジスティック回帰は二値分類問題に、線型回帰は回帰問題に【教師あり学習】

    前提知識 分類問題: データを元にカテゴリを予測する問題。とりわけ2つのカテゴリに分ける分類問題を二値分類問題という。 回帰問題: データを元に連続値(価格、重量、カロリーなど)を予測する問題。 ロジスティック回帰は、「回帰」の名がついているが「二値分類問題」 ロジスティック回帰は、言葉通り回帰を使うため回帰問題であるように思えるが、実は二値分類問題に使われるモデルである。 一方、線型回帰は連続値を予測するため ...
  • 【教師なし学習】k-means(k平均法)により似たデータをクラスタリング(グループ化)する

    前提知識 教師なし学習とは? 教師なし学習とは、ラベル(正解)のない学習のことである。 例えば、犬猫の画像を用意して、それぞれ個々の画像に犬と猫のラベル(正解)を与えた上で学習させる方法を教師あり学習という。 一方で、教師なし学習の場合、犬と猫の画像をまとめて与えるだけで、犬や猫のラベル(正解)は学習に含ませない。 この教師なし学習のメリットは、事前にラベルを用意する必要がないということ。 例えば、ラベリング ...
  • 【Pillow】画像をまとめてクロッピング(トリミング)する【マルチスレッド高速化】

    自炊した画像データには、余白がある。そこでPillowを使って必要な部分だけトリミングしていく。 ただし、「画像を読み込んで、クロッピング(トリミング)をして保存をする」という処理を、大量に繰り返すのでマルチスレッドで高速化させる。 速度差を意識するため、処理時間も計測する。 まずはforループで直列実行 まずは直列実行してみる。 from PIL import Image import os input_dir = "images" output_dir = "cropped_images" # 出力先が存在しない場合はつくる。 os.makedirs(output_dir, exist_ok=True) # 切り抜き範囲 ...
  • Pythonのthreading.Thread と concurrent.futures.Threadpoolexecutor の違い【マルチスレッド処理】

    Pythonのマルチスレッドには2つの方法がある。 threading.Thread と concurrent.futures.Threadpoolexecutor の2つである。 本記事ではその比較をまとめる 比較項目 threading.Thread Threadpoolexecutor スレッドの管理 自分でスレッドの実行と終了の管理が必要 自動的に管理される 戻り値の扱い 基本取得できない(共有変数などを使う) 取得できる エラーハンドリング 各スレッドでtry-exceptをしなければならない Future.exception() で取得可能 スレッドの起動 個別に起動できる タスクをプールに投げるので、個別にはスレッドの起 ...
  • Ubuntu 24.04 LTS での python仮想環境構築

    Ubuntu 24.04LTS では rootにPythonライブラリをインストールすることはできないようになっている。 $ sudo pip3 install --user virtualenv error: externally-managed-environment × This environment is externally managed ╰─> To install Python packages system-wide, try apt install python3-xyz, where xyz is the package you are trying to install. If you wish to install a non-Debian-packaged Python package, create a virtual environment using python3 -m venv path/to/venv. Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make sure you have python3-full installed. If you wish to install a non-Debian packaged Python application, it may be easiest to use pipx install xyz, which will manage a virtual environment for you. Make sure you have pipx installed. See /usr/share/doc/python3.12/README.venv for more information. note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages. hint: See PEP 668 for the detailed specification. これはDebi ...
  • 【Python】サーボモーターを非同期で動かし、初期化する

    ロボット開発、始めました。 ロボット開発でまず最初にやることは、サーボモーターの初期化。 サーボモーターは工場で作られた時点で、常に角度が0度になっているとは限らない。その状態で90度や-90度の回転を指示してしまうと簡単に壊れる。 そこで、まずはロボットHATのPWMソケットに接続し、サーボモーターを0度に初期化する。 ただし、同期的にしかサーボモーターの制御できないのは問題なので、非同期でサーボモータ ...
  • FastAPIでWebSocketを実現する

    djangoでもWebSocketは実現できるが、依然djangoの一部は同期動作(DB操作とMIDDLEWARE)。 よって、どうしてもボトルネックが発生する。 そこでWebSocketは、djangoではなく、非同期処理を前提として作られたFastAPIに委ねることで、より高速なWebSocketを実現させる。 本記事では、FastAPIを使ってのWebSocketを実現させる。 ただし、セキュリティ ...
  • Pythonで画像認識AI(深層学習)の速習をするためのメモ【pytorchで画像認識学習・推論のサンプルあり】

    急遽AI開発(特に画像認識)が必要になったため、それに必要な用語や概念的なものをまとめる。 ほとんどがChatGPTの受け売りである。自分用にまとめたのでかなり雑であることをお許しいただきたい。 そもそも機械学習と深層学習の違いは? なんとなくだったため、この際はっきりさせる。 機械学習 簡単な表データを学習して推論したい場合、機械学習が有効。 データ量は数千〜数万件単位でOK。特徴量の設定は手動で行う必要が ...