Python関連のことを調べてみた2023年01月25日

Python関連のことを調べてみた2023年01月25日

LocustをEKS上で動かす

# この記事について

負荷試験にてLocustを利用する必要がありました。そこで柔軟にスケールできるようにEKS上で動かすことになりました。

EKS上でLocustを動かして、簡単な負荷試験を実施する手順などについてこの記事にまとめます。

なお、この記事ではLocustのシナリオについては深く触れません。
あくまで動作確認レベルのシナリオになります。

# 簡単に登場人物の紹介

## Locsut

Python製の負荷試験ツールです。
負荷試験のシナリオをPythonを用いて柔軟に作り込むことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/435280/9759d767-47f6-1b71-d521-1c1d9aedb43b.png)

https://locust.io/

locustにはmaster/workerモード機能があり、これを利用することで複数インスタンス(コンテナ)を利用してスケールさせながらlocustによる負荷試験を行うことが可能です。

元記事を表示

IAM Policy SimulatorのAPIを使用して権限テストの自動化

# はじめに
作成したIAMポリシーをマネジメントコンソールから手動でテストするのは大変なので、APIを利用してテストの自動化をしてみました。

# 内容
AWS CLI、またはAWS SDKを使用して[IAM Policy Simulator](https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/access_policies_testing-policies.html)を呼び出して、既存のIAMポリシーをプログラムでテストします。これにより、ポリシーが意図した効果を持っていることを確認します。

# IAM ポリシーをシミュレートするには (AWS CLI、AWS API)
APIは下記の2つあり、CLIとSDKから利用できます。
– AWS CLI: [aws iam simulate-custom-policy](https://docs.aws.amazon.com/cli/latest/reference/iam/simulate-custom-policy.html) および [aws iam simulate-p

元記事を表示

[sklearn]pipeline実行できない

scikit-learnのpipelineは前処理やモデルを定義しておくと処理を簡潔にかけるので重要です。
今回、pipelineをつかってgridsearchを組み込んだときにpipelineが動かなかったエラーにハマったのでその解決法です。

“`python:❌
param_grid = {‘n_components’: [2, 3, 4, 5, 6], ‘scale’:[True, False], ‘max_iter’: [1000]}

pipe = Pipeline(steps=[(‘scaler’, StandardScaler()),(‘model’, PLSRegression())])
kf = KFold(n_splits=5, shuffle=True, random_state=0)
grid_search = GridSearchCV(pipe, param_grid, cv=kf, refit=True, n_jobs=-1, verbose=1)
“`

“`python:エラー
ValueError: Invalid parameter ‘ma

元記事を表示

Pythonのゲームライブラリ Python Arcade Libraryの紹介

# Python Arcade Libraryの概要

Python Arcade LibraryはPythonで2Dゲームを作るためのライブラリである.
有名なライブラリだと,[pygame](https://github.com/pygame/pygame)がある.ただ,Windowsの環境でpipを使ったインストールをしようとすると,*raise DistutilsPlatformError(“Unable to find vcvarsall.bat”)* というエラーを吐いてしまう.このエラーの解決方法が気に入らない人はPython Arcade Libraryを使うと良いだろう.
Python Arcade Libraryは[pyglet](https://pyglet.readthedocs.io/en/latest/)というOpenGLを使ったライブラリをゲームで使いやすくするために,[pymunk](https://pyglet.readthedocs.io/en/latest/)や[Tiled](https://pyglet.readthedocs.io/en/lat

元記事を表示

機械学習コンペで初めて金メダルを獲った話

皆さんおはこんばんにちは。
[AcademiX](https://www.academix.jp/)というAIコミュニティに所属しているほきと申します。
今回Nishikaのコンペにチームで参加し、結果として**8位になり金メダル:military_medal:を獲得**できました!
参加してみてよかったことうまくいかなかったことなどを書いておくのでこれから参加する方の参考になれば幸いです。

:::note warn
自己紹介にもありますがコンペに2回しか参加したことのないひよっこが書いている記事という点をご理解いただきたいと思います。つよつよの方アドバイス等ありましたら是非コメント欄にお願いします!
:::
![スクリーンショット 2023-01-24 22.29.17(2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2736924/cb938347-db90-3acb-33e9-9f51c98ca6a3.png)

# 自己紹介
– 理系国立大学学部3年生
– 生体信号情報学の研究室に所属 ~

元記事を表示

Python で Amazon S3 の MultiPartUpload を扱う

Amazon S3 に巨大ファイルを置きたいときに MultiPartUpload を使いたくなることが多々あるが、Python + boto3 からそのまま扱おうとするとややこしいので自分が使いやすいようなクラスを実装した。

## 実装
“` python
class AmazonS3MultipartUploader:
“””Amazon S3 に巨大なオブジェクトに少しずつ書き込んでいくためのクラス”””

def __init__(self, s3, *, part_size_threshold: int = 5 * 1024 * 1024, **kwargs):
self.s3 = s3
self.mpu = self.s3.create_multipart_upload(**kwargs)
self.kwargs = {
“Bucket”: self.mpu[“Bucket”],
“Key”: self.mpu[“Key”],
“Upl

元記事を表示

単回帰分析の再実装

## はじめに

42の課題で単回帰分析を実装したため、その際に見た記事などをまとめたいと思い書きました。

箇条書きのような感じでまとめているだけで、実際に単回帰分析の説明をするわけではないのでご了承ください。

私が作ったものはこちらにあります。

https://github.com/kotabrog/ft_linear_regression

また42の他の活動についてはこちらにありますので、42自体に興味がある方はぜひこちらもどうぞ。

https://note.com/kotabrog/n/n292c0b5ef071

## 前提知識

そもそも私は3年ほど機械学習関連の仕事をしているため、ある程度この分野については知識があります。

ですので、今回参考にした記事は、「あれ、こういうことをしたいときはどうやって書くんだっけな……」とか、「なんとなくわかるけどもうちょっと詳細が知りたいな……」という目的で探したものになります。

もしもっと網羅的に知りたい!ということでしたら、例えば私はこちらの書籍などで学んだので、気になるようでしたらぜひ。

https://www.ama

元記事を表示

StarUMLを使ってPythonのオブジェクトを生成する

## オブジェクト指向のソフトウェアモデラーでPythonのオブジェクトコードを生成する

– UML(Unified Modeling Language/統一モデリング言語)はソフトウェア工学の分野で使われる
– オブジェクト指向の分析・設計・モデリングに用いられる

::: note
__環境__
– python : 3.11.0
– StarUML : v5.1.0
:::

### UMLツール「 [Star UML](https://staruml.io/) 」をインストールする

![スクリーンショット 2023-01-24 22.15.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/699739/f86fb804-e187-b434-797a-2ef6815baf2b.png)

### オブジェクトを作成

![スクリーンショット 2023-01-24 22.09.44.png](https://qiita-image-store.s3.ap-northeast-1.amazo

元記事を表示

【Python】3DモデルのIoUを計算した

# 概要
3D分野の研究では、生成したモデルの精度を評価するために、ターゲットオブジェクトとのIoUを測ることがあります。
今回はボクセル表現の3次元モデルにおけるIoUをPythonで実装しました。

# IoUとは
IoUはIntersection over Unionの事で、「2つの物体の領域がどれだけ重なっているか」を評価する指標です。
2D画像では物体検出などに用いられます。

例えば、物体Aと物体BのIoUを測る際は以下のように求めることができます。

“`math
IoU(A, B) = \frac{A \;\cap \; B}{A \; \cup \; B}
“`
したがって、物体のAND領域をOR領域で割ることで、どれだけ重なっているかを求めることができるのです。

では3DモデルにおけるIoUとは、どのように求めるのでしょうか?
最もシンプルな方法は、3Dモデルを**ボクセル表現**に変換し、その重なりを調べる事です。

ボクセル表現とは、2D画像を構成するピクセルの3次元版にあたります。この表現を用いれば、単純なAND, OR領域の算出でIoU計算ができます。

元記事を表示

個人開発日誌

1.はじめに

地方の大学に通う大学3年生(文系)です。
個人でのwebアプリ開発に向けて備忘録を残していきます。
前提情報は簡単にまとめますが、それ以降は基本的には自分用のメモなのでかなり雑に書いていくと思います。

### 簡単な経歴

– 経済学部所属のド文系
– プログラミング歴→ダラダラと半年程度
– 実装経験、開発経験ほぼなし
– Udemy,Qiitaを参考に独学(python,django,AWS,gitなど)

こんな感じです。
自分の経歴を書いてて悲しくなってきました。早く一人前になりたいです。


# 2.どんなアプリか

一言で表すと、【職場のシフトをみんなで作ろうよ!】です。

**リアルタイムでスタッフ全員がシフト管理に参加でき、面倒な再調整がなくなる**ことを目標としたサービスです。

簡単な特徴としては、
– 画面に表示されるカレンダーの日付に希望のシフトを埋めていく
– **他スタッフの入力状況がリアルタイムで確認できるので再調整が減る**(こだわりポイント)
– 定員に達した日程のシフトは自動的に確定されて入力ができなくなる
– シフ

元記事を表示

Databricks Certified Machine Learning Associate 合格体験記

# はじめに

![スクリーンショット 2023-01-07 13.45.52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/226404/54639ffe-ea2a-3445-dda0-72468369aebd.png)

株式会社NTTデータ [Data & Intelligence事業部](https://enterprise-aiiot.nttdata.com/) の nttd-yuan です。
Databricksのエバンジェリスト資格 [Databricks Champion](https://www.databricks.com/jp/blog/2022/12/06/jimarelegendary-heroes-data-ai.html) の認定者です。

Databricks Certified Machine Learning Associateという資格に合格しましたので、試験の概要や感想について書かせていただきます。
Databricks 製品に詳しくなりたくて始めたのですが、機械

元記事を表示

Djangoの本番環境(DEBUG = False)にて、mediaに保存した画像が表示されない問題を解消

はじめに

ローカル環境(DEBUG = True)では、mediaに保存されている画像が表示出来るのに、本番環境では表示することが出来ないという問題に直面した。

結論から言うと、サードパーティー製のクラウドストレージ(例:AWSなど)の1つである
[cloudinary.com](https://cloudinary.com/)を利用することで解決したので、自分の行った手順を紹介したいと思う。
※djangoだけで、mediaに保存された画像を表示することは可能かもしれないが、調べきることが出来なかった。

また、
[MEDIA files in production — Django
](https://mrvaibh.medium.com/handle-media-files-in-production-django-cf984aea5490)このサイトの内容を参考にしたので、英文に慣れている方はこちらの内容を参考にされると良いと思う。

注意:今回書いている記事は、ローカル環境では、mediaに保存された画像を表示出来ていることを前提としています。

元記事を表示

[初心者]ChatGPTをつかってコードを修正してみる

# はじめに
ChatGPTがコードを修正してくれると聞きましたので試してみました
# 直すコード
前回のコードで気になっておりましたのが、以下の同じ処理を繰り返す部分がかっこわるく、もう少しまとまらないかと思っておりました。

“`python
df_nile = df_drone_data.copy()
df_nile[‘出願人/権利者’] = df_nile[‘出願人/権利者’].str.contains(‘株式会社ナイルワークス’)
df_nile = df_nile[~(df_nile[‘出願人/権利者’] == False)]

df_ntt = df_drone_data.copy()
df_ntt[‘出願人/権利者’] = df_ntt[‘出願人/権利者’].str.contains(‘株式会社NTTドコモ’)
df_ntt = df_ntt[~(df_ntt[‘出願人/権利者’] == False)]

df_toy = df_drone_data.copy()
df_toy[‘出願人/権利者’] = df_toy[‘出願人/権利者’].str.contains(‘

元記事を表示

Python sys.stdin.readlines() 読み込み方法

sys.stdin.leadline()の場合
“`
import sys
s = sys.stdin.readline()
print(s)
“`
実行
“`sh
$ python3 main.py
qqqqq 
ここでEnter押せばそのまま出力される
qqqqq
“`

sys.stdin.leadlines()の場合
“`
import sys
s = sys.stdin.readlines()
print(s)
“`
実行
“`sh
$ python3 main.py
qqqqq
ここで止まるので入力終了させたい
“`

んで、適当にググって最初の方にヒットした記事に従い Ctrl+Z すると

“`sh
^Z
[12]+ Stopped python3 main.py
“`
Ctrl+ C すると

“`sh
^CTraceback (most recent call last):
File “/Users/Desktop/main.py”, line 3, in
s

元記事を表示

ラズパイだってアートになれる

知人の手伝いでラズパイを使って美術展示を制御するプログラムを書きました。
初めてオブジェクト指向なプログラム(多分)も書いたので備忘録がてら掲載します。

# 展示概要

自分がメインのプロジェクトではないので一応詳細は伏せますが、展示概要は

>鑑賞者が個室に入ると部屋が光に包まれる。天井には常識を超越した映像が投影され、観客は困惑と興奮の中で超感覚体験をする。

みたいな感じです。

もっと凄いイイ感じの展示なんですけど僕の日本語力が及ばず魅力が伝えられなくて申し訳ないです。
僕は現代アートなるものは難しくて避けがちなのですが、本展示製作者の一員である友人曰く鑑賞者が宇宙猫になれるのを目指したとのことです。

![宇宙猫](https://pbs.twimg.com/media/BeH0YxeCAAA3ojG?format=jpg)

いいですね。
そういうのは好きです。

# システム概要

システムの概要は以下の通りです。
![システム図](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/684034/49

元記事を表示

sklearn.exceptions.NotFittedError: Estimator not fitted, call fit before exploiting the model.

# LGBMNotFittedErrorが出た
## 何が起きて何をしたか
Google Colabで学習させたLightGBMのモデルをpickleし、別の環境でunpickleしてpredictしようとしたところ以下のエラーが出た。
“`python
Traceback (most recent call last):
File “/usr/local/bin/rank_strings”, line 8, in
sys.exit(argmain())
File “/usr/local/lib/python3.8/site-packages/stringsifter/rank_strings.py”, line 140, in argmain
main(args.input_strings, args.limit, args.min_score,
File “/usr/local/lib/python3.8/site-packages/stringsifter/rank_strings.py”, line 39, in main

元記事を表示

pyautoguiで遊ぶ クリックして立ち上げる

# pyautoguiとは
pythonで画面上でのマウスとキーボードの操作を自動化できる

## よく使用する動作
### click
マウス側の操作、左クリックと右クリックの指定、クリック回数の指定ができる。
### locateOnScreen
指定した画像と一致する画面上の画像がある場合にその座標を取得
### sleep
待機時間 プログラム上で保存や更新などの処理が行われるとき、別の処理が挟まれてしまうのを防ぐために使用
### hotkey
同時押し

### 使用例
“`
pyautogui.locateOnScreen(‘./img/kyoyu_up.png’)
pyautogui.click(d_click[0],d_click[1],button=”left”)
pyautogui.sleep(0.2)
pyautogui.hotkey(“altleft”,”printscreen”)
“`

## zoomをクリックして起動させる
先ほど紹介した使用例をもとに、アイコンをクリックして起動させてみるプログラムを作成する
![image.png](https:/

元記事を表示

【Python】AWS SAMでLambdaの外部モジュールのバージョンを固定する

# はじめに
外部モジュールを使用するLambdaではモジュールをアップロードする必要があります。
AWS SAMを使うと簡単にソースコードとモジュールを一緒にアップロードする事が可能です。
AWS SAMである関数に久しぶりにdeployを行った時に、モジュールのバージョンを固定する必要がありました。

# やらかし先生
RDSに接続するPythonのLambdaで `pymsql`を使用しています。
RDS接続には関与しない変更を行いデプロイしたところ、RDSへの接続がエラーになりました:scream:

原因としては`pymysql`のバージョンが0.9系から1.0系に変更されていたため、同じ構文では接続が出来なくなっていました。
そのため`pymysql`のバージョンを0.9系に固定する回避策を行いました。

# モジュールのバージョン固定方法
## 結論
**requirements.txt** でバージョンを明記します

“`
例 pymysqlを0.9.3のバージョンを指定したい時
pymysql == 0.9.3
“`

## 記述方法について
上記の指定方法はAW

元記事を表示

Pythonで文字列の類似度を120倍高速に計算するRapidFuzzを勧めたい

# はじめに
みずほリサーチ&テクノロジーズ株式会社の@fujineです。

本記事では、文字列同士の類似度を計算する「レーベンシュタイン距離」を`RapidFuzz`で超高速に処理する方法を解説いたします。

この方法で実装すると、1万件の文字列同士の類似度計算において、 **一般的な[levenshteinライブラリ](https://github.com/maxbachmann/python-Levenshtein)よりも120倍近く高速に計算することが可能です!**

:::note
執筆時点でQiitaには`RapidFuzz`の記事はまだ無いため、 **本記事がQiita初の解説記事** となります。
:::

![logo](https://raw.githubusercontent.com/maxbachmann/RapidFuzz/a0b75e630e39d9649a4915a6e1d29912d2bc039f/docs/img/RapidFuzz.svg)

([RapidFuzzのGitHubリポジトリ](https://github.com/maxbachman

元記事を表示

execute_scriptなら画面外の要素をクリックできる

# 概要

通常Seleniumで要素をクリックする際は、
“`Python
driver.find_element(By.XPATH, **** ).click()
“`
でクリックすることができるのですが、
画面外の要素をクリックする際に、エラーが起きることがあったので、以下の記述に書き換えてたところ解決しました。

“`Python
clickElement = driver.find_element(By.XPATH, ****)
driver.execute_script(“arguments[0].click();”, clickElement)
“`

## 経緯
社内で使っているグループウェアで、データのバックアップがシステムデータのフルパッケージでしか取れないために、保存しているファイルを間違って消したり、階層フォルダごと消したりした際に、ファイル単位で復元することができないことが問題になり、どうにか自動的にファイル単位でバックアップが取れないか相談されたため、無理やり作った際のメモ。
正直クソ案件でしたが、こういう動的なシステムでも取得できることがわかった

元記事を表示

OTHERカテゴリの最新記事