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

Python関連のことを調べてみた2023年08月17日
目次

YouTubeの急上昇音楽動画情報の取得と各動画のコメントの外国率を可視化

# はじめに
 YOASOBIの「アイドル」がYouTubeの「music charts TOP 100 songs Global」で首位を獲得したという記事を目にして、YouTube動画やチャンネルのデータ取得と分析に興味を持ちました。
 今回は、YouTubeの急上昇音楽動画についてデータの取得と各動画のコメントの言語種情報を可視化するプログラムを作成してみました。コメントの日本語以外の外国語率を見ることで、海外での関心の高さを測れます。

# 開発環境
*Google Colaboratory(Colab Pro.)
*Python
*事前にGoogle CloudにてAPI Keyを取得しておきます。

# Install
最初に以下をインストールします。Google Colaboratoryでは頭に!をつけます。
“`python:insatall
!pip install google-api-python-client
!pip install langid # 言語種の判定
!pip install tqdm
!pip install japanize-matplo

元記事を表示

ポケモンスリープの睡眠データを簡単に読み取りたかった

皆さん寝てますか?私は毎晩すやすやしています。
ポケモンスリープ(Pokémon Sleep)の睡眠データ、眺めるだけでもちょっと面白いですよね。
![Screenshot](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/e408c371-9da6-5f8d-0eaf-4edb2270a125.png)

アプリ内蔵の分析機能でも色々な情報が得られるんですが、どうせならアプリ外に睡眠データを持ち出したら何かできるかも…と思いませんか?

世の中どこもかしこもAI、きっと簡単に読み取れると思うので試してみました。
![Amazon Textract](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2917580/a757096c-1467-f1a6-832d-275504789ca1.png)
なんかダメそう![^1]

[^1]: Amazon Textractは2023年8月時点で日本語非対応なので仕方ない

元記事を表示

変数について

# 変数についてめちゃくちゃ簡易的に書いてみた。

変数とは何かの計算結果を保存したり、値を保存する`箱`のようなもの。

“`py
a = 3
“`
「=」は代入という意味です。
testに3を格納(代入)する。という意味です。

“`py
# aに3を代入する
a = 3
# bに4を代入する
b = 4
# 代入された変数を足すと7という結果が出てくる
print(a + b)
“`

“`py
7
“`

“`py:文字を使った変数代入
name = ‘田中’
old = 23

print(name + str(old))
“`
“`py:実行結果
田中23
“`
型が違うと足すことが出来ないので、old(23と数値となっている)をstrで`文字列に変換`させて、name(文字列)と足します。
これで、name(文字列) + old(数値)になっていたところを
    

pythonでsqliteを使ってstreamlitに列と数字を条件に表示

pythonでsqliteを使ってstreamlitに列と数字を条件にデータフレームで表示

“`python
import numpy as np
import pandas as pd
import sqlite3
import seaborn as sns
!pip install pycaret
!pip install streamlit

from pycaret.datasets import get_data
#ボストンデータを取得
df = get_data(‘boston’)

# データベース名とテーブル名
db_name = ‘datasets.db’
table_name = ‘tips’

# SQLiteに書き込む
with sqlite3.connect(db_name) as conn:
df.to_sql(table_name, conn)
“`

“`python:app_training.py
import streamlit as st
import sqlite3
import pandas as pd

#先

【初心者向け】【Pytest】フィクスチャは引数配置順に実行されることに気を付けよう

# 初めに

冷静に考えると当然だけど、他のUnitテストフレームワークには無い要素なので記事化しました。

# フィクスチャは引数配置の順番に実行される

今回例題とするコードはこんなものになります。

“`mermaid
flowchart TD
subgraph フローチャート
start(“「A」が入った文字列リストを空にする”) –> a(“空の文字列リストに「B」を入れる”)
a –> end_(“文字列リストが[”B”]であることを確認する”)
end
“`

フィクスチャは引数配置順に実行されます。

そのためフィクスチャを利用するテスト`testFixture`の引数を`init_strs, add_b`の*順に並べるとフローチャート通りに実行されテストが通ります。*

“`python
import pytest

strs: list[str] = [“A”]

@pytest.fixture
def init_strs():
strs.clear()

@pytest.fixture
def add_b():

maya userSetup callback

“`python
import maya.cmds as cmds
import maya.OpenMaya as om

def load_plugins(*args, **kwargs):
pluginList = [‘mtoa’,
# ‘vrayformaya’,
‘fbxmaya’,
‘AbcImport’,
‘AbcExport’,’MayaScannerCB’,’MayaScanner’]

for eachPlugin in pluginList:
if cmds.pluginInfo(eachPlugin , q=True, loaded=True) == False :
try:
cmds.loadPlugin( eachPlugin )
except Exception as err:

SQLAlchemyでデータを一部取得できない問題を解決した備忘録

自分のミスに気付くのにものすごく時間がかかったので、未来の自分用のメモです。ついでに誰かのためになれば。

# 状況
DBにあるはずのレコードが、超単純なクエリでも、どうしても一部抽出できなかったのです。エラーは起きない。再現性はある。(dockerでImageを作り直すところからやり直しても、まったく同じ状況)
SQLAlchemy 2.0.19で、ORMを使っています。DBはMySQL8.1です。

– [SQLAlchemy Documentation — SQLAlchemy 2.0 Documentation](https://docs.sqlalchemy.org/en/20/)
– [MySQL :: MySQL 8.0 リファレンスマニュアル](https://dev.mysql.com/doc/refman/8.0/ja/)

# 詳細
とあるテーブルをこんな風に定義してました。

“`SQL:Create Table文とデータ
CREATE TABLE `my_table1` (
`my_id` INT NOT NULL,

tempfileモジュールによる生成先をpytestの一時ディレクトリの下にする方法

`tempfile`モジュールで生成される一時ファイル・ディレクトリを、pytestの`tmp_path`の下に作る方法です。

:::note info
`tempfile`モジュールを使っているプログラム(=テスト対象)の中で生成される一時ファイル・ディレクトリの生成場所を切り替えたいというケースに対するanswerです。
単にユニットテストで使う一時ファイル・ディレクトリを準備するだけならpytestの`tmp_path`をそのまま使ってください。
::::

https://docs.pytest.org/en/7.1.x/how-to/tmp_path.html

## 間違った方法(予期しない副作用がある)

どこに一時ファイル・ディレクトリが生成されるかは環境変数TEMPDIRで決まりますが、その内容は`tempfile.gettempdir()`にキャッシュされているので`tempfile.tempdir = None`でキャッシュをクリアしないと(環境変数TMPDIRを書き換えても)切り替えられません。

https://docs.python.org/ja/3/li

【実装】多クラス分類における混合行列

深層学習を用いて画像分類の研究を行っているのですが、多クラス分類におけるモデルの性能評価に混同行列を使いたいなと思い、pythonで実装を行って見ました。
今回作成したリポジトリです。
https://github.com/km1110/Confusion-matrix

# 混同行列とは?
混同行列(Confusion Matrix)とは、分類モデルの性能を評価するためのもので、実際のクラスと予測されたクラスの関係を表したものです。

![2クラス分類.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2628459/695a276e-2c1b-e07f-77e5-26721ff2342b.png)

# 多クラス分類の混同行列
多クラス分類でも2クラス分類同様の混同合行列を作成し、評価指標の計算を行うのですが、2クラス分類へ落とし込む方法が少し複雑となります。

今回は例として◯、△、□の3クラス分類を考えます。混同行列で表すと以下のような表となります。
![多クラス分類.png](https:/

初心者がAIチャレンジやってみた(10):障害物回避モジュールの作成②

# 概要
「初心者がAI Challengeやってみた」シリーズの第9弾です。
第9弾では障害物回避のための軌道生成を目指して目的地まで経路を生成するモジュールを作成しました。
今回は障害物の位置も取得して障害物を回避しながら目的地に向かうプログラムを作成します。

本シリーズでは[Japan Automotive AI Challenge 2023](https://www.jsae.or.jp/jaaic/)にautoware初心者の筆者が試行錯誤しながら挑戦する記録を公開しています。自動運転に興味があるけどプログラミングに自信が無い方などの参考になれば幸いです。

前の記事はこちら:
* 第1弾:[初心者がAIチャレンジやってみた(1)](https://qiita.com/h_bog/items/86fba5b94b2148c4d9da):Autowareを動かしてみる
* 第2弾:[初心者がAIチャレンジやってみた(2)](https://qiita.com/h_bog/items/a36df3042a342bd2a0c5):1つ目の障害物の回避成功
* 第3弾:[初心者がA

4点が同一円周上「2017 青森公立大学前期経営経済学部【3】」をsympyとFreeCADでやってみたい。

・問題文は2次元ですが、3次元FreeCADのマクロで、XY平面上に作図しました。
 いつものベクトルの成分表示?です。
・円を2つ追加しました。

オリジナル

https://mathmathmass.exblog.jp/33390081/

上と同じです。大学入試数学問題集成>テキスト経営経済学部【3】

https://mathexamtest.web.fc2.com/2017/201711051/2017110510100mj.html#top-0105

# sympyで(T氏の数学日記 様の方法で)
勉強中。[方ベキの定理](https://qiita.com/mrrclb48z/items/1f84be0b4b52863b63ac)を勉強中です。

# sympyで(ベクトルの成分表示?です。)
・内心を、原点の位置にしました。myTriangle_Move_IncenterToOrigin関数。
・プログラムの途中の、# pi/2 Aの角度の点検です。
・三角形の外心と3点を通る円の中心は、同じです。
・(2),(3)のprint文は、F,Qの1行で十分でした。他の方

【ChatGPT搭載】自宅の鍵を合言葉式にしたらPrompt Injectionできちゃった

## はじめに

我が家では[SwitchBot ロック](https://www.amazon.co.jp/SwitchBot-%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%AD%E3%83%83%E3%82%AF-Alexa-%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%82%AD%E3%83%BC-%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%9B%E3%83%BC%E3%83%A0/dp/B09KCHLWH4/ref=sr_1_6?crid=Q6B3W5ICSTIW&keywords=switchbot%2B%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88%E3%83%AD%E3%83%83%E3%82%AF&qid=1692156278&sprefix=switchbot%2Bsu%2Caps%2C177&sr=8-6&th=1)を使っています。
SwitchBotの専用アプリを使って鍵を開けるのはもちろんですが、APIを利用することで専用

pythonでimportしたモジュールのローカル場所を確認する

モジュールも`__file__`属性があります。当モジュールの`__init__.py`ファイルの場所を指します。

それを調べること。

“`python
>>> import sklearn
>>> sklearn.__file__
‘/Users/iehana/.pyenv/versions/miniconda3-3.8-4.10.1/lib/python3.8/site-packages/sklearn/__init__.py’
“`

【実践XAI①】PDPによるモデルの説明

# はじめに
この記事では、書籍「[実践XAI[説明可能なAI] 機械学習の予測を説明するためのPythonコーディング](https://book.impress.co.jp/books/1121101133)」を参考にして、PDPで機械学習モデルを解釈する方法を解説します。

また、記事の最後には付録として、書籍「実践XAI」の補足説明を掲載しています(非公式)。

※書籍は「初版第1刷」を参考にしています。第2刷以降ではページ数・内容に変更がある場合がありますので予めご了承ください。

# 部分従属プロット(PDP)
> 書籍対応箇所:p.42~43

## 概要
**部分従属プロット**(Partial Dependency Plot; PDP)では、他の変数を固定したまま、ある変数を動かしたときにモデル$f(\cdot)$の出力がどう変化するかを見ることができます。

部分従属プロット(以下、PDPと略す)は下図のようなものです(`shap.plots.partial_dependence`で描画)。

![image.png](https://qiita-image-sto

Leetcode 1046. Last Stone Weight

# Problem
この問題では、Stoneの重さのリストが与えられます。各ターンで最も重い2つの石を選び、それらを互いに衝突させます。2つの石の重さがxとy(x <= y)であるとすると、衝突後の結果は次のようになります: - xとyが等しい場合、両方の石が破壊されます。 - xとyが等しくない場合、重さxの石が破壊され、重さyの石は新たに重さy - xとなります。 ゲームの終わりには、最大1つの石が残ります。この最後に残った石の重さを返すように求められています。もし石が残らない場合は0を返します。 InputとOutputの例は次になります。 ``` Input: stones = [2,7,4,1,8,1] Output: 1 Explanation: We combine 7 and 8 to get 1 so the array converts to [2,4,1,1,1] then, we combine 2 and 4 to get 2 so the array converts to [2,1,1,1] then, we combine 2 and 1 to g

うそはうそであると見抜ける人でないと(ChatGPTを使うのは)難しい

# 初めに
こんにちは!Akira_0809だよ!
今回はChatGPTのAPIを使ったバズる作品を作るハッカソンに参加したよ!

最初に参加したチームは1人は辞退、1人は連絡が取れなかったので別のチームに参加させてもらいました。
最終的に3人チームでの出場になりました。
# ハッカソンについて

今回参加したのはCodeBuildersさん主催の「**ChatGPTハッカソン by CodeBuilders**」
インスタの広告で流れてきたので応募しました。(広告って意味あるね)
# 作品
作品名は題名の通り「**うそはうそであると見抜ける人でないと(ChatGPTを使うのは)難しい**」です!

作品名はひろゆきさんの「うそはうそであると見抜ける人でないと(掲示板を使うのは)難しい」を少しもじったものになります。
## ゲーム概要
ChatGPTに5つの文章を生成させて嘘を見抜くゲームです。
ヒントとなる単語が3つ与えられるのでそれをもとにググるこ

Leetcode 104. Maximum Depth of Binary Tree

# Problem
与えられた二分木の最大深度(根から最も遠い葉ノードまでのノード数)を求めるというものです。
> Given the root of a binary tree, return its maximum depth.

InputとOutputの例は次になります。
“`
Input: root = [3,9,20,null,null,15,7]
Output: 3
“`

X![image](https://assets.leetcode.com/uploads/2020/11/26/tmp-tree.jpg)

https://leetcode.com/problems/maximum-depth-of-binary-tree/description/

## Key Idea
深さ優先探索 (DFS) または幅優先探索 (BFS) を用いて解くことができます。

## Approach #1 Depth-First Search (DFS) using Recursion

DFS の特性を利用した解法で、各パスを深く探索し、それぞれの深度を比較します。再帰を

角が丸い□

# pygame角が丸い
角が丸い四角形を描写する
“`python
def circle(rect, radius ,first_rad , end_rad, color ,screen, points = 30, width = 5):
# 半円を描画
center_x = rect.x
center_y = rect.y

# 半円の点を生成
angle_range = np.linspace(first_rad, end_rad, points)
points = [(int(center_x + radius * np.cos(angle)), int(center_y + radius * np.sin(angle))) for angle in angle_range]
if width == 0:
pg.draw.polygon(screen, color, points)
else :
# 点同士を線でつなぐ
pg.draw.lines(screen, c

「輪廻転生!訳ありローコードツールをPythonで再実現」社内冷蔵冷凍庫監視システムの作成 第二回

こんにちは!
東京圏のとある微生物検査室で、毎日食品安全を担保するために仕事を頑張っています。

私の`Qiita初投稿`は検査室にある冷蔵冷凍庫のデータを`API`で抽出して、ローコードツール`Make`を使って、`LINE Bot`に自動送信する仕組みを作成することです。詳細は以下の記事を参考してください~

https://qiita.com/mimicetacea/items/db7d1f7232207e66370b

これ実は、使えなかったです。なぜかというか、セキュリティ問題があります。
そうですよね、考え不足です!(社内でデジタルを始める人あるある問題w)
ではなにしたら、使えるようになりますかね?少し相談したら、「デジタルはもう慣れているようから、ローコードではなく、`Python`で実現するようとしたらどうですか?」の意見を戴きました。
なるほど!その手もあります!でもプログラミング言語は難しい…短時間でできなさそうです。
この時、去年の年末から、一気に流行り始めた`ChatGPT`は、会話だけではなく、コードを書いて

djangoでstaticソース(jsやcss)が読めなくなった対応

## Djangoでstatic ソースが見れなくなった
ローカル(開発環境)ではDEBUG = True & runserver で実行していたが、本番相当の環境を作成しようと、DEBUG = Falseにして、apacheサーバ(コンテナ)を構築して実行したら、cssが404(because its MIME type (‘text/html’) ~)となり、読めなくなった

## 前提
・ Docker を使用して、アプリ(python Django)のコンテナとweb(apache)のコンテナは別
 → Djangoでstatic が見れなくなった対応はネットで結構あったが、djangoとapacheは同じサーバ(コンテナ)内であることが多く、解消されなかった

## 対応
### よくある対応

“`:settings.py
DEBUG = False # これがFalseなのが大前提。Trueだとstaticもdjangoが提供する
STATIC_URL = ‘static/’
STATIC_ROOT = ‘/var/www/static/’
“`

“`:httpd