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

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

PythonでLINE Botのリッチメニュー を活用したアプリを開発したので学んだことを記す

## リッチメニューとは何か
リッチメニューはLINE公式アカウントのトーク画面下部に表示されるメニュー機能。
リッチメニューの各領域にリンクを設定することで、LINE公式アカウントの各機能のほか、外部サイトや予約ページなどにユーザーを誘導することができる。

![Screen Shot 2021-05-25 at 11.05.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/411851/fd0298e2-37a3-669b-12a5-f0c3212d6082.png)

## リッチメニューオブジェクト
“`json:json
{
“size”: {
“width”: 2500,
“height”: 1686
},
“selected”: false,
“name”: “Nice richmenu”,
“chatBarText”: “Tap to open”,
“areas”: [
{
“bounds”: {
“x”:

元記事を表示

conda activateでエラーが出る件

# 初めに
環境設定……なにそれおいしいの?
そんな自分が出会った,やらなければいけない事orzについて,備忘録として記載していきます.
(文章力が無いので読みづらい場合はすいません…)

# conda activateでエラー
VS CodeとAnaconda入れたし,仮想環境も作れたので,VS Codeでプログラム書いて行こう!
と意気込んでVS Codeでターミナルを表示すると以下の文が…

“`
CommandNotFoundError: Your shell has not been properly configured to use ‘conda activate’.
If using ‘conda activate’ from a batch script, change your
invocation to ‘CALL conda.bat activate’.
“`

早速かorz

調べてみるといろいろな方が解決法を記載しているのですが,最新版のVS Codeの記載が見つからずにハマりました.
そこで,以下の記事を参考に色々と試行錯誤をしました

元記事を表示

21年改訂版・ディープラーニングG検定の勉強方法の紹介

本記事では、21年7月実施の「ディープラーニングG検定2021#2」より適用される、「改訂版G検定」に向けた勉強方法を解説します。

**本記事の目次**
– はじめに(シラバス改訂について)
– 勉強方法の流れ(概要)
– 動画講義「AI For Everyone(すべての人のためのAIリテラシー講座)」
– 動画講義「経産省JMOOC AI活用人材育成講座(活用講座)」
– さいごに

**【注釈】**
私はディープラーニング協会の人材育成委員会の委員であり [[link]](https://www.jdla.org/about/activities/#aboutAnchor_No11)、
本記事はあくまで、最新コンテンツを中心にG検定に向けた勉強方法の”一例”を紹介する記事です。

G検定攻略的な記事ではございませんので、あしからず。

## はじめに(シラバス改訂について)

2021年4月15日に「G検定(ジェネラリスト検定)シラバス改訂についてのお知らせ」が公開されました [[link]](https://www.jdla.org/news/20210415001

元記事を表示

【機械学習入門】実験データの解析に役立つ非線形回帰分析を利用してみよう

# 本記事の概要
エンジニアとして働いていると、実験データを回帰分析して所望の特性を得るためのパラメータの設計をする、という場面に直面することがあると思います。
所望の特性とパラメータが線形の関係であれば、線形回帰モデルで予測式が得られますが、物理式の中には、特性とパラメータの関係が、2次関数や指数関数、三角関数など、線形では表されない非線形な場合も多々あり、精度の良い回帰式を得るためには線形回帰モデルだと不十分な場合があります。
今回は、numpyにより非線形データを自作し、非線形回帰モデルを活用して分析することで、実践的に学びたいと思います。

# 目次
[1. 非線形回帰の概要](#1. 非線形回帰の概要)
[2. データの作成](#2. データの作成)
[3. モデルの作成(非線形モデル)](3. モデルの作成(非線形モデル))
  [3.1. 多項式関数を利用したモデル](3.1. 多項式関数を利用したモデル)
  [3.2. ガウス型基底関数を利用したモデル](3.2. ガウス型基底関数を利用したモデル)
[4. 正則化法](4. 正則化法)
  [4.1. リッジ回帰](

元記事を表示

数独を全探索で解くプログラムとその速度向上

# はじめに
数独は楽しいパズルなんですが、難しい問題だと全然解けなくてつらい思いをするので、コンピュータの力を借りて解くことにしました。

最初は解くのに17分以上かかっていたのが、アルゴリズム改善によって最終的に3秒で解くことができた(もちろん環境は同じ)のでその過程をアウトプットします。

使用環境:Google Colaboratory (Python 3.7.10)

数独のルールは以下の通りです。9×9のマトリックスに数字を入れるパズルです。
>
![スクリーンショット 2021-05-24 20.46.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/391077/acd27034-9197-bdcb-e664-7cb5f266f8a7.png)
・まだ数字の入っていないマスに1から9までの数字のどれかを1つずつ入れましょう。0(ゼロ)は使いません。
・タテ列(9列あります)、ヨコ列(9列あります)、太線で囲まれた3×3のブロック(9つあります)のどれにも、1から9までの数字が1つずつ入

元記事を表示

fastapiのrouterでハマった件

タイトルにある通り、fastapiのrouterでハマったので今後同じミスをしないように記録として残しておきます。
業務内で起きたエラーで、実際のコードをこちらに載せることには抵抗があったため、ドキュメントを元にまとめていきます。

## エラー内容
エラー内容は以下の通りです。(こちらは私が実際に遭遇したエラーです。)

“`python
{
“loc”: [
“path”,
“account_id”
],
“msg”: “value is not a valid integer”,
“type”: “type_error.integer”
}

“`

このエラーはpydanticのエラーで以下の意味を持ちます。
・ loc → どこでエラーが起きているか
・ msg → エラー内容
・ type → エラーの種類

よって、今回のエラーは「pathのaccount_idの値が有効な数値ではありません」という内容のエラーです。
そこで私は、「account_idなんて今回使いたいパスに指定されていないのになぜこんなエラーが出るのだろう」と頭を

元記事を表示

20210524自分用テスト

#What is this
本記事はメモ用投稿になります。

ワードファイル上に間違えて同一画像を張り付けた場合に見つけるためのコードを検討しています。
完成したものではありません。

・同一の画像がないか、リスト内で比較して表示する手段を検討
・array_equalで比較して一致したものがあった場合はメッセージを出すことができないか検討

#docxファイルの構造確認

“`
import zipfile

docx_zip = zipfile.ZipFile(“image.docx”)
zipped_files = docx_zip.namelist()

for file in zipped_files:
print(file)

docx_zip.close()
“`

#docxファイル内の画像ファイル抽出
“`
import zipfile
from pathlib import Path

docx_path = Path(‘image.docx’)
docx_zip = zipfile.ZipFile(docx_path)
zipped_files =

元記事を表示

【python】@propertyと@x.setter でデコレータ

「きれいなpythonコードを書きたいな」と思いつつ、デコレータ(decorator)を使ってみることにしました。decorator が関数のラッパとしてどう働くかは数多の解説があります。

ここでは、getter/setterの関数の実装として使ってみます。単純に参照や代入をするとき、そこに自分独自の処理を含めた関数として実装したいときに使えます。

# デコレータを使った変数の取得と設定の実装

単純に、整数値という制約をつけて書いてみました。

“`python:test.py
class Something(object):

def __init__(self):
self._param:int = 10

@property
def param(self) -> int:
if isinstance(self._param,int):
return self._param
else:
raise ValueError(“not integ

元記事を表示

SHAP(SHapley Additive exPlanation)についての備忘録

# 背景・目的
ブラックボックス化しがちな機械学習モデルを解釈し、なぜその予測値が出ているのかの説明に役立つSHAP値について、理解を深めるべく論文や公式資料を漁りました。自分用の備忘録としてこちらに内容をまとめておきます。

# SHAPとは何か?

* 正式名称は**SHapley Additive exPlanations**で、機械学習モデルの解釈手法の1つ
* なお、「SHAP」は解釈手法自体を指す場合と、手法によって計算された値(SHAP値と呼ぶこともある)を指す場合がある
* **NIPS2017 [^1]**にて発表された
* 論文は[A Unified Approach to Interpreting Model
Predictions](https://proceedings.neurips.cc/paper/2017/file/8a20a8621978632d76c43dfd28b67767-Paper.pdf)
* それまでに存在した解釈手法(**Additive Feature Attribution Methods**。 LIMEの基本アイデ

元記事を表示

VTKFortranをWindowsでビルドする

# 概要
VTKファイルフォーマットをFortranで扱うためのオープンソースライブラリ[VTKFortran](https://github.com/szaghi/VTKFortran)をWindowsでビルドする手順を整理しました.
VTKFortranのリポジトリにも書かれていますが,Linux上で開発されており,他のOSはサポートされていません.
WSLやMacOSでは簡単にビルドできますが,Windowsでビルドするには色々と問題がありました.
いくつかの方法でビルドする方法を見つけたので,備忘録的にまとめます.

# 環境
– VTKFortran v2.0.1
– Windows 10 Pro 20H2
– cmake 3.14.5
– GNU Make 3.8.1
– gfortran 8.1.0
– git for Windows 2.29.2
– MinGW-W64 x86_64-8.1.0
– Python 3.8.5 (Anaconda individual edition 4.10.1)
– ParaView 5.8.0 for Windows
– Ubunt

元記事を表示

【SSD(物体検出)】の実装コードを整理してみました

本書は、【SSD(物体検出)】の予測時のコード【keras】がどのように実装されているのか説明します。 SSDモデルをより深く理解するのに役立てばと思います。

今回参照したコードは、下記のGitHUBのコードです。

https://github.com/rykov8/ssd_keras

実際に動かす際に必要となる環境準備は下記のサイトを参考にしてください。
https://github.com/weiliu89/caffe/tree/ssd


※筆者が所属するNPO法人の勉強用にメモしたものですので、誤りや不足、加筆修正すべきことろがありましたらご指摘ください。継続してブラッシュアップしていきます。
また、SSDモデルの解説をQiitaに投稿していますので合わせてご参照ください。

https://qiita.com/DeepTama/items/aab46729d2aa51a8954d

[©NPO法人AI開発推進協会](https://sites.google.c

元記事を表示

Raspberry Pi Picoでマクロパッドを作る

#作った目的
身内でDiscordを使ってAmong Usをやってるんですが、
マイクミュート等をコマンド入力で対応しており、毎回打つのめんどくせぇな?

って事でマクロパッドを作ることにしました。
(諸事情により自動ミュートbotは使ってない)

#元記事
https://www.tomshardware.com/how-to/raspberry-pi-pico-powered-stream-deck

当初はProMicroと[QMK Firmware](https://docs.qmk.fm/#/)でやろうと思ってたんですが、
なんかRaspberry Pi Picoでお手軽に出来るっぽかったのでやってみました。

#部品調達

– Raspberry Pi Pico x1([遊舎工房](https://shop.yush

元記事を表示

【Python3/Python-dotenv】.envのファイルの中身を上書きする方法

[1]:[https://github.com/theskumar/python-dotenv]

Pythonで.envファイルをいじる時、「[Python-dotenv][1]」を使用されている方は
多いのではないでしょうか。
今回は、その[Python-dotenv][1]を利用して、直接envの値を上書きする方法です。

## 前提条件
Python-dotenvのインストールについては、[公式のGithub][1]を参考にしてください。

.envファイルに以下の値が存在していると仮定します。

“`terminal:.env
GREETING_KEY=”HELLO”
“`

今回は、この`HELLO`を`HEY`に変更します。

## 上書きできない例

最初に思いついたのは、下記のようなコードです。

“`python:failed.py
import os
from dotenv import load_dotenv

class OverrideEnv:

def __init__(self):
load_dotenv()

def chang

元記事を表示

Word2Vecのモデルのロード方法を理解する

#Word2Vecのモデルのロード方法を理解する

##1, モデルをロードする二つの方法

“`
(1) gensim.models.Word2Vec.load(“xxx.bin”)
(2) gensim.models.KeyedVectors.load_word2vec_format(“xxx.bin”, binary=True)
“`

( 1 ):
 隠れた重み、語彙頻度、および二分木など学習に用いられるデータを含めてロードする
( 2 ):
 隠れた重み、語彙頻度、および二分木が欠落しているため、ベクトルのトレーニングを続行することはできない。トレーニングを続行するには、KeyedVectorsだけでなく、save()によって保存された完全なWord2Vecオブジェクトの状態が必要((1)の形式でロードする必要があるよ、ということ)。

##2, DeprecationWarning: Call to deprecated `__getitem__` (Method will be removed in 4.0.0, use self.wv.__getitem__() i

元記事を表示

使っていない大きなファイルを探すときのために

使っていない大きなファイルを探すときのために。

“`py:search_big_file.py
import os
import pathlib

def get_path_recursive(path):
for p in path.iterdir():
try:
if p.is_dir():
get_path_recursive(p)
elif p.is_file():
s = os.path.getsize(p)
if s > 1024*1024*1024:
print(f'{s}:{p}’)
except PermissionError:
print(f’PermissionError:{p}’)
except OSError:
print(f’OSError:{p}’)

path = p

元記事を表示

VS CodeとAnacondaの設定で初めにした環境設定

# 初めに
環境設定……なにそれおいしいの?
そんな自分が出会った,やらなければいけない事orzについて,__備忘録__として記載していきます.
(備忘録といいつつ既に忘却してる記憶多数)

# Pythonを使うために
VS CodeとAnacondaを既にインストールした前提に進めます.
(インストールした時の事忘れてしまった テヘッ)

### 1. 仮想環境の構築
Pythonはバージョンによって動く/動かないなどがあると聞き,やっておいて損はないだろうとの事で仮想環境を構築しました.
出来る限りGUIでやってます.

__初めに__,Anaconda Navigatorを開き,_Environments_から_Create_を押します.
名前入力とPythonのバージョンを選択し,_Create_!これで仮想環境完成です!
__後は__,上の方にある_installed_ってところを_Not installed_に変えて,右の検索バーから_anaconda_と入力し,
_anaconda_にチェックを入れて_Apply_!
こんな感じで仮想環境は作れるみたいでした.

元記事を表示

ドアホン画像を保存閲覧する設定(その3)

ドアホン画像を保存閲覧する設定(その2) にて、uudeview.sh で日付ディレクトリに以下のような画像ファイルが溜まっていくことが確認できたなら、

“`shell-session
user@rapiq:~ $ (cd sda3/DCAM/Rec/motion/2021/05/22/; ls -lt|head)
-rw-r–r– 1 user user 16993 May 22 15:14 SC2_210522151444-1.JPG
・・・
“`

いよいよ、ブラウザで縮小画像が閲覧できる設定を行なう。

###(12) lighttpd HTTPサーバのインストール

“`shell-session
# apt-get install lighttpd
# cd /etc/lighttpd
# diff -u lighttpd.conf.org lighttpd.conf
— lighttpd.conf.org 2020-09-18 19:58:58.000000000 +0900
+++ lighttpd.conf 2021-02-15 17:42:14.76

元記事を表示

深層学習からのPython学習「活性化関数」

#0. 活性化関数を書いてみる

深層学習によく使う活性化関数をPythonで書くとどうなるかをやってみる。
あわせてまだ良く分かっていないPython学習もやる。

#1. まずはNumpy回りの整理

###1.1 主要なAPI
活性化関数を作るにしても、まずは基本ライブラリのNumpyの良く使うAPIを整理しておく。

Numpyの日本語ドキュメントは以下にあった。

https://runebook.dev/ja/docs/numpy/

**N-d array**
numpyにてN次元配列を扱うもっとも重要なクラスがNdarray。通常のPythonでは、多重リストを使わないと表現出来ない配列が簡単に使えるようになる。

~~~py
w = np.array([1,2,3]) #1×3行列
w = np.array([[1,2,3],[4,5,6]]) #2×3行列
~~~

**max**

max(self, axis=None, out=None, fill_value=None, keepdims=np._NoValue):

入力した数値の中

元記事を表示

【Python】複数条件で文字列を分割しリストを生成【re.split】

Pythonで文字列をリストに変換したい場合,まず思い浮かぶのは`split()`を使う方法です.

“`python
str = ‘AAA BBB CCC’
list = str.split()
list
“`

[‘AAA’, ‘BBB’, ‘CCC’]

分割できました.

以上の例は文字列が空白で区切られている場合ですが,他にも…

“`python
str1 = ‘AAA,BBB,CCC’
list1 = str1.split(‘,’)
list1
“`

[‘AAA’, ‘BBB’, ‘CCC’]

“`python
str2 = ‘AAA/BBB/CCC’
list2 = str2.split(‘/’)
list2
“`

[‘AAA’, ‘BBB’, ‘CCC’]

このように,`()`内で区切り文字を指定することで分割できます.

### `re.split()`
文字列からリストに変換する他の手段として`re.split()`を使う方法があります.

“`python
import r

元記事を表示

FortranからMPIを使ってPythonにnumpy配列の並列処理をさせたい!: forpyの利用その4

この記事はFortranからPythonを扱う方法であるforpyを解説する記事の第四弾です。
[FortranからPythonを使いたい!:forpy](https://qiita.com/cometscome_phys/items/5b4347a48fb25b52e472)
[Fortranで機械学習がしたい:FortranからのPyTorchの利用](https://qiita.com/cometscome_phys/items/54adfb82410f1a3c0831)
[Fortranからnumpy配列を読み書きしたい!: forpyの利用その3](https://qiita.com/cometscome_phys/items/adf2b78b23a52941b0a3)
が以前の記事です。

今回は、MPI並列計算の中からPythonを実行してみましょう。特にnumpy配列をPythonに渡して処理してもらって、それをFortranが受け取ってまた加工し、そしてまたnumpyにしてPythonに送る、という処理をしたいと思います。
これの利点の一つは、Pythonをmpi4p

元記事を表示

OTHERカテゴリの最新記事