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

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

8パズルで強化学習

# 0. はじめに

https://qiita.com/ikeyasu/items/67dcddce088849078b85

https://qiita.com/icoxfog417/items/242439ecd1a477ece312#強化学習の特性

Pythonで学ぶ強化学習を読みましたので、8パズルを題材に強化学習を実装してみたいと思います。
正直まだよくわかっていませんが、頭の整理のためここに記事を残したいと思います。
間違いや実装のよくない点などございましたら、ご指摘いただけますと幸いです。

## 0-1. この記事でやること
8パズルを題材に強化学習の各手法を実装します。
扱うのはValue Iteration、Q-Learning、ニューラルネットワークを使ったQ-Learningです。

以前、8パズルで各種グラフ探索系のアルゴリズムを整理しました。今回は強化学習で8パズルを解きます。

https://qiita.com/persimmon-persimmon/items/48bf1b021c349d338f0f

8パズルは基本的な探索(BFS)で十分解

元記事を表示

TensorFlow 2.xでObject Detection APIを使うにはTensorFlowバージョンを揃える必要がある話

機械学習周りで物体検出したいとき、TensorFlowとともに[Object Detection API](https://github.com/tensorflow/models/tree/master/research/object_detection)を利用することがあります。

Object Detection API側のアップデートで新規Docker環境が動かなくなったことがありました。

## TL; DR
tensorflowおよびtensorflow関連ライブラリでバージョンを揃えればOKです。以下どちらかを行います。

1. ベースとなるimageで最新のTensorFlow (GPU)バージョンのimageを使用する
1. (workaround) Dockerfile内で同一バージョンのtensorflow, tensorflow-text, tf-models-officialをインストールする
– TensorFlow 2.4.0未満の場合、Object Detection APIの特定コミットをチェックアウトする

#

元記事を表示

【ランキング】PythonでのAI開発学習にオススメのプログラミングスクールTOP3

– **今は別分野のエンジニアだが、これからAI開発を学びたい**

– **機械学習スキルを身につけて就職や転職に活かしたい**

– **AI系の会社に在籍している為、早急に基礎知識を身につける必要がある**

こういった方を対象に、PythonでAI開発が学べるおすすめスクールのランキングを紹介していきます。

一般にプログラミングスクールといえば「RubyやJavascriptやhtml・cssといったWEB系の開発を学べる所」というイメージが先行しています。

実際、Pythonの本格的な学習環境が整っているスクールは少ないのが現状です。
さらに、

・**転職市場で評価されるレベルの実力がつく**
・**利用者に親切な制度(返金対応など)がある**

という条件を満たすスクールとなると、本当に限られてきます。

この記事では、実務で日々Pythonを使っている僕が、高コスパのスクールをランキング形式で紹介していきます。

| | 【1位】[Aidemy](https://px.a8.net/svt/ejp?a8mat=3H

元記事を表示

Pythonでデータ分析をするときのフロー

PythonでSignateやPythonのお題をゴチャゴチャといじっているときに、DataFrameの使い方がこんがらがって、大切な元データをボロボロにしてしまうことがあったので、自分なりのDataFrame(とかの変数)名の整理をしてみました。
意外と、こういうお作法を書いたものが見つからないので、自分用のメモ_φ(・_・として。
![DataPythonFlow.drawio.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/522382/cd7c67a1-6fb9-9249-98ac-ef63b1bf7bd8.png)

前提
* train_data → 出題者から提供された学習用データ
* test_data → 出題者から提供された評価用データ
* submit_data → 提出用データの提出直前状態

試行錯誤用のデータにtrain01と数字を付けているのは、試行錯誤の過程でいろんなパターンを作ってみたくなったときに備えてです。(train02、train03…を作ってみるとか)→

元記事を表示

【Python】【timeit】コードの処理の実行時間を計測する!

 僕は何度か、Pythonの標準機能として既に存在しているプログラムを自分で作りました。自分でアルゴリズムを考えて手を動かす学習のためです。

 そんな時に考えたのは、「同じプログラムは同じプログラムでも、処理にかかる時間はそれぞれどのように異なるのだろう」ということでした。

 そこで、「timeit」というモジュールを使って、同じプログラムの処理にかかる時間を比較してみることにしました。
 今回は以下の、16進数を10進数に変えるプログラムを用いました。参考までに、コメントでいただいた他のプログラムも使わせていただきました。

– [16進数→10進数](https://qiita.com/kim-shun/items/1efca5d3d4854d6dc66d)

“`python
def change_decimal(hexa): #【A】
nums = {‘0′:0,’1′:1,’2′:2,’3′:3,’4′:4,’5′:5,’6’:6,
‘7’:7,’8′:8,’9′:9,’A’:10,’B’:11,
‘C’:12,’

元記事を表示

「天気図っぽい前線」はデータのどこを見て描かれているのか?(1) Grad-CAMのセマンティックセグメンテーションへの適用 Grad-CAM for semantic segmentation in weather fronts detection

# 「天気図っぽい前線」はデータのどこを見て描かれているのか?(1) Grad-CAMのセマンティックセグメンテーションへの適用

## 0.はじめに

天気図でよく目にする温暖前線、寒冷前線といった「前線」は気象庁の予報官の方が気象データを元に解析して描画しています。
どこに前線を描くのかは機械的に決まるものでもなく、さらに前線描画のスタイルは各国の気象機関によっても異なっております。

私は数年前から機械学習の勉強題材として、この前線描画をニューラルネットワークで行おうということをはじめました。

格子点気象データ(GPV)を可視化した画像を入力として、セマンティックセグメンテーションによって気象庁が作成した「速報天気図」の前線と同じような「天気図っぽい前線」を描画させるということです。この過程で前線の描き方を調べたりしているうちに、気象予報士の資格まで取ってしまいました。Domain Knowledgeは重要です。

前線の自動描画の話は5回+番外編1回に分けて書きました([気象データをもとに「天気図っぽい前線」を機械学習で描いてみる(1)](https://qiita.com/

元記事を表示

【ラズベリーパイ】Raspberry Pi 3 Model b+環境を構築してみた

#はじめに
先日macOSからaws lambdaへpythonの実行環境をクラウドリフトしました。
今回はawsからオンプレのラズベリーパイ(以降ラズパイ)へクラウド回帰してみたいと思います。

理由は以下2点です。
・ラズパイを勉強したいこと
・ラズパイの消費電力が低いこと

そんなラズパイを1から構築してます。

#環境
・macOS Catalina 10.15.7
・Sanoov Raspberry Pi 3 Model b+
 購入したものはAmazonで以下になりますのでご参考ください。

#手順
####ハードウェアの準備
1.開梱します。内容物は写真の通りです。SDカード(32GB)は赤い本体の箱に入っていました。
![IMG_2739.J

元記事を表示

はじめてのDjango 開発環境構築からデプロイまで

#はじめに

こんにちは。
現在、経済学部の大学3年生をしており、最近Djangoを用いたWebアプリの開発を勉強し始めた者です。半年ほど前に自分たちが企画する展示会のために、初めてHTML/CSSとJavaScriptを用いてWebページを制作しました。そのWebページ内にBasic認証でアクセス制限をかけた関係者用ページを設置していたのですが、使っているうちに掲示板などの機能を加えたくなり、このたびWebアプリの制作を始めました。

ローカル開発からデプロイまで、一通りの作業を終えたので、学びのための振り返りも兼ねて、その過程を記事に記録しようと思います。初学者の学習記録であるため、初歩的な内容ばかりかと思いますが、同じ初学者の参考になることを願って、記事を書いてまいります。

なお、制作にあたっては次の書籍を参考にさせていただきました。書籍記載内容の転載になってしまうのを避けるため、書籍の参考にした項目と自分がつまずいた点のみを記事には掲載いたします。詳細については書籍をご覧ください。

– 株式会社ビープラウド(2018)『Python プロフェッショナルプログラミング

元記事を表示

【Python描画処理】ベン図(Venn Diagram)と組み合わせ計算(Combination Calculation)と確率演算(Probability Operation)

今一つ掲題の3分野の統合が脳内で出来てない気がするので、そのプログラム表現も含めまとめてみました。新たに分かった新事実。「**人類は難度が急激に高まる3次元以上の行列演算を諦め、2次元行列演算を洗練させる事で全ての事象を扱える様にする方向に進化してきた。同様に集合論についても急激に難度が高まる4個以上の集合についての集合についての考察を諦めたので、その機能は最先端のプログラム言語にも実装されていない**」。要するに、この領域にまで「(無限微分と無限積分の組み合わせなどにより)**N次元データを2次元配列化する**」人類の英知は及んだ様なのです。だがどうやって?

#ベン図(Venn Diagram)と組み合わせ計算(Combination Calculation)と確率演算(Probability Operation)の関係について。
まずは**ベン図**(Venn Diagram)のプログラム表現について。
[Python matplotli

元記事を表示

ABC208 A~D問題 ものすごく丁寧でわかりやすい解説 python 灰色~茶色コーダー向け #AtCoder

ABC208(AtCoder Beginner Contest 208) A~D問題の解説記事です。
灰色~茶色コーダーの方向けに解説しています。

その他のABC解説、動画などは以下です。

https://qiita.com/sano192/items/54accd04df62242b70f0

##A – Rolling Dice

https://atcoder.jp/contests/abc208/tasks/abc208_a

A回全て1が出た場合、出た目の合計はA
A回全て6が出た場合、出た目の合計は6A
となりますから、
A≤B≤6A ならば Yes
そうでないならば No
を出力します。

Yes、Noは文字列なので
print(“Yes”)
というように””をつけることを忘れないようにしてください。

入力の受け取り、出力がわからない方は以下の記事を参考にしてください。

https://qiita.com/sano192/items/eb2c9cbee6ec4dc79aaf

**【提出】**

“`python:
# 入力の受け取り
A,B=map(int,

元記事を表示

PythonでSortedListを作ってみた

# はじめに
[ABC217 D – Cutting Woods](https://atcoder.jp/contests/abc217/tasks/abc217_d)でいいデータ構造がみつからず困ったので作ってみた。
# 作ったもの
同じ要素を複数入れられる。要素を常に昇順に保つ。追加した順は保存しない。
$E$ : 要素の数。
$N (=2^n (1 \leq n \leq 20))$ : 要素の種類数。要素は $0 \leq x \leq N-1$ の整数。
挿入 $Ο(\log_2 N)$
削除 $Ο(\log_2 N)$
xより大きい要素の最小値取得 $Ο(\log_2 N)$
xより小さい要素の最大地値取得 $Ο(\log_2 N)$
存在確認 $Ο(1)$
要素数取得 $Ο(1)$
イテレータ $Ο(E \log_2 N)$
昇順でx番目の要素取得 $Ο(\log_2 N)$

indexを実装するともっといいかも。

区間にわけてそれぞれの区間内の要素数を持つことで計算している。これは何というデータ構造になるのだろう?
# 使い方
### コンストラクタ
“`Pyth

元記事を表示

ぷよぷよの画像からぷよぷよを抽出する

# ぷよぷよの画面から何色のぷよぷよを抽出する

使いたい人がいるかもしれないのでコードの共有が目的
抽出した上でやることは秘密だが、この記事とコードでできることは

プレイ画像(動画) -> 配置されているぷよぷよのnumpy配列(横6×縦12×色)のplayer数分

# github
https://github.com/daikiclimate/PuyoExtractor
細かいところはこれからリファクタリング。
実装途中なので細かい修正はあるかも
基本的にはこのまま使うことはあまり考えていない。使う動画や画像に合わせて修正してほしい

# 結果
入力
![sample.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404462/72c90f49-5e55-1fbc-5e25-f7a80fd289bf.jpeg)
プレイヤー1
![player1_img.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/404462

元記事を表示

Pythonの関数名を強調表示し、ログを見やすくする

大規模なプログラムの開発をしていると関数の数が増えて複雑さも増すため、どこからどの関数が呼ばれてどんな処理をしているのか、分かりづらくなってきます。inspectモジュールのcurrentframeを使って工夫すると関数名やクラス名を強調表示し、ログを見やすくすることができます。

# サンプルコード
“`python
import inspect

def add(a, b):
# 関数名表示(start)——————————-
func_name = inspect.currentframe().f_code.co_name
print(‘\n’ + ‘-‘ * len(func_name))
print(func_name)
print(‘-‘ * len(func_name))
# ———————————————–
print(‘hello’)
c = a + b
print(‘a={0},b={1},c

元記事を表示

python初心者はWordCloudで遊んでみたい4

#前回まで
WordCloudを軽くいじくった。書式もいじくって見やすくした。
しかし、日本語出力する時はデフォルトだと文字化けしてしまうので、今回は日本語を対応させていく。

参考にさせていただいたサイト↓
[WordCloud(ワードクラウド)を日本語で作成する【Python】] (https://self-development.info/wordcloud%ef%bc%88%e3%83%af%e3%83%bc%e3%83%89%e3%82%af%e3%83%a9%e3%82%a6%e3%83%89%ef%bc%89%e3%82%92%e6%97%a5%e6%9c%ac%e8%aa%9e%e3%81%a7%e4%bd%9c%e6%88%90%e3%81%99%e3%82%8b%e3%80%90python%e3%80%91/)
~~ほぼまるパクり~~

#日本語フォント
フォントを指定する際、PC内のフォントを使っている方が大半ですが、今回はサイトからインストールしたフォントを使用します。
今回使用したフォントはこちら↓
https://fontfree.me/2994

ダウン

元記事を表示

ラズパイにdjangoを設定する

##ラズパイでdjangoを使用する
ラズパイをサーバーにすること、windowsと違い一筋縄でインストールがいかなかったため
備忘録として記録する

##前提条件
バージョンは以下のコマンドで確認

“`
uname -a
“`

Linux raspberrypi 4.19

その他、pythonはラズパイの基本的に備わっている
python2.7
python3.5
のほか、他の用途で使うためにpython3.8.12をいれており、
python3.8.12を普段使いに設定していた(設定の仕方を思い出したら追記します)

のちのちこのpython3.8が鬼門になった

##djangoのインストール方法及び確認方法
インストール方法

“`
python3 -m pip install django
“`

※pythonとpython3の違い。
ラズパイではpython2系も備えているため、実行時にpython3と明示的にコマンドを入力することで、
python3系を動かすことになる。
pythonコマンドでpython3系を規定で使うように設定することも可能
pip3

元記事を表示

MySQL × Nginx × uWSGI を用いて、Debian 上に pipenv でパッケージ管理された python 3.9 の Django アプリをデプロイ

一つの Debian インスタンス上に全て(MySQL・Nginx・uWSGI)のプロセスを積み込み、 Django アプリをデプロイする手順のメモを作成したので公開。とりあえずちょっとしたアプリを公開したい場合などを想定。

## 構成

Debian 10
Nginx <-> uWSGI <-> Django <-> MySQL

動作確認時のバージョン:

* python 3.9.7

* Django 3.2.7

## 前提

`username` ユーザー(適宜変更)として作業可能な Debian 環境 (AWS EC2 や GCP GCE などで Debian インスタンスを作成など) が準備できている。

## 必要になる apt パッケージのインストール

“`
~$ sudo apt update
~$ sudo apt -y install build-essential zlib1g-dev libncurses5-dev libgdbm-dev \
libnss3-dev libssl-dev libsqlite3-dev libreadline-d

元記事を表示

HuggingFace(BERT)を使ってお手軽に日本語ニュースを分類する

#0.はじめに
今回は自然言語処理のAI分類に関してBERTを活用する方法を書いていきます。
**BERT関連の記事を見ると割と難解でウワッナニコレ・・となる人も少なくないかな?と個人的に感じてる**のでいつものようになるべく平易な用語とコメントで記事書いていきます。

★本記事を読めば、自作データセットを同じように作って分類もできるようになるので最後まで読んでいただけると幸いです。
★本記事ではBERTのアルゴリズム詳細等は記載してません。まずは実装してから理解すればいいと思ってます。

* 動作環境
* OS : Windows10 pro(64bit) + メモリ6GBの貧弱GPU
* Python : 3.8.3// Miniconda 4.9.1
* transformers : 4.2.2
* torch : 1.7.1
* jupyter notebook

#1.事前準備

今回はニュースの分類なので当然サンプルデータが必要になる。

##1-1.livedoor ニュースコーパスをダウンロードし解凍
今回のサンプルは`livedoor ニュースコーパス`を使

元記事を表示

画像にデータを色情報として埋め込むテスト

twitterでちょっとしたスクリプトみたいなものを共有したくても
文字数の関係でできなかったりするので画像に情報に埋め込んで共有できないかテストです

可逆圧縮フォーマットならピクセル単位で細かく詰め込むこともできるところですが
~~twitterでは一定サイズ以上は強制的にJPEGになるためJPEGの圧縮単位の8ピクセルを塗りつぶしたデータを作成するようにしています~~
追記:8×8でも色情報は可逆にならないようで復元できませんでした
JPEGはモノクロでしかテストしていなかったので失敗です とりあえず記事はそのままにします

Blenderのツールの部品としてのテストなので テキスト読み書きとイメージ作成はBlenderの機能ですが
他の環境でも大きな違いはないかと思います

“`py:text2imsge
import bpy
import zlib
import struct
import math
import numpy as np
# 画像にデータを色情報として埋め込む
def pack_data(bin_data):
check_sum = zlib.cr

元記事を表示

Metropolisアルゴリズムを使って画像から乱数を生成してドット絵を生成する

# 概要
本記事は乱数生成アルゴリズムであるMetropolisアルゴリズムによって画像から乱数を生成し、ドット絵を作成するというものです。タイトルのままですみません。以下のような形です。

lena.pnglena.png

# Motivation
最近Generative Artにハマっています。WikiによるGenerative Artの説明は以下。

>ジェネレーティブアートまたはジェネラティブアート(英: Generative

元記事を表示

AWSでAIサービスを使ってみる〜第11回Personalize編〜

##Personalizeとは
>personalizeはレコメンデーション機能です。過去の購入履歴から顧客の好みを分析して顧客に気に入ってもらえそうな品物を提案します。

personalizeは次のように使います
①データの登録
・購入履歴等のデータをデータセット”と言います。

②ソリューションの構築
・データセットを用いた機械学習を行い、レコメンデーションを作成するための仕組みをを”ソリューション”と言います。

③キャンペーンの作成
・レコメンデーションを取得するために、ソリューションを公開します。ソリューションを公開する仕組みのことを”キャンペーン”と言います。

④レコメンデーションの取得
キャンペーンを使って、指定したユーザに対するレコメンデーションを取得します。

#####それでは実際にレコメンデーション機能を試してみましょう!

##使用するデータを前準備する
データの準備を行います。今回personalizeに必要なデータとして”購入履歴のデータ”と商品名を表示するために”アイテムのテキストファイル”用意します。

まず、購入履歴のデータを作成します。
(購入履

元記事を表示

OTHERカテゴリの最新記事