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

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

ReactとFastAPIで作るアンケート集計ページ

# はじめに

社内勉強会を週一回開催して終了後に簡単なアンケート(Formsを利用)を取っており、アンケート回答結果は集計して参加してくれた人たちに共有しています。
この時、アンケート集計作業は下図のような手順でExcelを操作して手作業で行っており勉強会開催毎に20分程度の時間がかかって片手間でやるには中々辛いものでした。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/536019/fc16593e-1b64-95ac-5c79-a289b589f11b.png)

そのため、もっと簡単に集計結果を更新、閲覧できるようにしたいと思い、アンケート回答結果のDB化、集計結果閲覧用のWebページ作成に取り組みました。

# 目標

背景に書いたように、集計結果の作成、閲覧を楽にするということを目標に取り組みました。
集計結果閲覧用のWebページを作るまでにめんどくさいことがいくつかありましたが、最終的にはDBにはPostgreSQL、バックエンドにFastAPI、フロントエンドはReac

元記事を表示

XGBoostのパラメータチューニングまとめ

# はじめに
本記事は、**下記のハイパーパラメータチューニングに関する記事の、XGBoostにおける実装例**を紹介する記事となります。

https://qiita.com/c60evaporator/items/ca7eb70e1508d2ba5359

# XGBoostとパラメータチューニング
**XGBoost**は分類や回帰に用いられる機械学習アルゴリズムで、その性能の高さや使い勝手の良さ(特徴量重要度などが出せる)から、特に**回帰においてはLightBGMと並ぶメジャーなアルゴリズム**です。

一方でXGBoostは多くのハイパーパラメータを持つため、その性能を十分に発揮するためには**パラメータチューニングが重要**となります。

# チューニング対象のパラメータ
XGBoostの主なパラメータは、[こちらの記事](https://qiita.com/FJyusk56/items/0649f4362587261bd57a)で分かりやすく解説されています。

XGBoostのパラメータ数は他の回帰アルゴリズム(例:[ラッソ回帰(1種類)](https://qiita

元記事を表示

JavaScriptからTensorFlow Liteのモデルを使って推論してみる

# はじめに

[TensorFlow Lite](https://www.tensorflow.org/lite/) なるものをご存知でしょうか。主にエッジ用途など低リソース環境のために、重みパラメータを整数化してモデルサイズの縮小と計算量の削減を行うというものです。

実はこのモデル、JavaScriptからでも使えます。モデルをダウンロードしてクライアントサイドで推論する場合、モデルサイズの削減はトラフィック削減にもつながるので嬉しいです。また、計算量が減ることは比較的CPUが非力なモバイル用途においてもよいと思うので、Cordovaなどを使ってHTML/JavaScriptベースでモバイルアプリを作る場合に活用することもできそうです。

ということで、簡単なMNIST手書き数字認識のモデルを学習して重みパラメータを整数化し、JavaScriptから呼び出すところまでを一通り作ってみたいと思います。

# 検証環境

– 学習: Google Colaboratory
– TensorFlow 2.6.0
– TensorFlow.js 3.8.0
– 推論: F

元記事を表示

Pythonの変数にてCSVデータを定義する際のインデントを削除する方法

## 概要
Databricksにてテストを実施する際などに、Pythonの変数にてCSVデータを定義するのですが、その変数からインデントを削除する方法を共有します。

変数にインデントを実施すると、そのままでは変数にインデント(スペース等)が含まれてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/b3cc8515-af28-868e-def1-c6f1aac94c17.png)

そのインデントを、inspectにあるcleandocメソッドにより除去できるようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24031/fada95df-618a-d345-7b36-2089f9a03976.png)
引用元:[inspect — 活動中のオブジェクトの情報を取得する — Python 3.9.4 ドキュメント​​​​​​​](https://docs.

元記事を表示

Databricksにてクラス定義時にノートブックのセル内の行数が多くなることで動作が重くなる事象への対応方法

## 注意事項
本記事での記載内容は、検証中であるために、何かしらの不具合が発生する可能性があります。
よりよい方法がご存知の方はご教授ください。

## 概要
Databricksにてクラス定義時にノートブックのセル内の行数が多くなることで動作が重くなる事象への対応方法として、複数に分けたクラスを継承した1つのクラスを定義する方法を共有します。

クラス定義を実施した際にDatabricksにて1セルの行数が1000を超えてしまったため、動作が重くなり開発に支障がでるようになってしまいました。

そこで、下記のような対応を実施しました。

1. 複数のクラスに分割して、それらを継承したクラスを定義すること
1. メソッド外で利用するクラス変数(メソッドのデフォルト値等)を最初のクラスで定義すること
1. メソッド内で利用するクラス変数を継承したクラスで定義すること

詳細は下記のGithub pagesのページをご確認ください。

https://manabian-.github.io/databricks_tecks_for_qiita/#fixed_cell_lengtheni

元記事を表示

pythonでグラフを作ろう 第1回

#はじめに
この記事はpythonで取り敢えずそれっぽいグラフを作りたい人向けの記事です。pythonの基本的な知識は習得済みとします。

#取り敢えずグラフを作ってみよう
 まずは習うより慣れろの精神で以下のプログラムを実行してみてください。

“`python
#############################################
####### begin import libraries ##############
import numpy as np
import matplotlib.pyplot as plt
####### end import libraries ###############
############################################

#############################################
####### begin make data #####################
x = np.linspace(-np.pi, np.pi, 100)
y =

元記事を表示

Python Requestsを使ってmultipart/form-dataをin-memoryで送る方法

# 概要
Python Requestsを使って、`multipart/form-data`を送る場合、`open`で開いたファイルを送る仕様となっている。
Pythonの辞書形式のデータをJSONファイルとして送る場合、一時的にJSONファイルを作成せずに送る方法が分からなかった。
Python Requestsを使ってmultipart/form-dataをin-memoryで送る方法を記す。

# Python Requestsの仕様

Python Requestsを使って、`multipart/form-data`を送る場合、`open`で開いたファイルを送る仕様となっている。
https://requests-docs-ja.readthedocs.io/en/latest/user/quickstart/#id7

“`python
import requests

url = “https://example.com”
headers = {
“Content-Type”: “multipart/form-data”,
}
files = {
‘file’:

元記事を表示

AtCoder Beginner Contest 215 参戦記

# AtCoder Beginner Contest 215 参戦記

## [ABC215A – Your First Judge](https://atcoder.jp/contests/abc215/tasks/abc215_a)

2分で突破. 書くだけ.

“`python
S = input()

if S == ‘Hello,World!’:
print(‘AC’)
else:
print(‘WA’)
“`

## [ABC215B – log2(N)](https://atcoder.jp/contests/abc215/tasks/abc215_b)

2分で突破. log を取って、誤差を考慮してその近辺をチェックするのでもいいんだけど、素直にシングルループ回しても64回くらいなので、素直に行った.

“`python
N = int(input())

for k in range(100):
if 2 ** k <= N: continue result = k - 1 break print(res

元記事を表示

IoT Edgeデバイスを使った IoT Centralアプリケーション

この記事は2021/08/21に開催した[『Azure IoT Central』全方位解説セミナー!](https://algyan.connpass.com/event/218214/)で行ったデモの手順を説明しています。

Azure IoT Centralでは様々なデバイスを接続することができます。すでにデバイステンプレートが用意されている場合では数分でモニタリングアプリケーションを作成することもできます。

IoT Edgeデバイス用デバイステンプレートはありませんが、IoT Edge のマニュフェスト(具体的にはdeployment.xxxx.jsonファイル)を読み込むことで簡単にデバイステンプレートを作ることができるようになっています。

今回は温度、湿度、Co2濃度、位置情報を送信するIoT EdgeデバイスをIoT Centralに登録して、モニタリングするためのアプリケーションを作成してみます。

##接続するIoT Edgeデバイス
・RaspberryPi4+SCD30(Co2センサー)+GPS
・RaspberryPi OS buster 32bit (20

元記事を表示

大量にメールを自動で送付する

“`py
from bs4 import BeautifulSoup
import urllib.request
import re
from time import sleep
from bs4 import BeautifulSoup
from selenium.webdriver.support.ui import WebDriverWait
from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.keys import Keys
import csv
import time
import datetime

# URL関連
#ログインIDとパスワード
addr

元記事を表示

数理計画(python①)

pythonで”EXCEL①”で記載したモデルで求解してみる。

“`
【問題:条件】
  一週間の製造計画について考えます。(土曜日から金曜日)
  出荷は翌日朝から実施するため、前日に必要量を製造する。
  翌週のために金曜日の貯蔵量を守る。

  目的:製造量を最小化
  説明変数:製造量
  制約条件:
   ・製造量 ≦ 一日の最大製造量
   ・製造量 ≧ 一日の最小製造量
   ・貯蔵量 ≦ 貯蔵できる最大量
   ・貯蔵量 ≧ 翌日の出荷量
   ・最終貯蔵量 ≧ 翌週のための貯蔵量

  貯蔵量 = 前日の貯蓄量+製造量-出荷量
“`

“`sample.py
# coding: UTF-8
import sys

def GenPlan():
try:
Output = [0, 100, 150, 0, 300, 0, 400, 200]
Before = 200
After = 100
MaxGen = 300
MinGen = 0
MAXHld = 50

元記事を表示

~ 根付き木 ~ チートシート

#目次
**[実装](#実装)**
[深さ優先探索](#深さ優先探索)
[幅優先探索](#幅優先探索)(工事中)

#はじめに

チートシートの扱いついては[ここ](https://qiita.com/ysys_Ba/items/d27282b888abbd1f43e7#%E3%83%81%E3%83%BC%E3%83%88%E3%82%B7%E3%83%BC%E3%83%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6)を読んでください

#実装

[classを使うのに不安を覚える雑魚](https://twitter.com/ysys_Ba) 用のコード

“`python:tree.py
N = int(input())

child = [[] for i in range(N+1)] # 子ノードを格納する配列
parent = [0]*(N+1) # 親ノードを格納する配列
depth = [0]*(N+1) # ノードの深さを格納する配列

for i in range(N-1):
A,B = map(int,input().spli

元記事を表示

m1macのconda環境でpandasのimportが失敗した話

# m1macのconda環境でpandasのimportが失敗した話
表題の通りです。
m1mac、いいですよね。Intel版よりも安くて高性能。
その一方で従来のアプリケーションの対応がとれず、今回もその憂き目に会ってしまったみたい。

# 問題
pandasのimportが上手くいきません。
conda環境を使っていますが、インストールはできました(`conda install pandas`)。
それなのにpythonを実行するとimportができません。
エラーメッセージもなんだかいつもと違って面倒そう・・・

“`
>>> import pandas
Traceback (most recent call last):
File ““, line 1, in
File “/Users/username/.anyenv/envs/pyenv/versions/miniforge3-4.10/envs/sleep-quality/lib/python3.9/site-packages/pandas/__init__.py”, line

元記事を表示

Python の nonlocal を使うことでグローバル変数を使わずに再帰処理を行う

`nonlocal` 文が役に立つ場面に遭遇したのでご紹介します。

※この記事の Google Colab 版は[こちら](https://colab.research.google.com/drive/1_C3GNVeGLoMXdohdd8sVFTP_F4dzLLMj?usp=sharing)。

まずは、これから説明する内容をイメージしやすくするために問題を設定してみます。

# 解決したい問題

手元に12個のピーマンがあり、その中からいくつか取り出して、150g入りの袋詰めで販売したいとします[^1]。つまりこれら12個のピーマンのどれを選べば良いのかを求める必要があります。

“`python
bell_peppers = [47, 36, 29, 24, 32, 24, 47, 51, 45, 20, 53, 37]
“`

前提条件として、ピーマンを販売するにあたって表示されている内容量よりも実際の内容量が少ないということがあってはいけないので、150g以上の、150gに最も近い値を目指します。

これを実現するために、リストを引数として与えたら、そのリスト内の組み

元記事を表示

Python int too large to convert to SQLite INTEGER

### Python int too large to convert to SQLite INTEGER
のエラーが出た場合(自分は`id`を`uuid`にして`django-taggit`を使ったら出た)

### 解決
“`Python
from taggit.managers import TaggableManager
from taggit.models import GenericUUIDTaggedItemBase, TaggedItemBase

class UUIDTaggedItem(GenericUUIDTaggedItemBase, TaggedItemBase):
class Meta:
verbose_name = _(“Tag”)
verbose_name_plural = _(“Tags”)

class Hoge(models.Model):
tags = TaggableManager(blank=True, through=UUIDTaggedItem)
“`
`through`で中間テーブルを

元記事を表示

ぱちんこシミュレータを作りたい

本プログラム群は下記にて公開しています。

**PyPachinko**
[https://github.com/Amanohara/PyPachinko](https://github.com/Amanohara/PyPachinko)

# TL;DR
①概要
・ぱちんこの抽せんプログラムを作成して例えば1万回転行った時の出玉収支を求めたい

②目標
・好きな機種や気になる機種のスペックや任意のベースを設定して、甘いのか辛いのか等を見てみたい。
・「こういうスペック(確変ループやV-STとかラウンド振り分け)だったらよかったのに。。」と言うのを実際に再現してみたい。
 (試験に適合するのか等も含めて)

③課題
・スペックの種類が数多あってフォーマットを統一できない

# はじめに

**「○○は甘いらしい」「○○は辛い!ゴミ!」**という意見をよくネットで見ます。
本当か?と思い、実際に打ちに行って後悔することがかなりありました。

この後悔を糧に、任意のぱちんこ機種をプログラムで再現してシミュレーションしてみたい!と思ったのがきっかけです。

# 手法

元記事を表示

メールリストを登録し、メールから(募集元/参加者)負担でジムトレーニングを一緒にできるように募集メールを作成するPGM(DuctNeiker)

メールリストを登録し、メールから(募集元/参加者)負担でジムトレーニングを一緒にできるように募集メールを作成するPGM(DuctNeiker)

前に作ったAddSpionのPGMを修正して一緒にジムトレーニングしてくれる人を募集する
メールを作成するPGMを作りました
メールではジム参加費を開催者が負担するか、参加者が負担するかを選べるようにしました
あとジムトレーニングサークル用のwikiも作成しました
コロナが収束してから、似たような活動がでてくればいいと思います(2021年8月現在ではまだ難しいですね…)
これでお金がなくてジムに行けないような人でもたまに奢ってもらうようなことができるといいですね(個人的にコロナ終息後にどっかのボランティアサークルが実現してほしい…)
ちなみにプログラムタイトルの意味はDuct(汗だく),Neiker(奢る人)のマイ人工言語です


githubURL:https://github.com/NanjoMiyako/DuctNeiker
ジムトレーニングサークルwiki:https://seesaawiki.jp/d

元記事を表示

オフライン環境構築 pip編

[オフライン環境構築 目次へ](https://qiita.com/kannkyo/items/1e5f8362ed591ebda33d)

# 概要

オフライン環境で、pipパッケージをインストールするための手順です。

## ポイント

手順を説明する前に、まずpipのパッケージの仕組みを説明します。

### pipパッケージの種類

実は、pip パッケージは、pythonやOSの種類やバージョンによって何十種類もあります。

たとえば、[numpy](https://pypi.org/project/numpy/#files)のパッケージは、以下29種類も提供されています。

| Filename, size | File type | Python version |
| :———————————————————– | :——– | :————- |
| [numpy-1.21.

元記事を表示

Pythonで感情極性辞書を用いたテキスト感情分析をつくってみた

 感情極性辞書の「単語感情極性対応表」を用いてテキスト感情分析処理を作ってみたいと思います。

## 単語感情極性対応表とは

東工大の高村教授が公開されている「単語感情極性対応表」で以下のように単語に(ポジティブ)1~(ネガティブ)-1の感情値が振ってある表になります。

優れる:すぐれる:動詞:1
良い:よい:形容詞:0.999995
喜ぶ:よろこぶ:動詞:0.999979



病気:びょうき:名詞:-0.999998
死ぬ:しぬ:動詞:-0.999999
悪い:わるい:形容詞:-1

##実装

それでは、これに形態素解析ツールjanomeと組み合わせて実装していきます。
(janomeをインストールしていなければpipでインストールしておいて下さい。)

まずは下記から単語感情極性対応表をダウンロードしてコードと同じ場所に置きます。

[単語感情極性対応表](http://www.lr.pi.titech.ac.jp/~takamura/pubs/pn_ja.dic)

まずはpythonで単語をキー、感情値を値とした辞書を作成します。

“`python
senti

元記事を表示

TensorFlow.js をサクッと試す

# はじめに
JavaScriptからTensorFlowを使える TensorFlow.js というものがあります。
https://www.tensorflow.org/js
https://github.com/tensorflow/tfjs

公式サンプルも色々あるのですが、シンプルにTensorFlow (Python) で学習したモデルを読み込んで、それを使ってブラウザ側で推論する部分を作ってみました。

# 検証環境

## 学習
– Google Colaboratory
– TensorFlow 2.6.0
– TensorFlow.js 3.8.0

## 推論
– Firefox 91.0
– TensorFlow.js 3.8.0

# モデル学習

これは普通にやれば良いのですが、保存するときにTensorFlow.jsから読み込める形式にする必要があります。というわけで最初にpipパッケージをセットアップしておきます。

“`
!pip install tensorflowjs
“`

MNISTの手書き数字分類をするとして、デー

元記事を表示

OTHERカテゴリの最新記事