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

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

27年間事務屋だった私、pythonと機械学習を学んだら半年間でいい感じで実証実験ができたよ

##私の属性
* 50代前半の男性です。
* 大学での専攻は刑法(総論)でした。
* 1993年春に新卒で地方公務員(事務)になりました。
* 転職歴はありません。
* 初めてのコンピューターはPC-6001で、中学2年のときに親に買ってもらいました。

###Pythonははじめて、機械学習もはじめて
 Pythonはほぼ、はじめての状態でした。無料で読める入門書を読み始めることがありましたが、理解できないお作法を見ると苦痛が溜まって、入門書を投げ出していました。プログラミングの経験でいうと、ふた昔前にCGIのPerlスクリプトを作ったことがありました。
 機械学習は「はじめての機械学習-小高知宏」を読んだだけです。
 あとは、キカガクのオンライン講座「Python&機械学習入門」を不真面目に受けました。
 まるっきりの雑魚キャラです。ガンダムで言えば、迂闊に前に出るから撃墜されるザク。

:::note warn
警告
ここからポエムから始まります。
:::
   ポエムを飛ばしたい方は[こちらをクリック](https://qiita.com/drafts#a

元記事を表示

GStreamerで連続ファイルにエンコード・記録する

multifilesrcでデバイスからの入力を連続ファイルへ記録できる…かと思えばさにあらず、日本語記事も少ないと思い、書きました。

# 環境
筆者はJetson複数モデルで開発をしています。GPUのNVIDIA SDK使用環境も共通項があるかもしれません。

## Jetson JetPack 
投稿の時点での[Jetpack最新バージョンは 4.6](https://developer.nvidia.com/jetpack-sdk-46
)です。

20WでJetsonを駆動するnvpmodelが追加され、enc/decフレンドりとなっています。

コンテナでやろうとする方向けの注意としてはJetpack 4.5.0と 4.5.1, 4.5.2の違いはBSPやバグフィックスだそうで、L4Tのイメージは r32.5.0となります。Dockerfileをr32.5.1やr32.5.2と書き換えてもいきなりコケるのでご注意。ホストのJetpackバージョンとコンテナイメージバージョンも合わせましょう。

## GStreamer
Jetson内の gstreamerはversion

元記事を表示

Pytorch L1 loss カスタマイズ

### 環境
– Ubuntu 18.04.4 LTS
– Python 3.6.8
– Pytorch 1.8.1+cu102

### やりたいこと
L1 loss から 0 を除いた平均値を算出して逆伝播させたい。

### L1 loss
[Pytorch document](https://pytorch.org/docs/stable/generated/torch.nn.L1Loss.html)

MAE (mean absolute error) 誤差の絶対値の平均ですね。

##### L1 loss を自作。

“`
import torch
import torch.nn as nn

class CustomLoss(nn.Module):
def __init__(self):
super().__init__()

def forward(self, outputs, targets):
return torch.abs(outputs – targets).mean()

“`

##### 本当に再現

元記事を表示

FastAPIで作るWebアプリ – Form validation

今回はFastAPIのFormのValidationについてです。

【過去記事】
[Python Asyncio入門](https://qiita.com/sand/items/0e445a13d81d20ea33c3)
[Aiohttpで作るSimple Web Server – Qiita](https://qiita.com/sand/items/971c851598ff59c1c905)
[Starletteで作る Simple Web Server – QIita](https://qiita.com/sand/items/dd622ce4f9249399974c)
[FastAPIで作るWebアプリ – 基本](https://qiita.com/sand/items/bba0913fe4504c612b3a)
[FastAPIで作るWebアプリ – validation](https://qiita.com/sand/items/85068532388826258df4)
[FastAPIで作るWebアプリ – Body validation](https://qiit

元記事を表示

pythonのfunctoolsについてまとめてみた

今回のお題

今回は、pythonのfunctoolsというモジュールについてまとめます。

元々はfunctools.wrapについて知りたかっただけなのですが、その過程で他の関数についてもいくつか勉強せざるを得なかったので記念に残しておきます。

目次

– functoolsモジュールとは
– functools.partial
– functools.update_wrapper
– functools.wrap

functoolsモジュールとは

functoolsモジュールとは、「ある関数を操作したり、またそれによって新たな関数を取得したりできる関数をまとめたモジュール」のことです。

つまり、このモジュールをimportすることで関数に対してさまざまな操作を加えることができるようになるのですね。

言葉だけで説明してもわかりづらいと思うので、早速具体例を紹介していきます。

なお、今後の本記事のソースコードにおいては全てfunctoolsモジュールのimportは省略されています。
その点にはご注意ください。

functools.partial

funct

元記事を表示

Pandas メモ

ゴリラです。
Pandasライブラリ の 自分用めも です。
(環境はブラウザ版のJupyter Notebook)

####CSVの読み込み
Jupyter Notebookのカレントディレクトリは ‘/home/jovyan/binder’みたい。(変更できる?)

“`python:sample1.py
import pandas as pd
csv_dataframe = pd.read_csv(‘csv_data.csv’)
“`

####データの読み込み
.head() でデータ表示(引数に表示させたいデータ行数を指定可。省略した場合、5行)

“`python:sample2.py
import pandas as pd
csv_dataframe = pd.read_csv(‘csv_data.csv’)
csv_dataframe.head(100)
“`

####データフレームを縦に結合
SQLのUNION
.concat()
  引数には、Dataframe型 or Series型のオブジェクトを[]で囲んで、”,”区切りで
  (他にも横方向に結

元記事を表示

プログラミング修羅道。新しい技術や知識を学習するのに疲れ果てたプログラマー達へ。

##次々に生まれては消える技術と足りない学習時間。消えゆくモチベーション
異国でのコロナロックダウンと、長年やっていたビジネスのシャットダウンを受け、昔やっていたプログラミングを再度勉強し直し始めて早10か月あまり。
最初は2020年のモダンな環境で、フルスタックというネーミングに憧れ、とりあえずウェブサービスを作れるくらいになりたいなぁと始めたのですが、やればやるほど深みに嵌っていく底なし沼。次々に現れる新しい敵。毎月開発される新しいライブラリやフレームワーク。どんどんdeprecatedになり、使えなくなっていくモジュール類。アップデートされる言語仕様。半年も経てば移り変わるトレンド。
何かを一つ手に入れたと思えば、過去に手にしたものを忘れ去り、何かを実装しようと思えば、さらに新しい概念の習得が必要となり、まさに砂漠に水を撒いてるような感覚になり、モチベーションが下がる。多分、ほとんどのプログラマー諸先輩も経験されているのではないかと思います。
自分もこういう穴に孤独に嵌りつつあり、他の神の様なトッププログラマー諸先輩は、どのようにモチベーションを保ち、学習時間を確保し、ど

元記事を表示

Workload Identity + フェデレーションIDを使用して、AWS環境からStorage Transfer Serviceの転送ジョブを作成する

# 概要
AWS環境に構築したシステムのデータを、Google Cloud環境にあるデータレイク(GCS)に格納して欲しいという依頼があり、Storage Transfer Serviceを使って、S3バケットからGCSバケットにデータ転送することにした。
また、なるべく永続的なキー情報を使用せずに対応して欲しいとの要望があり、

– Storage Transfer Serviceの環境構築するために、Workload Identityを使用すること
– Storage Transfer ServiceがS3バケットのアクセス設定でフェデレーションIDを使用すること

を提案しようと思ったが、まずはちゃんと実装できることを確認するために検証作業を行った。
その時に実施した作業内容を備忘録としてまとめる。

# 手順
## Workload Identityの設定
Workload Identityを設定して、JSONの認証情報ファイルを取得する。
手順はNRIネットコムの記事が綺麗に纏まっているので割愛。
https://tech.nri-net.com/entry/2021/07

元記事を表示

[いよいよ年明けリリース!?]WebTransportでもechoがしたい!

# WebTransportがChromeM97でいよいよリリースです!

Webを愛する皆さんこんにちは。
去年、一昨年、WebsoketやWebRTCの新しい技術として注目を集めたWebTransportがいよいよ年明けにもリリースされるようです。
いやぁ、WebRTCが2014ごろにリリースされてから早7年、ようやくという感じです。

今回はCanaryがM97となり、Origin Trials不要になったので公式サンプルを修正して動かしてみます。
そもそもWebTransportとはなんぞやみたいな話は[NTTコミュニケーションズさんの記事](https://qiita.com/yuki_uchida/items/d9de148bb2ee418563cf)が詳しいのでそちらをご覧ください。

## 大きな変更点まとめ

元記事を表示

AtCoder ABC225 挑戦!(Python)

ABC225、コンテスト7回目の挑戦です!
泥臭い方法ではありますが、C問題まで完答できました!
C問題解いて、レートが+40くらいなので、あと5, 6 回C問題完答できたら、茶色突入ってところか。(希望的観測)

“`ruby:ABC225A
S=input()

#3文字の中に、同じ種類の文字が何種類あるかで場合分け
if len(set(S))==3:
print(6)

elif len(set(S))==2:
print(3)

else:
print(1)
“`
本当は、M種類同じ文字があると、3!/M!だが、そのまま数字書いてしまった。次から気をつける。

“`ruby:ABC225B
N=int(input())

#スターである条件は、すべてのa_bのどちらかに同じ数字が出現すること。
#リストを区切らずに格納して、数を数える。
a_b_list=[]
for i in range(N-1):
a, b=map(int, input().split())
a_b_list.append(a)
a_b_lis

元記事を表示

Pythonで誤差なし偏角ソート(第一象限のみ)

`math.atan2` でソートしたらWAしたときに。

:::note warn
全ての点が第一象限にあるときのみ使えます。
:::

“`python
from functools import cmp_to_key

def arg_sort(p0, p1):
x0, y0 = p0
x1, y1 = p1
if x0 * y1 == x1 * y0:
return 0
return 1 if x0 * y1 < x1 * y0 else -1 N = int(input()) lst = [] for _ in range(N): x, y = map(int, input().split()) lst.append((x, y)) lst.sort(key=cmp_to_key(arg_sort)) ``` ## verify * https://atcoder.jp/contests/abc225/submissions/26935748 * 問題の性質上、点 $(x - 1, y)$ の偏角

元記事を表示

Blenderでインポートしたマテリアルを一括調整

BlenderにFBX等でインポートしたオブジェクトには自動でマテリアルを設定されます。
ところが、やりとりするソフトによっては 値の解釈が違ったりと意図しない設定になる場合があるようです。

そこで、そういった設定を調整するためのスクリプトを作成してみました
これをそのまま使用するというよりは 環境に合わせて微調整してください

## Blenderのマテリアルについて。
Blenderをあまり利用しない人がこのスクリプトを使う機会が多いかと思うので
先にBlenderのマテリアルについて軽く触れておきます。

Blenderのオブジェクトには複数のマテリアルを持つことができて 面毎に割り当てを指定できます。
2.80以降のバージョンでは基本的にノードを使ってマテリアルを設定するようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/ae9e15b0-07e9-7964-5d14-2fc69ae5e68b.png)
インポートしたり新規にマテリアルを設定すると

元記事を表示

USBカメラでストリーミング

#カメラ画像取得(サーバ)をWindowsアプリで、画像受信側をPython(クライアント)でストリーミング環境を作成してみた。

プロトタイプのソフトを作成するのにPythonはとても効率よいと思っているので画像処理や画像処理結果による作業をPythonで作成したい。
一方、画像を送ってくる側がpythonだと実行環境を入れなければいけない。
なので、画像取得側のサーバをC++で実行ファイルで作成。画像を受け取って利用する側をPythonにしてみた。

###環境
開発環境(参考)
**サーバ**

– Windows10
– Visual Studio 2019
– Opencv 4.2.0

**クライアント**

– Python 3.8
– Opencv 4.0.1

サーバとクライアントのopencvのバージョンは一致させる必要はないです。

動作環境
 サーバ、クライアントともにWindows10。

## サーバ
Opencvのインストールは以下参照下さい。

https://qiita.com/koteko/items/60936f34f21d7decf0b5

元記事を表示

pythonのcallable関数の使い方についてまとめてみた

今回のお題

今回はpythonのcallable関数についてまとめます。

関数自体はそこまでややこしいものではないのですが、疑問に思った箇所を自分で実験して調べたので記念に残しておきます。

目次

– 関数の概要
– 呼び出し方の注意点

関数の概要

callable関数は、引数にとった関数やクラスが呼び出し可能かどうかをTrue or Falseで返します。

以下、簡単な呼び出し例です。

“`python
def divide(a, b):
return (a / b)

class Test:
pass

print(callable(sum))
# 出力:true
# 組み込み関数は呼び出し可能

print(callable(hoge))
# 出力:false
# 未定義の関数は呼び出し不可

print(callable(divide))
# 出力:true
# 定義済みの関数もOK

print(callable(Test))
# 出力:true
# 定義済みのクラスもOK

print(callable(Fuga))
# 出力:false

元記事を表示

PythonのCartopyを使って地図作成

## 概要
Cartopyを使って日本地図や世界地図を描く

完成図(ソース上の`cartopy.png`)はこちら。
![cartopy.png](https://user-images.githubusercontent.com/93382642/139532922-de52676b-896e-4726-ad43-5dbdfb79c721.png)

## 環境
Python: 3.9
pip: 21.3.1
Cartopy: 0.19.0
matplotlib: 3.4.1

## インストール
Cartopyやmatplotlibをインストールしていない場合は、`pip`でインストールしてください。
`conda`でも問題ないと思います(未確認)。

“`
pip install cartopy
“`
“`
pip install matplotlib
“`

## 実際に描いてみた

“`python:cartopy.py
import cartopy.crs as ccrs
import cartopy.feature as

元記事を表示

pythonのtry構文について調べてみた

今回のお題

今回は、pythonのtry構文についてまとめます。

例によって、自分用のメモです。

目次

– try構文とは
– raise文
– 複数の例外への対応
– 全ての例外への対応(机上論編)
– Exceptionクラス
– as, from

try構文とは

try構文とは、例外(いわゆるエラー)が発生した場合の処理を決めるための構文です。

例外処理とはコンピュータが想定していない処理、すなわち0で割り算をしたりstrオブジェクト用のメソッドをintオブジェクトに使ったりといったことですね。

通常は例外処理が行われるとエラーになってプログラムが停止しますが、try構文を用いることで「このエラーの時にはプログラムを止める代わりにこの処理を実行してね」と個別の指示を出すことができます。

以下がtry構文の例です。

“`python:
try:
print(1 / 0)
except ZeroDevisionError:
print(“0で割らないでください”)
“`
上記のtest.pyを実行すると、まずtry以下の処理が呼び出されます(今

元記事を表示

LINEログイン PKCE対応メモ

# LINEログイン PKCE対応メモ

* LINEログインをPKCE対応を試してみたのでメモしておく。
* ACG +PKCEでアクセストークンを取得→ユーザー情報取得まで試した。

## PKCEとは

* Proof Key Code Exchange の略称。
* 認可コード横取り攻撃への対策を目的として定義されているOAuth2.0拡張仕様。
* 認可コード横取り攻撃:悪意のあるアプリが何らかの方法で認可コードを含むカスタムURIを取得し、ユーザー固有のアクセストークンを横取りする。

* 通常のLINEログインとの変更点(クライアント側)

1. 認可パラメータに`code_challenge_method`と`code_challenge`を含める。
1. `code_verifier`を生成する。
2. `code_verifier`を元に`code_challenge_method`(S256)を利用して`code_challenge`を生成する。

2. トークンリクエスト時にリクエストに`code_verifier`を含める。

元記事を表示

Starry DataとXenonpyで意識の低いマテリアルズインフォマティクスをする① ヒートマップを描く

###はじめに
####この記事で書くこと
この記事は、材料系かつ実験系の研究者が機械学習を始めるための第一歩になりそうなことを書く。「マテリアルズインフォマティクス」という言葉が人口に膾炙し、「未知の材料の探索」だの「数百年に一度の発見」だの喧伝されているが、そういうことはしない。「条件探索に4回実験を回さなければならないところを、3回に減らす」とか、「必要特性を満たす落としどころ組成のあたりづけをする」とか、そういう、もっと意識の低いことをしたい。実際のところ、そのくらいの使い勝手の「道具」の方が、現場的には役に立つことが多いと思っているし、個人的な期待が大きい。

####この記事で使うもの
・Starry Data 2
東京大学の桂ゆかり先生( https://twitter.com/nezdenmama )のStarry Dataプロジェクトからデータを持ってくる。アクセスしてみればわかるが、ものすごいデータ量である。内容の信頼性も高いので、これからデータ科学的に材料化学データを扱いたい人にはもってこいのデータベースである。
https://sites.google.com/

元記事を表示

TensorFlowを使ったモデルの構築と転移学習

# ディープラーニングを使用した画像分類
ディープラーニングを用いて画像の分類を行います。
今回は画像分類のチュートリアルとしてよく用いられる猫と犬の画像の分類を実践してみます。

## ライブラリのインポート
Pythonにおけるディープラーニングのライブラリとしては以下が有名です。
– TensorFlow および Keras
– PyTorch

今回の例ではTensorFlowおよびKerasを使用します。

“`python
import os
import numpy as np
import pandas as pd
%matplotlib inline
import matplotlib.pyplot as plt
from PIL import Image

import tensorflow as tf
from tensorflow.keras import utils as np_utils
from tensorflow.keras.preprocessing import image_dataset_from_directory
from tensor

元記事を表示

コンピュータとオセロ対戦22 ~遺伝的アルゴリズム、改善~

https://qiita.com/tt_and_tk/items/068f2afde6db637e189f

[前回](https://qiita.com/tt_and_tk/items/db9c6d3e4893cfcbd679)

# 今回の目標
[前回](https://qiita.com/tt_and_tk/items/db9c6d3e4893cfcbd679)の反省を活かして遺伝的アルゴリズムを改良し、最適な評価値を求めます。
# ここから本編
## ヘッダファイル
いままでいちいちソースファイルを変更していましたが、よく考えればせっかくクラスを使っているので継承を使いたいと思います。

親クラスがこちら、普通のオセロです。
普通に盤面を表示したり、試合結果を表示したりします。

“`osero.h
#ifndef osero_h
#define osero_h

#include
#include

#define INT(num) (static_cast(num))
#define DOUBLE(num) (stat

元記事を表示

OTHERカテゴリの最新記事