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

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

【時系列波形異常検知 part3】MADRID:ついに出た!時系列異常検知をパラメータフリーで行う最新手法 (Python実装例付)

>**[TL;DR] 以下の論文紹介とpython実装例: Lu, Yue, et al. “Matrix Profile XXX: MADRID: A Hyper-Anytime and Parameter-Free Algorithm to Find Time Series Anomalies of all Lengths.” ICDM2023.**
# §1. はじめに
「ついに出た」と言いつつ論文の発表日は9ヵ月以上前ですが。

[前回](https://qiita.com/k-kotera/items/b90fc94ba2abcfdb6d95)、[前々回](https://qiita.com/k-kotera/items/ec621e2a73bf6e14b19c)と**時系列ディスコード**(Time Series Discords)探索による単変量異常検知を紹介してきました。これらの手法は深層学習を初めとする複雑な機械学習異常検知手法と比べてパラメータが少ない点で扱いやすく、特に[**DAMP**](https://qiita.com/k-kotera/items/b90f

元記事を表示

【Python】リモート環境への接続情報をJSONと環境変数で管理する方法

# 概要
Pythonスクリプトを利用してリモート環境への接続する際、**接続先の選択肢が複数**あるのであれば、JSONファイルで管理することをおすすめします。

また、接続先によってパスワード管理の機密性が変わってくると思うので、環境変数に登録することも選択肢として考慮します。

# 実施環境
Windows11(Windows10でも可)
Python 3.12.4

# 実装準備

### JSONファイルの作成
“`conf.json
{
“remote”: {
“wsl”: {
“host”: “127.0.0.1”,
“user”: “pecorimaru”,
“password”: “Cnetuser”
},
“aws”: {
“host”: “XXX.XXX.XXX.1”,
“user”: “ubuntu”,
“password”: “環境変数”
}

元記事を表示

UbuntuでMinicondaをインストール

# Miniforgeのインストールと仮想環境のセットアップ

## 1. Miniforgeのインストール

### 1.1 Miniforgeのインストールスクリプトをダウンロード
“`bash
wget https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-Linux-x86_64.sh
“`

### 1.2 インストールスクリプトの実行
“`bash
bash Miniforge3-Linux-x86_64.sh
“`
– インストールの際に表示される説明や質問に対して「Enter」や「Yes」を入力してください。
– インストール完了後、`/home/ubuntu/miniforge3` フォルダが作成されます。

### 1.3 インストール確認
Miniforgeが正しくインストールされたか確認するために、以下のコマンドを実行します。
“`bash
conda info
“`
– 出力例:
“`
active environment : base

元記事を表示

「文字列収集」(ランク S) を解いてみた (startswith() を使う)

# はじめに
[paiza x Qiita のプログラミング問題](https://paiza.jp/pages/campaign/paiza-qiita “paiza×Qiitaコラボキャンペーン”) の [文字列収集](https://paiza.jp/works/mondai/real_event/word_collection “文字列収集 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】”) について, “`re.match()“` を使って解きました.

https://qiita.com/satomshr/items/c14681daa05403bee9a2

でも, 一部の問題に秒単位の実行時間がかかっていました. そこでちょっと調べたところ, “`startswith()“` でも文字列の一致の判定ができることに気付いたので, プログラムを修正してみました.

# コード
文字列の一致の判定で, 前回は “`re.match()“` を使っていました. コードは以下の通りです.

“`python:2-1
def check_

元記事を表示

[PyTorch] LSTMの学習用データの種類による予測精度への影響

# 目的
LSTMの学習用データ作成用入力信号にStep信号、Chirp信号、白色ノイズを用いた場合の予測精度の比較を行う。

# 結論
・結果一覧
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111514/7b61d212-1de9-b0c1-1c9d-e7be96c4b99c.png)
・LSTMは十分な表現力があるため2次遅れ系のプラントに対しては未学習にならない(学習用データに対する予測精度はいずれの信号でも問題なし)。
・今回の実験の範囲の中ではLSTMの学習用データ作成時の入力信号としてChirp信号が最も優れている。

(※)今回の実験は2次遅れ系という単純なプラントにおける実験であるためChirp信号のみで予測精度の高いモデルの学習ができたが、非線形性の強いプラントにおいてはChirp信号だけでなく白色ノイズやAPRBS信号等の様々なランダム信号を組み合わせた入力信号が必要となる可能性がある。

# 比較条件
・プラント:2次遅れ系
・学習モデル:LSTM
・シーケ

元記事を表示

PandasのDataFrameの初期化や結合

# はじめに
PandasのDataFrameのひな形や、DataFrame間の結合などの基本をまとめる。

# 目次
+ [空のDataFrameを作る](#空のdataframeを作る)
+ [DataFrameに列を追加する](#dataframeに列を追加する)
+ [DataFrameを任意の値で初期化](#dataframeを任意の値で初期化)
+ [DataFrame間を結合する](#dataframe間を結合する)
+ [DataFrameから特定の列を抜き出す](#DataFrameから特定の列を抜き出す)
+ [欠損値NaNの初期化](#欠損値nanの初期化)
+ [PandasのExcelCSV処理](#pandasのexcelcsv処理)

## 空のDataFrameを作る
“`python:pandas_initial_sample.py
import pandas as pd

#空のデータフレーム
df = pd.DataFrame()
print(f'{df=}’)

# df=Empty DataFrame
# Columns: []
# Inde

元記事を表示

[Python]tkinter バーコードリーダーアプリ

### 目的
Pythonでバーコードリーダーアプリを作りたいと思った。
GUIとして画面が欲しいので、tkinterでバーコード読み取り結果を画面表示するアプリを考えた。

### 環境
・Windows11
・WSL2(Ubuntu-22.04)
・python 3.10.12
・usbipd
・バーコードリーダー(Tera HW0002)
 公式サイト : https://tera-digital.com/products/2d-barcode-scanner-hw0002-o
 Amazon : https://www.amazon.co.jp/dp/B07T9J9Q99

### ポイント
・バーコードリーダー
 仮想COM設定にする。
 設定方法は公式サイトのマニュアルを参照。
・BarcodeScannerクラス
 インスタンス生成時に受信スレッドが立つ。
 データ受信時にRecieveDataHandlerを発火させる。
 RecieveDataHandlerはイベントを実行する。
・Windowクラス
 変数はtk.StringVar()で宣言する。
 宣言した変数

元記事を表示

Python try-except文で例外処理をスマートに:実践的なエラーハンドリングテクニック

## 記事の概要

Pythonにおける例外処理は、プログラムの信頼性と保守性を向上させる重要な技術です。本記事では、`try-except`文を使用した実践的なエラーハンドリングテクニックを紹介します。基本的な使い方から実際のプロジェクトでよく遭遇する状況まで、段階的に解説していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2648069/3e47dbd6-026d-f58a-d54b-76bf45ef89ee.png)

## 基本的なtry-except文

まずは、基本的な`try-except`文の使用例を見てみましょう。

“`python
def divide_numbers(a, b):
try:
result = a / b
return result
except ZeroDivisionError:
print(“エラー: ゼロによる除算はできません。”)
return

元記事を表示

Pytorch 並列 DataParallel/DistributedDataParallelについて

# memo
執筆途中。あくまでメモなので注意

# Pytorchの並列化について。
GAN等の重たいモデルを学習する際や、バッチサイズを大きくしたかったり、学習を高速で終えるために複数のGPUを使いたいときがあります。
そういった場合「並列処理」を使います。

PytorchにはDataParallel と DistributedDataParallelの2つがあります。DDPを使うと学習が早く終わります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838545/7351a8bf-5de8-7eac-1ccc-fcfc709d41e8.png)

引用元
https://github.com/ultralytics/yolov5/issues/463

面倒なので説明は省略しますが、DPだとPythonのGIL(グローバルインタプリタロック)の制限がボトルネックになって遅い為DDPを使うと早くなります。

## サンプルコード全容
“`python
# CPU
import

元記事を表示

自己紹介

## 名前
masatake sato

## 出身
中部地方

## 仕事
* 製造業でエンジニア
* 生成AI使って色々やる

## 興味ある事
webアプリ開発
* Django
* Bootstrap
* PostgreSQL

生成AI
* Python
* ChatGPT, Claude, Gemini, Llama
* RAG, VectorDB

元記事を表示

再帰関数の自分用メモ

## 背景

– 深さ優先探索を学ぶにあたって再帰関数のコードを書く必要があった。
– 再帰関数の考えたをノートに整理して少し掴む事ができたので、それをまとめておく。

## 考え方

重要なのは、再帰関数の処理には2つのパターンがあると言う事を理解し、それぞれ今回の問題ではどう言う状況が考えられるかを整理することから始める。

2つのパターンとは以下
1. 再帰を行うパターン
1. 例外のパターン

### 再帰関数の基本である階乗(n!)のアルゴリズムを例に考えていく。

– 階乗のアルゴリズムにおける再帰を行うパターン

これは以下の数式のように現在の値に、1を引いた階乗を掛けるパターンである。
この場合、入れ子のようにまた同じ関数が現れるので、再帰が生まれている。

“`math
k\times(k-1)!
“`

– 階乗のアルゴリズムにおける例外のパターン

これは、k = 1となったときである。
この時には、ひとつ小さい値である0!(=1)を加える必要はなく、ここで処理を止める必要がある。

再帰関数ではどこかで処理を止めないと無限ループが起

元記事を表示

「文字列収集」(ランク S) を解いてみた

# はじめに
[paiza x Qiita のプログラミング問題](https://paiza.jp/pages/campaign/paiza-qiita “paiza×Qiitaコラボキャンペーン”) の [文字列収集](https://paiza.jp/works/mondai/real_event/word_collection “文字列収集 | レベルアップ問題集 | プログラミング学習サイト【paizaラーニング】”) をトライしました. 正規表現とリストの内包表記の勉強になりました.

末尾に Google Colaboratory へのリンクを貼っています.

:::note info
ここでは文字列の一致に “`re.match()“` を使っていますが, 代わりに “`startswith()“` を使った記事も書きましたので, ご参考ください.

[「文字列収集」(ランク S) を解いてみた (startswith() を使う)](https://qiita.com/satomshr/items/96cc357d562ce487bce6 “「文字列収集」(ラ

元記事を表示

【Python】バージョン別便利機能10選

python3.13のリリースが近づいてきたということで、今回は各バージョンの便利機能をおさらいしたいと思います。

ちなみにPython3.13は現在candidate版が公開されています。candidate版は正式版になる予定のバージョンのことです。

> Actual:
>
> 3.13 development begins: Monday, 2023-05-22
3.13.0 alpha 1: Friday, 2023-10-13
3.13.0 alpha 2: Wednesday, 2023-11-22
3.13.0 alpha 3: Wednesday, 2024-01-17
3.13.0 alpha 4: Thursday, 2024-02-15
3.13.0 alpha 5: Tuesday, 2024-03-12
3.13.0 alpha 6: Tuesday, 2024-04-09
3.13.0 beta 1: Wednesday, 2024-05-08 (No new features beyond this point.)
3.13.0 beta 2: W

元記事を表示

[PyTorch] LSTMのシーケンス長による時系列予測精度の影響調査

# 目的
LSTMのシーケンス長による時系列予測精度の影響を調査する。

# 結論
単純なプラント(1次遅れ系)の場合はシーケンス長は短い方が過学習しないので精度がよく、シーケンス長1が最も精度が良い。

尚、LSTMでも複雑なプラントの場合はシーケンス長を長くする必要があると考えられる。
また、MLPのように状態量を持たないモデルではシーケンス長1で時系列データ予測を行うと未学習になり精度が悪いので注意。

# 比較条件
・プラント:1次遅れ系
・学習用データ作成用入力信号:Chirp信号
・検証用データ作成用入力信号:Step信号

# 実験結果
・シーケンス長=1:精度問題なし。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/111514/9e6382cc-6101-0add-85eb-75a749176250.png)

・シーケンス長=16:大きな問題ではないが編曲点で若干ノイズが出ている。
![image.png](https://qiita-image-store.s3.a

元記事を表示

新たな計算の形。 48ビット(6バイト)のメモリを持つ256基の計算機群。そのメモリ状態を視覚化するゲームです。

### ショートストーリー: **「48ビットの計算機群の物語」**

東京の夜景が一面に広がるオフィスビルの中、山田亮介はコンピュータの前に座っていた。彼は東京の一流ソフトウェア開発会社で働くプログラマで、最近は最先端の並列計算システムに取り組んでいた。

今日の彼の目標は、16ビットの数値を加算する並列計算機群をシミュレーションし、そのメモリ状態を視覚化することだった。彼の画面には、16×16の計算機群が表示され、各計算機が16ビットのランダムな数値の加算を行っている。ビットごとに色が異なり、結果がどのように変化するかが一目でわかるように設計されていた。

「このプロジェクトが成功すれば、並列計算の理解が大きく進む。」山田は自分に言い聞かせるように呟いた。彼は慎重にプログラムを調整し、計算機群が正確に動作するようにしていた。

プログラムが実行されると、16×16の計算機群がリアルタイムで色を変えながら動き出した。各計算機は、16ビットのランダムな数値を生成し、それを加算して結果を48ビットで出力していた。つまり16ビットの2つの入力数値と16ビットで表

元記事を表示

もっともっとダイナミック ジュリア集合 が描かれた空間内を飛び回るゲーム。

![スクリーンショット 2024-08-25 044719.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/2dab45f0-f36c-943e-d32f-924d16b782ae.png)

![スクリーンショット 2024-08-25 044618.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/53a0a048-0b0a-1b22-0d94-c115545e7ddc.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/1d8b324c-fa7f-8613-433c-ee0269009426.png)

### ジュリア集合をプロットし、その点に沿ってカメラが移動するアニメーションのゲームです。

コードをメモ帳などのテキストエディタに貼り付け、フ

元記事を表示

複雑でカオス的な動きを持つ4重振り子のアニメーションのゲーム。

![スクリーンショット 2024-08-25 042519.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/6ec592a8-7151-7c76-ae1c-7ef1b929110d.png)

![スクリーンショット 2024-08-25 042452.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3838874/8e8b0b8f-5b34-69fa-a555-bbf324eae61d.png)

### 複雑な動きを持つ4重振り子のアニメーションを楽しむことができます。スペースキーで異なる初期条件での振り子の動きを試すことができます。

コードをメモ帳などのテキストエディタに貼り付け、ファイルを「index.html」などの拡張子が.htmlのファイルとして保存します。その後、保存したファイルをブラウザで開けば、コードが実行されます。

“`html

元記事を表示

PythonのCeleryを試してみた

## これは何?
– pythonのCeleryパッケージをローカルにて動かしてみます。
– 今回はDockerのRedisを使用し、Celeryが動作することを確認できました。

### Celeryとは

Celeryのイメージ

![Celery.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/386347/5c2dbda5-71cc-2002-11d9-02c2e0a70102.png)

– Task
– Celeryでの実行のために作成されるタスク。
– Broker
– 作成されたタスクの置き場所。タスクはWorkerに実行されるまで、ここで待機する。
– Worker
– Brokerからタスクを持ってきて実行する。Celeryのインスタンスが役割を担う。
– Backend
– 実行されたタスクの結果を保存する場所。

図にもある通り、Celeryを実行するWorkerはTaskを作成するAppとは別になります。そのため、Appと分けた

元記事を表示

ABC368回答メモ

# 0.はじめに
 ちょっと業務時間と被っていましたが、こっそり参戦。
 点数的にもD問題も易しめだったためか、A~Dまで解けましたが
 D終わった時点で22:30近くとなっておりE以降まで手が届きませんでした・・・。
 レートは+22で711と700台に復帰しました。

# 1.A – Cut
 スライスの問題。
 まずは適当に作ってみて、結果を見て微調整・・・。
 最初に作ったときは、上からK枚とって後ろにつなげるようになっていたり
 1枚ずれてたりしましたが、微調整してACとなりました。
 
 https://atcoder.jp/contests/abc368/submissions/57035502

# 2.B – Decrease 2 max elements
 手順がややこしい問題。
 心を無にして問題通りにコーディングを行いました。
 【実装】
  1.変数NとリストAを入力
  2.リストAを降順ソート
  3.変数ansを0で初期化
  4.以下リストA[1]が0以下なるまで繰り返し
   -1.A[0]から1マイナス
   -2.A[1]から1マイナス
  

元記事を表示

単振り子の直交座標による運動式表示とシミュレーション

# はじめに
単振り子の運動方程式は未知の張力を考慮しなくて済む極座標によって記述されることがほとんどである。そのときに、三角関数が多用される。しかし、直交座標による運動方程式の叙述は、未知の力である張力を考慮に入れなければならないため複雑になる。そこで、今回は単振り子の運動方程式に直交座標系を導入し、Pythonの差分法で単振り子の運動をシミュレーションすることを目的とする。

# 条件設定
-y方向に重力が働いているxy座標系の原点に糸が吊り下がっていて末端におもり$m$が存在しているものとする。このとき、おもりに対する運動方程式は以下のように表すことができる。ただし、糸の長さを$R$、張力を$T$とする。$T$は未知数である。

“`math
\begin{equation}
\left\{ \,
\begin{aligned}
& a_x = -T \frac{x}{mR} \\
& a_y = -g-T \frac{y}{mR}\\
\end{aligned}
\right.
\end{equation}

“`

一方で、円の方程式よ

元記事を表示

OTHERカテゴリの最新記事