Python関連のことを調べてみた2022年04月11日

Python関連のことを調べてみた2022年04月11日

飛行機の機種を機械学習で判定

# はじめに
はじめまして。Qiitaへ初めて投稿します。
今回機械学習の勉強をした結果作成したアプリについて紹介したいと思います。

# アプリの目的
私は飛行機が好きなので、飛行機の写真から機種を判別できるアプリを作成できればと思いました。
まずは一口に飛行機といってもとても多くの機種があり、その全てを判別できるようにすることは非常に難易度が高いと判断。まずは旅客機の中でも最も生産数の多いボーイング社の737シリーズとそれ以外の機種の判別を試みました。

最終的には各機種の判定ができることが理想ですが、まずは1機種のみ判定ができることを目指します。こちらが実現できれば、例えば空港で飛行機の写真を撮った際、写真の機種がすぐに確認でき(一部の人にとって)非常に便利です。

# 737とは
![Boeing,_N7379E,_Boeing_737-9_MAX_(cropped).jpeg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2627655/0b477a5a-8656-cb00-c03d-22e2db46

元記事を表示

京大生が0から作る競馬予測

`京大生が0から作る競馬予測`
ここでは京都大学に通う学生二人がPythonを用いて競馬の予想AIを作ろうというものです。筆者はPython経験歴半年の未熟者です。ギャンブル狂で数学がとても得意な京大理学部の友達にPythonを教えながらAIを作っていくという連載にしようと思っています。友人は全くプログラミングの知識がないので最初はかなり初歩的なことから始めようと思っています。ここでは新しくプログラミングを始める人たちの道標になればいいなと思い記録に残そうと思っています。

元記事を表示

Streamlitを使ってスマホから開発環境する(2022.4.11)

背景

前回まででDjangoやFlaskで簡単なアプリをデプロイしました。「いよいよAIアプリを!」とイキってデプロイしようとしたら、「メモリが足りません」=>「バージョンが違います」=>「コードが違います」と当たり前のエラーを吐かれて、違う方法を探すのも100n回目でトラウマになりそうです。と思ったらstreamlitなるものがあったのを思い出しました。とりあえず、streamlitを使えばcolab上で開発できそうな噂を聞いたので、どのように出来るか検討したいと思います。

前回までの記事

1. [Flaskメモアプリをデプロイする(2022.4.9)](https://qiita.com/tan0ry0shiny/items/bce772a73ed0a89d9f1d)
1. [HerokuにGitHub経由でDjangoアプリをデプロイする。DBにはPostgreを使う。(2022.3.26)](https://qiita.com/tan0ry0shiny/items/28024ee6f01d24d61e40)

目的

元記事を表示

2022/4/10 atcoder メモ

# D – Cylinder
– ランレングス符号化 : データの圧縮アルゴリズムで、要素×長さで表す
– pythonのcollectionの一種であるdequeを使用
– 要素の追加・取り出し(削除)・アクセス(取得)が両端のみ → deque
– 両端以外の要素に頻繁にアクセス → リスト

> Pythonの標準ライブラリcollectionsモジュールのdeque型を使うと、データをキューやスタック、デック(両端キュー)として効率的に扱うことができる。
>collections.deque — コンテナデータ型 — Python 3.7.3 ドキュメント
>組み込みのリストlistをキューやスタック、デック(両端キュー)として使うことも可能だが、リストでは先頭の要素に対する削除や追加(挿入)は処理速度が遅いためdequeのほうが効率的。なお、dequeには、両端以外の要素へのアクセスが遅いというデメリットもあるので注意。

元記事を表示

AWS Lambda 同時実行数、エイリアス、環境変数とか実際の現場で使える機能を勉強してみる

# 概要

AWS認定試験資格取得に向けて実際にAWSを利用してみるシリーズの投稿です。
今回はAWS Lambdaをちょっとしっかり勉強してみようという中級編です。
気が付いたらLambdaがかなり進化をしていて、久しぶりに本を購入して勉強したのでその内容をまとめた投稿になっています。

私が初めてLambdaを使い始めた時の制限、コールドスタート問題の解決(同時実行数)や、実際の現場で使えるLambdaの切り戻し(エイリアス)、環境ごと異なる設定(環境変数)など、実運用で使える機能がたくさんあったのでその内容を投稿します。

認定試験勉強的にはAWS Lambdaの少しコアな部分を掴める内容になっています。
インフラに依存せずサクッとプログラミングができるLambdaを使ってみたい人、興味がある方は読んでみて下さい。

## 想定読者
* AWSでLambdaを使ってみたい人
* Lambdaの知識をレベルアップしたい人
* Lambdaを実運用で使っている人

## 参考書籍

[AWS Lambda実践ガイド 第2版](https://amzn.to/3E5O6xm “AWS

元記事を表示

AtCoder Beginner Contest 247 A~D 4完記事

アルゴリズムの学習改善のための自身の備忘録及び学習の一環として記事を書くことにしました.
読んでくれた方で何かありましたら気兼ねなくコメントしてください.お待ちしております.

# [A – Move Right](https://atcoder.jp/contests/abc247/tasks/abc247_a)

## 問題文 概要
$4$桁の$0,1$からなる文字列を右に移動し,先頭に$0$を挿入.上$4$桁を出力する

## 制約と入力
制約
>$S$は$0,1$からなる長さ$4$の文字列

入力
>入力は以下の形式で標準入力から与えられる。
>$S$

## 考察
問題より,先頭の$0$は固定である.
与えられた文字列の末尾を除く$3$文字をそのままの順序で出力する.

## サンプルコード
“`python:a.py
s=input()
print(‘0’+s[0]+s[1]+s[2])
“`

# [B – Unique Nicknames](https://atcoder.jp/contests/abc247/tasks/abc247_b)

## 問題文 概要

元記事を表示

Pythonのlist(配列)の挙動について

## はじめに
以下公式リファレンスのQAに元ネタ及び結論は書かれています。
ただ、知らない人も多い気がしたので自分もプラスアルファで調べてみた、という記事です。
リファレンスのQAには他にもみんなが詰まるであろう質問がまとまっているので、一読をお勧めします!
https://docs.python.org/ja/3/faq/programming.html#why-did-changing-list-y-also-change-list-x

## 実行環境、バージョン
Python3系
ソースコードは以下に配置しています。本記事のソースコードそのままではありません。
https://github.com/Yumihiki/python-lesson-pass-call-value

https://paiza.io/ja
でPythonを選択することで、すぐ動作を確認できます。

## 挙動について

まずはintの変数について。以下の例、a, bをprintするとどうなるでしょうか?

“` Python
a = 1
b = a
b = 5

# 出力結果
# a: 1

元記事を表示

Blenderで花火を打ち上げるアドオン

## Blenderで花火を打ち上げるアドオン

Blender3.1で、花火を打ち上げるアドオンをPythonで作成したので紹介します。

## やり方

### アドオンのインストール

– [Blender Add-on: Fireworks](https://github.com/SaitoTsutomu/Fireworks)の画面にしたがってインストールしてください。
– アドオンのチェックでは「テスト中」を選んでください。

### PyYamlのインストール

本アドオンは、PythonのPyYamlモジュールを利用しています。
そのため、下記のように、コマンドラインでBlenderにPyYamlをインストールする必要があります。コマンドラインからBlenderを操作する方法については、「[Blender

元記事を表示

matplotlibで派手な円形の図を作るライブラリを開発してみた。

# Pycircosをの紹介
この記事は自分が開発している、pyCircosについての紹介記事である。
– https://github.com/ponnhide/pyCircos

## 開発の背景
### 派手な円形の図って?
有名なcircos plotだろうか。chord diagramを使って作られる派手なネットワーク図である。

http://circos.ca/
![circos-sample-panel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/167957/fac850b3-42eb-00cd-421a-1df33f40ec63.png)

あと、bioinfoの領域だと、こんな感じの系統樹もよく論文とかにはでてくる。
https://yulab-smu.top/treedata-book/chapter10.html
goで実装した関数をpythonから呼び出す

# やりたいこと

下図のようにGoで記述した関数をPythonから呼び出します。

まずはGoプログラムをビルドして共有ライブラリ(※)を作成し、ビルドした共有ライブラリをPythonから呼び出します。
※ Linuxだと共有ライブラリ`.so`、Windowsだとダイナミックライブラリ`.dll`。

![イメージ図.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/705474/7828f3da-acb2-d688-5724-530b60686929.png)

# 1. 共有ライブラリを作成

まずはGoでスクリプトを記述します。
記述する上でのポイントは以下です。

– package名はmainにする
– main関数を記述する
– 特殊コメントの`export`を記述する

“`go:test.go
// package名はmainにする
package main

import (
“fmt”
“C”
)

func main() {
// main関数を記述
}

元記事を表示

g-hフィルタ(α-βフィルタ)について

今回、[こちら](https://github.com/rlabbe/Kalman-and-Bayesian-Filters-in-Python)を参考にg-hフィルタについて学んでいく。

これはRoger R. Labbe 著 Kalman and Bayesian Filters in Pythonです。
英語版は CC BY 4.0 International ライセンスで公開されています。

# g-hフィルタとは
g-h フィルタとはあるデータの値をもつ時系列順のデータからそのデータの未来の値を予測するアルゴリズムである。
g と h はどちらもスケーリング係数を表す。
g は観測値に対するスケーリング係数であり、h は観測値の変化に対するスケーリング係数である。
g と h ではなく α と β が使われることもあり、そのときは α-β フィルタ と呼ばれる。
![01-g-h-filter_15_jp.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/521734/40d6892d-634

元記事を表示

AtCoder初心者、ARCに参加してみたけど一問も解けなくて萎えたので復習します

# はじめに

2022/4/9に開催された「大和証券プログラミングコンテスト2022 Spring(AtCoder Regular Contest 138)」に参加したのですが、A問題のTLEを解決できず終わったので、復習します。
問題リンク:https://atcoder.jp/contests/arc138/tasks/arc138_a

# 問題

長さ N の整数列 $A=(A_1, A_2, \cdot\cdot\cdot, A_N)$ があります.以降この問題では,$A$ の先頭 $K$ 項の和をスコアと呼ぶことにします. また,入力で与えられた $A$ のスコアを $s$ と置くことにします.

あなたは,以下の操作を好きな回数繰り返すことができます.

– $A$ のある隣接する2要素を選び,それらの値を入れ替える.

あなたの目標は,スコアを $s+1$ 以上にすることです. 目標が達成可能であるかどうか判定し,また可能であるなら必要な最小の操作回数を求めてください.

<制約>
– $2≤N≤4×10^5$
– $1≤K≤N−1$
– $1≤A_i≤10^9$

元記事を表示

OpenBB Terminal~フリーの金融分析プラットフォーム – 基礎編~

オープンソースの金融データ取得/投資分析プラットフォームのOpenBB Terminalのインストールと基本的な使い方を紹介します。

# はじめに

Bloomberg(略称:BB)といえば世界トップの金融データ企業で、BB Terminalといえば外資系金融マンにはおなじみの伝統的で風変わりなインターフェースを持つ金融データの統合ソフトウェアです。これのオープンソース版を目指しているというOpenBBが最近注目を集めているのでメモとして記事にしました。

Bloombergターミナル??という方はYoutubeを検索してみてください。80年代風のIFに痺れること請け合いです。(**独自コマンドと引き数を入力して画面を呼び出す流れはOpenBBも踏襲しています**)

ドキュメントや、「使ってみた」的な記事が乏しいなかで筆者が調べた範囲での紹介のため、網羅性の問題や勘違いもあるかもしれませんがご了承ください。

OpenBB Terminalはコマンドラインで操作するアプリケーションです。コマンド

元記事を表示

【Python】ビットコイン自動売買BotをAWS Lambdaで動かす

# 自動売買ロジックの実装
実装の流れとしては
1. BTCの価格取得
1. 移動平均を計算
1. クロスで取引実行

https://github.com/SohMitian/btc_trade

## CryptowatchからBTCFXの価格データを取得
CryptowatchのAPIを叩いて、BTCFXの価格データを引っ張ります。

“`python
def get_price(min, before=0, after=0):
# Cryptowatchのparamはbefore, after, period
# before: int Unix timstamp
# after: int Unix timstamp
# period: array Example: 60,180,108000

price = []
# 何分単位かを設定
params = {“periods” : min }
# ローソク足取得期間が初期値0以外の時の処理
if before != 0:
params[“before”] = bef

元記事を表示

[python] redisでよく使うコマンド

# redis-py を使うよ!

https://redis-py.readthedocs.io/

## インストール

“`shell
pip install redis
“`

## 使い方
### 前提条件
“`python
import redis
connection_pool = redis.ConnectionPool(
host=host,
port=port,
db=db,
password=password
)
r = redis.StrictRedis(connection_pool=connection_pool)
key = ‘key’
value_string = ‘value’
value_hash = {‘hoge’: ‘A’, ‘foo’: ‘B’}
ttl = 60
“`

### コマンド説明
|type|コマンド|説明|
|-|-|-|
|共通|r.type(key)|keyのタイプを確認|
|共通|r.expire(key, ttl) |生存期間を秒で設定|
|共通|r.keys(key)|keyの有

元記事を表示

ROSの自作パッケージからPythonコードをimportする

# 概要

ROSで自作のパッケージ内に作成したPythonプログラムを、ほかのプログラムで継承して少し改変して使いたい場合や、頻繁につかう関数などをまとめた自作モジュールをimportしたいときの解決策です。

sys.path.appendなどの方法もありますが、まるでROSのデフォルトのパッケージからimportしているような書き心地にできる設定に成功したので共有します。

# 環境

OS : Ubuntu 18.04(WSL)
ROS dist : melodic

# 状況

「test_module」と「test_user」という2つの自作パッケージで考えます。

test_moduleがimportされるPythonコードを有するパッケージで、test_userがtest_moduleからPythonコードをimportして、ROSノードを立ち上げるプログラムを有します。

# test_module

test_module内のmodule.pyが今回importしたいプログラムとします。module.pyは以下のようなプログラムとします。

“`python
#!

元記事を表示

[ABC247 E] Max Min ざっくり解説

# はじめに

公式ともちょっと違う上、シンプルそうなので書く。例によって数学的な証明とか言われてもわからない。

## コード

https://atcoder.jp/contests/abc247/submissions/30887519

## 当時の考察

N<10**5なので、O(N)かO(NlogN)の解法になりそう。 該当の範囲は下記4つの条件を満たしているはず。 1. Xを含む範囲 1. Yを含む範囲 1. Xより大きい数を含まない範囲 1. Yより小さい数を含まない範囲 ちょっと条件が多くてややこしい。Xより大きい数またはYより小さい数を跨ぐような範囲はあり得ないので、そういう数字は数列の区切り文字みたいな感覚で飛ばし、分割された各々の数列に対しての範囲を考えていく。こうすれば1,2のみの条件を考えればよい。 さて、対象の数列を走査して、条件を満たす範囲の数を考えてみる。 条件から、該当範囲にはXとYが含まれている。としたとき、左から4番目にXがでたあと、8番目にYの両方がでてきたとき、 ``` ???X???Y ??X???Y ?X???Y

元記事を表示

Python v2.7でバイナリデータ解析

# バイナリデータを解析したい
アプリケーションの管理データはバイナリファイルになっていることが多々あります。
そんなデータの中身をテキスト表示して確認したいと思ったのが始まりです。

# 実行環境
アプリケーションの実行環境がLinuxでPython2.7がインストールされていて、バージョンアップが難しいので、今回はPython 2.7を実行環境とします。

~~~bash:
$ python –version
Python 2.7.5
~~~

# バイナリデータ解析のクラス作成
まずはサンプルコード。

~~~python: test.py
class MyData:
column1 = “” # カラム1
column2 = “” # カラム2
column3 = “” # カラム3

def __init__(self, data):
with io.BytesIO(data) as buffer:
self.column1 = struct.unpack(‘

元記事を表示

PythonでPDFファイルを結合・分割・並び替えアプリ作成

# はじめに
Pythonプログラムで即業務に役立つサンプルプログラムとして、PDFファイルを分割、結合、並び替えできるアプリを作成してみましたので、備忘録も兼ねて掲載します。
プログラムは、PDFファイルをドラッグ&ドロップしたり、並び替えが出来るなど、GUI画面で操作しやすくしてみました。

# 動作環境
Visual Studio Code
Python3.8.8
# 各種インストールライブラリー
PyPDF2 1.26.0
tkinterdnd2 0.3.0
# 画面イメージ:
PDFファイルをドラッグ&ドロップしたり並び替えたり、結合、分割するためのアプリ本体の画面イメージは以下のようになっています。
LISTBOXやボタンを使って、出来るだけ操作しやすいようにしています。
![完成イメージ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1361368/a8fa53c0-cd5d-ff0c-8edf-a644189afef1.png)

# YouTubeでの解説:
プログラムの作り方や操作の

元記事を表示

YOLOシリーズの速度比較をしてみました

# YOLOっていろいろあるけど、速度はどうなんだろう
物体検出DNNではYOLOシリーズが注目されています。バージョンが上がるにつれ、性能向上のためのさまざまな工夫がなされているようです。先日筆者も、ビデオ映像からYOLOXで人物抽出を行ってみました(「[YOLOXでビデオ映像から人物の映っているフレームだけ抽出してみた]」)。

ただ、実際のところ、処理速度はどうなんだろう、YOLOXでよかったのかな、とふと疑問に思い、比較をすることにしました。速度という観点では、学習速度などもあるかと思いますが、ここでは推論速度に絞って比較を行いました。

# 実際に推論速度を測定しました
比較の対象は、[Yolov4 github]、[Yolov5 github]/torch.hub、[YOLOX github]から入手できる以下の事前学習モデルとしました。
|github|事前学習モデル|
|–|–|
|[Yolov4 github]|yolov4, yolov3|
|[Yolov5 github]|yolov5s / yolov5m / yolov5l / yolov5x|
|[YOL

元記事を表示

OTHERカテゴリの最新記事