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

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

開発ツールに頼らず 様々な言語から WebAssembly(第7回)

WebAssembly は多くのプログラム言語からライブラリの様に呼び出す事が出来る。
WebAssembly のコードを書く方法は多くの記事で書かれているが、その使い方はフレームワーク等のツールに頼っている事が多い様だ。
本記事では、そのような便利ツールに出来るだけ頼らず JavaScript, Rust, Python, Ruby から WebAssembly を実行する方法を記載する。

WebAssembly は新しい技術である。
目先の最先端ツールに飛びつくのもよいが、その基礎を学んで長く使える知識を身に着けないか?

本記事はシリーズの第6回である。シリーズ記事の一覧は [第1回] の **#シリーズ記事一覧** に載せている。シリーズの記事を追加する時は [第1回] の一覧を更新して通知を行うので興味の有る人は [第1回] をストックして欲しい。

# 本記事の概要と過去記事の復習

[第6回] では 3 種類の WebAssembly モジュール(クラスの様な物) を作成し、オブジェクト指向の「委譲の様な事を行った。」
具体的には WebAssembly インスタンス

元記事を表示

ChatGPTとPythonで学ぶ k近傍法

みなさんこんにちは。今日もChatGPTさんを講師にお迎えして、「ChatGPTとPythonで学ぶ k近傍法」というテーマで雑談したいと思います。それではChatGPTさん、よろしくお願いします。

### **assistant**:

こんにちは、みなさん。今日はk近傍法について学びましょう。

k近傍法(k-Nearest Neighbors、k-NN)は、分類や回帰の問題を解くためのシンプルな機械学習アルゴリズムの一つです。このアルゴリズムは、新しいデータポイントを分類するために、そのデータポイントの近くにある他のデータポイントを見て、それらの最も一般的なクラスを新しいデータポイントのクラスとして選択します。

Pythonの機械学習ライブラリであるscikit-learnを使ってk近傍法を実装することができます。以下に、基本的なコードを示します。

“`python
from sklearn.neighbors import KNeighborsClassifier
from sklearn import datasets
from sklearn.model

元記事を表示

gRPC入門: はじめてのgRPC

## 1. はじめに
gRPCはGoogleが開発したオープンソースのRPC (Remote Procedure Call) フレームワークで、2015年に公開されました。HTTP/2を通信プロトコルとして使用し、データのシリアル化にはProtocol Buffers(ProtoBufとも呼ばれる)を使用することが特徴です。

## 2. gRPCの特徴

1. Protocol Buffersとは
Protocol BuffersはGoogleが開発したバイナリ形式のデータ表現フォーマットです。JSONやXMLよりも効率的にデータをシリアライズ・デシリアライズすることが可能です。また、プログラミング言語に依存しない独自のスキーマ定義言語を持っており、このスキーマを基に各言語用のコードが生成されます。

2. HTTP/2による高速通信
HTTP/2を使用することで、従来のHTTP/1.1よりも高速な通信を実現しています。HTTP/2の特徴として、ヘッダー圧縮や多重ストリーム、サーバープッシュなどがあり、これにより効率的な通信が可能となっています。

3. ストリーミング
gRPC

元記事を表示

【Python】Traffic Generatorを作った

# 背景
新しいプラットフォーム上にアプリを移設したのに伴い`Grafana`と`ElastcSearch`でMetricsとLogを確認したい。そのためにある程度の規模のTrafficを生成したい。通常は`Apache Jmeter`を用いているが、今回はリクエスト毎ごとにUserAgentとリクエストにのせるパラメータをランダムに切り替えたいので自前で用意した。

# 要件
– 別ファイルにあるURLのリストを用いてリクエストを送信したい
– リクエスト毎ごとにUserAgentとクエリパラメータをランダムに切り替えたい
– 単位時間あたりのTrafficをある程度大きくしたい

# Code

“`python:traffic_generator.py
# coding:utf-8
import requests
import random
import threading
from time import sleep

user_agents = [
# Safari User-Agents
“Mozilla/5.0 (iPhone; CPU iPhone O

元記事を表示

DiscordでDeepL-APIを使用した翻訳Botを作る

## 作成のきっかけ
研究室の兼ね合いで英語を使う機会が増えそうなので気軽に使える翻訳アプリが欲しかった。
仕事柄Discordは常に開いているので、DiscordBotならいつでも使いやすいと思い作成しました。

## 環境
Windows11
Python 3.11.4
VisualStudioCode

**使用ライブラリ**
Discord.py
requests
langdetect

## 基本仕様
日本語は英語に、英語(や他外国語)は日本語に 自動で翻訳できる。
コマンド入力は不要で、チャンネルに送信されたメッセージはすべて翻訳してくれる。
「おやすみ」と打つことでシャットダウンできる。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2321297/a3917d8d-9298-17bd-55be-0687a239eed8.png)
(きちんと相互翻訳ができているようだ)
## コードについて
Discord,DeepLAPIの有効化方法は探せば分かりやすい記事がたくさん出て

元記事を表示

機械学習 不動産データの線形回帰分析 メモ

## データを使って予測をしたい
### やること
– データセットを作る
– データを特徴量、ターゲットに分割
– 特徴量
– 予測に必要なデータ
– ターゲット
– 予測したいデータ
– モデルの作成
– モデルの学習
– 特定の物件のデータを投入して価格の予測

### コード
必要最小限のものに絞る
“`python
import pandas as pd
from sklearn.linear_model import LinearRegression
import joblib

# オリジナルの物件データセットを作成
data = {
‘専有面積’: [70, 80, 100, 120, 150],
‘築年数’: [5, 10, 8, 15, 20],
‘価格’: [3000, 4000, 5000, 5500, 6000]
}

df = pd.DataFrame(data)

# 特徴量とターゲット変数の分割
X = df[[‘専有面積’, ‘築年数’]]
y = df[‘価格’]

# モデル

元記事を表示

Pythonで〇×ゲームのAIを一から作成する その19 オブジェクト指向プログラミング

# 目次と前回の記事

https://qiita.com/ysgeso/items/2381dd4e3283cbed49a0

https://qiita.com/ysgeso/items/c5dbe62b329f7936181a

# 実装の進捗状況と前回までのおさらい

## 〇×ゲームの仕様と進捗状況

1. `正方形で区切られた 3 x 3 の 2 次元のゲーム盤上でゲームを行う`
2. `ゲーム開始時には、ゲーム盤の全てのマスは空になっている`
3. `2 人のプレイヤーが遊ぶゲームであり、一人は 〇 を、もう一人は × のマークを受け持つ`
4. __2 人のプレイヤーは、交互に空いている好きなマスに自分のマークを 1 つ置く__
5. 先手は 〇 のプレイヤーである
6. プレイヤーがマークを置いた結果、縦、横、斜めのいずれかの一直線の 3 マスに同じマークが並んだ場合、そのマークのプレイヤーの勝利とし、ゲームが終了する
7. すべてのマスが埋まった時にゲームの決着がついていない場合は引き分けとする

仕様の進捗状況は、以下のように表記します。

* 実装が完了した部

元記事を表示

BMI270 IMUのSPI通信実装:APIを使わずにPythonで制御を行う

# 背景
BMI270は6軸の加速度・ジャイロセンサをもった慣性測定ユニット(IMU)です。
BMI270の使い方を検索するとライブラリを使った記事がすでにありますが、本記事ではそれらを使用せずにデータシートを読んでイチから実装したので自分の備忘録も兼ねてその方法を記載します。
理由としては、

・ArduinoIDEなどで紹介されている方法ではなく、どのような環境でも構築できるようにしたい
・IMUのパラメータをデータシートを読みながら変更できるようにしたい

あたりが動機です。もともとはある基板にIMUを載せるにあたり最初はBMI160を選定していたのですが、ディスコンで入手不可になったため、代替品として選定しました。
最初はデバイスのパッケージサイズも同じ後発品なので、BMI160とほぼ同じ実装でいけるかと思ったのですが、想像以上に違う実装をする必要があってだいぶ苦戦しました。
BMI270のデータシートはこちらです。これを読みながら実装を進めていきます。

https://www.bosch-sensortec.com/products/motion-sensors/imus/

元記事を表示

スピアマンの順位相関係数についていろいろ

## はじめに

投稿された記事に下手にコメントをつけると,うざがれたり,ブロックされたりするので,別個記事を書きます。

## スピアマンの順位相関係数とは

さて,今回は「スピアマンの順位相関係数」です。わざわざ「スピアマンの」とあるのは,他に「ケンドールの順位相関係数」というのもあるからです。

いきなり,端的に言ってしまえば,「スピアマンの順位相関係数は,元のデータ(たとえば x, y の2つ)それぞれについて平均順位をつけ,その平均順位に基づき「ピアソンの積率相関係数」を計算したものです。またまた「ピアソンの積率」というのがついていますが,普通に「相関係数」として扱われているものの正式名称は「ピアソンの積率相関係数」なのです。

統計学のお話をするときに,やたらと数式を書きまくって煙に巻くということが多々ありますが,新規に開発した手法ならまだしも,もう100年以上も前に確立された手法を数式を用いて説明(証明)しようとするのは無意味でしょう。
それよりは,それぞれの手法の前提とか使用できるデータの条件とか結果の解釈に主眼を置くべきでしょう。もっとも,然るべき参考書やサイトならば

元記事を表示

花粉の飛散量予測モデルを作る2023 その1

ごきげんようQiita。
何年か前にこんなブログを作ってスギ花粉の飛散量をなんとか予測できないか、と考えておりました。
この記事はその続きになります。

とは言っても前のブログをそのままここにコピペするのも芸がないので、ざっくりダイジェストを載せておきます。

# 花粉飛散予測モデル作成ダイジェスト

一般的に、翌年の花粉飛散量は前年夏季の日照量、気温、降水量によって決定すると言われている
なんか違うっぽい、日照量と気温はかなり相関あるからどっちかで良いのでは
そもそも『夏季』っていつのこと?
7月と8月は間違いなく『夏季』。この2か月間は日照量と気温がものすごく正の相関を示す
→7月と8月だけで分析をする場合、気温か日照時間のどちらかで十分
6月と9月はむしろ『雨期』という第五の季節で日照量と気温に相関無し
→6月~9月で分析をする場合、気温と日

元記事を表示

数値を含む文字列のリストを数値順でソートするときに使うPythonのラムダ式

## はじめに
Pythonでのプログラミング中に、「数値を含む文字列のリストを数値順でソートする処理」が必要になり、試行錯誤していました。本来の処理に直接関係ない部分なので、可読性を犠牲にしてでもコンパクトにしたくなり、勉強がてらにラムダ式を使ってみました。シンプルに書けたのでメモとして残します。

## ラムダ式
変数に代入して関数として使う方法を使いました。
* `変数名` = lambda `引数`: `処理`

“`python
num_in_str = lambda str: [int(c) if c.isdigit() else c for c in re.split(r'(\d+)’, str) ]
“`

## 動作確認
### コード
“`python
import re

num_in_str = lambda str: [int(c) if c.isdigit() else c for c in re.split(r'(\d+)’, str) ]

lists = [‘S23’, ‘S14’, ‘S7’, ‘S11’, ‘S1’]
lists.sort(k

元記事を表示

QuantLibの固定利付債のクーポン計算方法を確認する

`ql.FixedRateBond`オブジェクトがどのようにクーポンを計算するかを確認する。

“`python:固定利付債を生成
import QuantLib as ql

schedule = ql.Schedule(
ql.Date(15, 5, 2007), # effective date : 開始日
ql.Date(15, 5, 2027), # termination date : 終了日
ql.Period(0, ql.Months), # tenor : 間隔(0は終了日のみ)
ql.Japan(), # calendar : 祝休日
ql.Unadjusted, # convention : 非営業日調整
ql.Unadjusted, # termination date convention : 終了日の非営業日調整
ql.D

元記事を表示

Python初心者がFizzBuzzやる

はじめましてQitta。
ここ数年Pythonの勉強を何度も何度も”Hello, World”から繰り返して挫折してきたのですがようやく腹も座り本格的に勉強することになりました。超初心者です。
勉強効率を上げるためにQittaで発信することにしました。

# と言うことで有名なFizzBuzz問題をやってみる

Qiitaの記述テストも兼ねて初心者らしくメジャーで簡単なものをまず記しましょう。
FizzBuzz問題は、1から順番に数えていって3の倍数だったら~~アホ~~「Fizz」、5の倍数になったら「Buzz」、3と5の倍数だったら「FizzBuzz」と数字の代わりに書き換える問題です。

なるほど、ループとif文を使えば何とか出来そうですね。
if文はまずは3と5の倍数、つまり15の倍数の条件付けを先に行って、後で3と5の倍数の場合を条件付けすれば良さそう。
たぶんこんな感じ。

“`php
# 典型的なFizzBuzz
for i in range(1, 100, 1):
if i % 15 == 0:
print(“FizzBuzz”)
eli

元記事を表示

因子分析とは何か?主成分分析との比較

# 目次
[1.はじめに](#1-はじめに)
[2.分析のアプローチ](#2-分析のアプローチ)
[3.分析のモデル](#3-分析のモデル)
[4.Pythonでの実装](#4-Pythonでの実装)
[5.おわりに](#5-おわりに)

# 1. はじめに
**因子分析**って、個人的には、ちょっと、分かりにくいです。
**主成分分析との違い**も、分かりにくいです。
**因子分析とは、一体、何なのか?** 
主成分分析と比較した上で、調べてみましたので、共有させて頂きます。
Pythonを使った、コードも載せましたので、ご覧ください。

# 2. 分析のアプローチ

**因子分析は、共通因子の働きを各変数について分解し、観測変数の背後にある潜在変数として、見つけ出します。
一方、主成分分析は、各変数を主成分に合成し、データの圧縮、情報の縮約を行います。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/76072/7bfdf375-7f10-c59d-2178-b975b605e

元記事を表示

pythonで作る3人でオセロ

早速コードを添付します。
すぐに改良するかもしれません。

一緒に作りましょう☺

# ゲームの説明書
3人で対戦するオセロです。
赤青黄に分かれて対戦します。
順番は赤青黄の順で対戦します。
また一番下のリセットボタンを押すことでゲームをはじめからやり直すことができます。

“` python
import tkinter as tks
from tkinter import messagebox

# 定数の設定
BOARD_SIZE = 8 # オセロボードのサイズ(8×8)
COLORS = {‘R’: ‘red’, ‘B’: ‘blue’, ‘Y’: ‘yellow’, ”: ‘white’} # オセロの色のマッピング
DIRECTIONS = [(1, 0), (-1, 0), (0, 1), (0, -1), (1, 1), (1, -1), (-1, 1), (-1, -1)] # 8方向を表すベクトル

# オセロのゲームロジック部分
class OthelloBoard:
def __init__(self):
# 初期化処理

元記事を表示

OpeninterpreterをAzure OpenAIで試す

Azure OpenAI環境にてopeninterpreterを試してみた。

# Openinterpreterとは
OpeninterpreterはOpenAIのchatgpt plusにて提供されている「codeinterpreter」のオープンソースクローン。
LLMに対して自然言語でアプローチして、プログラムコードを(ローカル環境にて)実行させることができる。
https://openinterpreter.com/
2023/9/26のupdateでDeveloper Featuresとしてpythonによる実行が追加されたため試してみた。(それまではコマンドラインツールのみだったはず。)

# コマンドライン実行
Azure OpenAIでの実行方法が変わっている。以前は環境変数にリソース設定をして –use-azure で起動できたはずだが、オプションが使えなくなっている。代わりに–model(-m)にazure/デプロイ名のオプションにて実行可能。(他LLMサービスを使用する場合も同様。この拡張による変更かと。)
“`bash
export AZURE_API_

元記事を表示

【図解】Pythonのライブラリ 24選+α

Pythonにはライブラリが沢山あります。ライブラリとは便利な機能を持ったプログラムを集めたものを言い、このライブラリを上手く使うことで色々なことを実現できます。

今回はこのライブラリを用途別で図解にまとめました。
Pythonでプログラムを組む際の参考になりましたら幸いです。

※簡単にまとめているだけなので、詳しい中身は公式ドキュメント等をご確認ください。

## 機械学習

**機械学習 > 深層学習**という包含関係です。

ざっくり言うと、特定のタスク(分析の方向性が明確)に対して予測できるのが機械学習で、より複雑なデータも処理できるのが深層学習です。

**ただし深層学習はその分、学習に要する時間やデータは多くなります。**

![4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2638073/e7f150fe-22f4-ef5c-7f48-84afa8815782.png)

## データ分析
データ分析には必須と言っていいほどのライブラリです。
Numpyはデータの前処理、matp

元記事を表示

ABC324の解説記事 (PyPy3 ABCD)

# はじめに
問題は[こちら](https://atcoder.jp/contests/abc324/tasks)
初心者(灰色〜茶色)向けです。
解説初挑戦ですのでお手柔らかに。
# A – Same
https://atcoder.jp/contests/abc324/tasks/abc324_a
## 考え方
愚直にリストの1番目と全要素が一致するかを確認し、1つでも異なる物があれば「No」を出力して終了し、そうでなければ「Yes」と解答します。
[解説](https://atcoder.jp/contests/abc324/editorial/7373)のように1つめとそれ以外を別変数に入れてしまった方がシンプルかと思います。
下記の方の解説のように、A_n をSetで持ってしまってその要素数で判定する、が秀逸だと思いました。

https://qiita.com/hyouchun/items/98b53e9dc8cc0b99e1fe#a—same
## 解答例
“`Python3:私の解答
n = int(input())
an = list(map(int, inpu

元記事を表示

ラプラス変換で連立微分方程式「ラプラス変換と微分方程式(3)(演習問題 / 解答例) 」をChatGPTとWolframAlphaとsympyでやってみたい。

・sympyで曲線が2本でます。

# オリジナル
例)次の初期値問題を解いてみる。

https://www2.yukawa.kyoto-u.ac.jp/~norihiro.tanahashi/pdf/ODE/note_14.pdf#page=4

https://www2.yukawa.kyoto-u.ac.jp/~norihiro.tanahashi/lecture.html
https://www2.yukawa.kyoto-u.ac.jp/~norihiro.tanahashi/index.html

# ChatGPT-3.5先生へ。1回目(**???わかりませんでした。???**)
“`
次の初期値問題を解いてみる。
y1′(t)=y1(t)+y2(t),y1(0)=0
y2′(t)=y2(t)+1 ,y2(0)=0
“`
日本語抜き
“`
y1′(t)=y1(t)+y2(t),y1(0)=0
y2′(t)=y2(t)+1 ,y2(0)=0
“`
(省略)
“`
sympyで
“`
y1(t) = 0
y2(t) = exp(t) – 1
過去に、

元記事を表示

Pythonで遅延セグメントツリーの問題を解けるようにする!

## はじめに
Pythonメインで書かれた遅延セグメントツリーの記事が少ないので、書いてみることにしました。
この記事では、「PythonでAtCoderにある遅延セグメントツリーの基礎的な問題が解けるようになる」ことを目標にします。

事前知識として、次のことができる前提で進めます。
– 簡単なPythonのコードが読める。 (前半部分は概論チックでPythonを知らなくても読めます)
– 普通のセグメントツリーのお気持ち・雰囲気がなんとなく分かる。

## セグメントツリーの復習
セグメントツリーがどんなのだったか、いったん復習します。

区間の最大値を求めるセグメントツリーを用意しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2469270/bba490b5-8f04-7427-2a1e-bb1b7c0b2a1a.png)

たとえば配列の $2$ ~ $6$ 番目の中の最大値を求めてくださいと言われたら…

![image.png](https://qi

元記事を表示

OTHERカテゴリの最新記事