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

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

【ロジスティック回帰分析】機械学習特訓 ver.4(まとめ)

【特訓 ver.4】 ロジスティック回帰スタート!!
※この記事ではロジスティック回帰分析についてまとめます

## ▼学習の流れ
まずはロジスティック回帰分析の基本を押さえ、具体的な問題を通して理解を深める。

■使用するデータ
握力測定に関するデータ
(実際の握力測定なしに、身長の値を用いて学生の握力分類を行う)

※データセット:後日

■ ロジスティック回帰分析について学習する
大まかな流れ)
① データ読み込みや前処理、分割
 - 質的変数は用いることができない

② モデルの設定と訓練
 - 「ロジスティック回帰分析」で実施する

③ モデルの精度の確認
 - 精度について、以下6項目で確認していく

分類における「学習モデルの性能評価」について確認していく!
(1) 混同行列(confusion matrix)
(2) 正解率(accuracy)
(3) 適合率(precision)
(4) 再現率(recall)
(5) F1スコア(F1-score)

AITRIOSのEdgeApplicationで採用されているFlatbuffersで遊んでみた

こんにちは。
ソニーセミコンダクタソリューションズの細井です。

今回はAITRIOSのエッジとクラウドを繋ぐインタフェースとして機能している[FlatBuffers](https://github.com/google/flatbuffers)について遊んでみましたので解説させていただきます。

**この記事は2024/8/7時点でDeveloper Siteに公開されているDeveloper Edition v1.8.0の情報を元に書いています。**

# FlatBuffersとは
Google製の2014年に公開されたバイナリシリアライズフォーマットです。
2014年に公開されてますが、意外と今年も更新は続けられてます。

下記が公式ドキュメントに記載されているFlatBuffersの概要です。

> – **Access to serialized data without parsing/unpacking** – What sets FlatBuffers apart is that it represents hierarchical data in a flat bi

PythonでExcel XLS形式とXLSX形式を変換する

日常業務では、さまざまなニーズやソフトウェアの互換性に合わせて、異なるフォーマットのExcelファイルを処理したり変換したりする必要がよくあります。Excelファイルの一般的なフォーマットはXLS(Excel 97-2003)とXLSX(Excel 2007以上)の2つです。この記事では、Pythonを使ってXLS形式とXLSX形式を変換する方法を紹介します。

* [PythonでXLSXをXLSに変換する](#pythonでxlsxをxlsに変換する)
* [PythonでXLSをXLSXに変換する](#pythonでxlsをxlsxに変換する)

## Python ライブラリ – インストール
必要なPythonライブラリはSpire.XLS for Pythonです。このPythonライブラリは、Excelドキュメントの作成、読み込み、編集、変換など、プログラムによる操作を幅広くサポートします。
このリンクからパッケージをダウンロードしてローカルパスからインストールするか、以下のpipコマンドを使って直接インストールすることができます:
`pip install Spir

ファイナンシャル・プランニング技能検定試験問題で LLM を Fine-tuning してみた / OpenAI Fine-tuning API 編

Web 上で公開されているファイナンシャル・プランニング技能検定(FP 技能検定)の過去問題を用いて、LLM を Fine-tuning した際の効果を検証しました。

今回は OpenAI が公開している Fine-tuning API を用いて、GPT-3.5-turbo および GPT-4o-mini の Fine-tuning を行った過程を紹介します。
また、OpenAI Evals および llm-jp-eval を用いた Fine-tuning 前後でのタスク性能の検証についても紹介します。

## タスク設計

今回は、定量的な評価のしやすさから、多肢選択問題のみによって構成されている 3 級および 2 級の FP 技能検定の学科試験を解くこととしました。
以下に学科試験問題の例を示します。

### 3 級 FP 技能検定 学科試験

3 級の FP 技能検定学科試験では、2 つの大問が設定されています。

大問1では、与えられた文章が適切か・不適切かを回答する正誤(二肢択一)問題が 30 問出題されます。

“`text
【第1問】 次の各文章((1)~(30))

【Atcoder解法検討】ABC133 A~E Python

## A – T or T
#### 問題ページ : [A – T or T](https://atcoder.jp/contests/abc133/tasks/abc133_a)
### 考察
$N \times A$と$B$の小さいほうを出力。
$if$文でも良いですが$min$関数もすっきりします。
### コード
“`python
N, A, B = map(int, input().split())
print(min(N*A,B))
“`

## B – Good Distance
#### 問題ページ : [B – Good Distance](https://atcoder.jp/contests/abc133/tasks/abc133_b)
### 考察
$N,D \leq 10$なので全数計算で十分間に合います。
数$n$が平方数であるかは$int(\sqrt{n})$もしくは小数誤差も懸念して$int(\sqrt{n})+1$の自乗が$n$になるかで判定可能です。
### コード
“`python
N, D = map(int, input().split(

OCIのオブジェクトストレージをOCI Functionsから操作する

OCI FunctionsでPythonを使った場合の、オブジェクトストレージを操作する方法について説明します。
ここで紹介するコードを、`fn init`コマンドで生成される`func.py`に追加してください(あくまでとりあえず動かす上での話です)。

# 必要なポリシー
“`
Allow dynamic-group to manage objects in compartment where target.bucket.name=’
“`
# requirements.txt
requirements.txtは以下です。デフォルトの物に`oci`を追加してください。
“`txt
fdk>=0.1.75
oci
“`

# クライアントのセットアップ
下記のような感じでオブジェクトストレージを操作するためのクライアントをセットアップします。
“`python
import oci
from oci.auth.signers import get_res

Pythonでの数値計算:NumPyを使った配列操作と演算

## はじめに
NumPyは、Pythonでの数値計算やデータ処理を行う際に使います。特に、多次元配列や行列の操作、科学計算、データ分析、画像処理など、色々な場面で活用することができます。では、NumPyの使い方を書いていきます!

### ・配列の作成
NumPyの基本的なデータ構造はndarray(N次元配列)です。配列はnp.array()を使って作成します。

#### 1次元配列の作成
NumPyで1次元配列を作成するには、np.array()を使用します。1次元配列は、リストのように並んだ一連の数値データを表します。
“`python
import numpy as np

arr = np.array([1, 2, 3, 4, 5])
print(arr)
# 出力: [1 2 3 4 5]
“`
ここで、np.array()関数にリスト形式のデータを渡すことで、NumPyの1次元配列を作成しています。arrは配列オブジェクトで、数値データが格納されています。リストと異なり、NumPyの配列は同じ型の要素が格納されており、数値計算に特化しています。

#### 2

Zenhubの課題をCSVに出力する方法

## はじめに

– Zenhub公式ではCSV出力をサポートしていない
– APIはあるので自分でコード書いてねというスタイル
– この記事では自身が必要な情報だけ出力しているが、 他に欲しい情報がある場合は`export_to_csv`のissue変数を出力して各自ピックアップしてもろて

## 前提
– Python環境が用意されていること
– requestsを入れてない場合は `pip install requests`
– Zenhub側でやること
– 取得したい課題のZenhubリポジトリIDをメモする
– トークンを発行する
– Github側でやること
– 以下をメモする
– リポジトリ名
– 組織名 or ユーザー名
– トークンを発行する

:::note warn
メモした内容はコード内の定数に入れる
:::

## コード

“`py:fetch_zenhub_issues.py
import csv
import datetime
import requests

GITHUB_TOKEN = ”

ZENH

PythonユーザーのためのC++チュートリアル (Visual Studio前提)

#### 1. C++環境のセットアップ
まず、C++を使うには開発環境を整える必要があります。Pythonでの開発と異なり、C++はコンパイル型言語なので、コンパイラとIDEが必要です。ここではVisual Studioを使います。

##### 1. Visual Studioのインストール

Visual Studio公式サイトからCommunity Editionをダウンロード。
インストール時に「Desktop development with C++」ワークロードを選択してください。

##### 2. 新しいC++プロジェクトを作成
Visual Studioを開き、「Create a new project」→「Console App (C++)」を選択し、プロジェクトを作成します。

#### 1.1. オンラインでC++コードを実行する方法
もしVisual Studioのセットアップが難しい、またはインストールせずに簡単にC++のコードを試してみたい場合、オンラインでC++コードを実行できるサイトもあります。おすすめのサイトは次の通りです:

##### 1.

graphragを触ってみる

# はじめに
今回は,前回の記事でたどり着くことができなかった,GraphRAGについて記載します.[graphrag](https://github.com/microsoft/graphrag)というmicrosoftが提供しているOSSを利用して,簡単なGraphRAG構築します.

# GraphRAGとは

そもそもGraph RAGの意義は,RAG(検索拡張生成:Retrieval-Augmented Generation)という,ドキュメントをベクトルにして,それをもとに回答させる手法を発展させることです.RAGでは,そのドキュメントに含まれる固有名詞の背景や関係性までを汲み取ることができません.指示代名詞が何を指しているのかも前後の文脈で分かる部分であるため,これらを明確にするためGraphを用いるアプローチです.つまり,関係性をわかるようにして,それを判断材料に含めてLLMに回答させることで,より精度の良い結果を得ることを目指しています.

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazona

3相交流の送電線の磁場解析

# はじめに
送電線に交流電流が流れるとその周りに大きさが、変化する磁界が生じる。その磁界によって通信線などが誘導されて誘導電圧がファラデーの法則によって生じてしまう場合がある。そこで、今回は3相交流電流を3本の送電線に流すことで生じる磁界の分布についてアニメ化してシミュレートする。

![sample.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/ce82fd48-cf11-030d-32cf-52c5f8ed821a.gif)

# 問題設定
平成24年電験一種の二次試験、電力・管理の問二をモデルとした。
詳細な問題情報などは電験王様を参照されたい。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/099b3256-54c3-e3db-80a1-09431055f84f.png)

ただし、$U,V,W$相に流れる電流は3相電流として、相順は$U,V,W$とした。この条

発電機の周波数と電気的出力の関係

# はじめに
発電機の周波数は一般的に重負荷になるほど低下する傾向にある。また、その場合の周波数と電気的出力は負の相関があり、線形関係が近似的に成立する場合が多い。この考えをもとにして速度調定率が定義されている。そこで今回は、そのような線形関係が負荷の変動後の安定状態で成立するかどうかを発電機の動揺方程式という微分方程式を数値解析的に解くことで検証する。ただし、以下のグラフがシミュレーション結果である。

![発電機の周波数と電気的出力の関係.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/270d16a3-fc68-a32a-5039-7493a6907490.png)

![発電機の周波数と電気的出力の関係_等高線図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/cd2ca504-1549-f702-409e-95816e91e87e.png)

# 導入
## 動揺方程式
回転体の回転

大2でPythonを始めてから1年経過して、学んだこと・夏インターンの結果・挫折しないためのTips

## なぜ書こうと思ったか
 1番の目的は備忘録ですが、プログラミング初学者の1つのロードマップとして参考にしたいただきたいと感じたからです。夏インターンの体験談や初学者が挫折しないためのTipsも書きました。

## Pythonを始めたきっかけ
 2023年10月に大学の授業でチーム開発をすることになり、スクレイピングアプリを作るためにPythonを学び始めました。理系ですが、電気回路・電子回路が専門で、プログラミングはほとんど未経験でした。

## 期間と学習内容

2022-2023年

プログラミングを始める前・きっかけ(大学1~2年前期)

私は電気電子系の学科で半導体にも興味があったので、就職先は漠然と東京エレクトロンやSONYセミコンダクタを考えていました。しかし、半導体工場はどこも地方で工場で作業服を着るのも抵抗がありました。

### 転機が訪れ、半導体 → 苦手だった情報系へ
もともとB1のプログラミングの授業でC++を学びましたが、いきなり型・クラスと言われて拒否反応が出てしまい、「プログラミングは全てこんな感

behaviour treesの可視化ツールpy_trees_ros_viewerをROS-humble のインストールする方法

# behaviour treesの可視化ツールpy_trees_ros_viewerをROS-humble のインストールする方法

最近 behaviour treesのお勉強を始めたところで、技術とbehaviour treesとは何?今回は省略します。原因は自分まだ勉強中なので、間違ってる知識をアップロードしていけないと思いました。

それで勉強の途中でbehaviour treesの状態をリアルタイムで可視化できれば、勉強の理解しやすくなるではと思って調べたら、py_trees_ros_viewerのgithub リンク:

https://github.com/splintered-reality/py_trees_ros_viewer

やり方の説明はあった。以下のコマンドです。
“`
sudo apt install ros--py-trees-ros-tutorials
# In a first shell
py-trees-tree-viewer
# In a second shell
ros2 launch py_trees_ros_tu

RLC直列回路のステップ応答と二次遅れ系について

# はじめに
RLC直列回路は、典型的な二次遅れ系の回路設定モデルであるといえる。そこで、その応答性を評価するために正の時間に一定のパルス電圧を入力するステップ応答の評価を行うことは意義があるといえる。しかし、古典制御ではその応答性を評価する場合、微分方程式をラプラス変換を用いて伝達関数に変換して評価してあげる必要性がある。ところが、微分方程式を状態方程式に変換して行列演算を行う現代制御では、ラプラス変換が不要になる場合がある。今回は、入力電圧にステップパルスを用いてコンデンサに蓄えられる電荷の応答性を調査することで、ステップ応答がどの様になるのかを調査する。また、RLCの各パラメーターと減衰係数、固有角速度$\zeta,\omega_n$との関係性も調査する。

![RLC_状態方程式_電流_ステップ応答電圧.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1686019/7ce55b66-77e3-d076-9302-180055a4535c.png)

# 導入
## アルゴリズム
RLC回路の微分

AtCoder ABC371 振り返り感想戦(ほぼ緑コーダーがPythonでA〜D問題まで)

## ABC371 感想まとめ

[AtCoder Beginner Contest 371 – AtCoder](https://atcoder.jp/contests/abc371)

今回は所用によりリアルタイムでのrated参加はできず、のんびりと問題を解きました。
C問題が難しくて時間がかかった一方、D問題はあっさり解けてしまったので、本番だったら時間配分が難しかったかもしれません。
手応えとしては、100分を目一杯使ってぎりぎりD問題まで4問解けたかどうか、という感じです。
C問題のような、実装量が多い問題をサクッと解けるようになりたいですね…

## [A – Jiro](https://atcoder.jp/contests/abc371/tasks/abc371_a)

今回はA問題からして難しいような…。効率が良い回答が思い浮かばなかったので、素直に全パターンをif文で書きました。

“` Python
AB, AC, BC = input().split()
if AB == “<": if BC == "<": print("

Google Nest Miniを喋らせる

# はじめに
– 我が家にGoogle Homeが4台ほどあるので活用したいので、とりあえずやってみる

# 結論ファースト
できた。

“`Python
import pychromecast
from gtts import gTTS
import io
import base64

# テキストを音声に変換
message = “昔々、あるところにおじいさんとおばあさんがほにゃらら”
tts = gTTS(message, lang=’ja’)

# 音声をバイトストリームとして保存
audio_stream = io.BytesIO()
tts.write_to_fp(audio_stream)
audio_stream.seek(0)

# Google Nest Homeを探す
chromecasts, browser = pychromecast.get_chromecasts()
# とりあえず名前で探す
cast = next((cc for cc in chromecasts if cc.name == “1階Nest”), None)

if cast:

Dockerを使って、DjangoからMySQLにアクセスしてみた

# はじめに
Dockerコンテナ上に建てたMySQLをDjangoでマイグレーションして、テーブル操作を実施します。
実行環境は以下です。これらが全て正常にインストールされていることを前提とします。

| 対象 | 環境 |
|:-:|:-:|
| OS| Windows10 |
| PG | Python 3.12.6 |
| MW | Docker Desktop 27.1.1 |

# 1. DockerでMySQLを構築する
DockerHubからMySQLコンテナイメージの最新バージョンを取得します。
https://hub.docker.com/

## ①検索ボックスからMySQLを検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/665882/4666c37a-f17b-4abb-3b60-8b8470314c20.png)

## ②プルコマンドをコピー
「Docker Official Image」のMySQLを開き、右部にあるプルコマンドをコピーする。
![i

asyncioを使ったPuLPの並列処理

## 概要

数理最適化のモデラーであるPuLPで並列実行して、高速に解を求めてみましょう。

多くの数理最適化ソルバーでは、変数の順番を変更すると解が得られるまでの計算時間が変化します。
そこで、本記事では**変数の順番を変えたモデルを複数作成して並列で実行します**。
並列実行のうちの1つでも解が得られたら、すべての処理を終了することで、通常より速く解ける可能性があります[^1]。

[^1]: 有料ソルバーで使われるテクニックです。

## 並列実行の方法

ソルバーとして**CBC**を使います。PuLPのソルバークラスでは、`subprocess`モジュールを使ってCBCを呼び出しています。
本記事では、`asyncio.create_subprocess_exec`関数を使ってCBCの呼び出しを並列に実行します。

## サンプルモデルで実行

最初に大枠の実行方法を確認します。次のようにPuLPをインストールしてください。ソルバーのCBCも一緒にインストールされます。

“`sh
pip install pulp
“`

サンプルのモデルを作成し、`multi_sol

PyCUDAで始めるGPUプログラミング入門

## 第1章: PyCUDAとは何か

PyCUDAは、PythonからNVIDIA GPUの計算能力を活用するためのツールキットです。CUDAプログラミングの知識をPythonの使いやすさと組み合わせることで、高性能な並列計算を実現できます。

PyCUDAを使うと、以下のようなメリットがあります:

1. Pythonの柔軟性とGPUの高速処理を組み合わせられる
2. メモリ管理が自動化され、エラーが起こりにくい
3. CUDAカーネルを動的に生成・コンパイルできる

では、最初の簡単なPyCUDAプログラムを見てみましょう:

“`python
import pycuda.autoinit
import pycuda.driver as cuda
from pycuda.compiler import SourceModule
import numpy as np

# CUDAカーネルの定義
mod = SourceModule(“””
__global__ void multiply_by_two(float *a)
{
int idx = threadIdx.x