- 1. DeepLearning with Pythonを読んで得た学びを残しておく
- 2. デコレーターによるメソッド実行時間計測 in Django
- 3. MAMPのPHPのexec()からpython3を簡単実行。
- 4. python3でyamlファイルを読み込む
- 5. python from import*使い方を解説
- 6. torch.Tensor 後、日付情報の復元結果が微妙にずれる
- 7. matplotlibを使ったpythonジョブでsshサーバーを抜けたあとでもエラーが出ないようにbackendをうまく切り替える
- 8. 指定した拡張子を持つファイルを調べて、ファイル名の配列を返すメソッド
- 9. Python、LINEbot【番外編】~もしも赤ちゃん服のお店をしていたら~
- 10. pythonの if __name__ == ‘__main__’:は何のためにあるのか。
- 11. 【@デコレータ使用篇】Pythonの関数を辞書(dict)のValueに格納して、Keyに応じた関数を呼出す
- 12. python アンダースコアに関して
- 13. 数行で簡単 Pythonでwebサイトから情報取得
- 14. LINEでyahoo天気から好きな地域の天気を通知してもらおう!~PART3~
- 15. AutomatorでPython3を使う時にハマるポイント
- 16. [Python + Tensorflow2] 安定した機械学習環境構築
- 17. 内包表記の書き方【Python】
- 18. 毎朝起こしてくれる彼女ができた。
- 19. スクレイピング時にhtmlファイルの文字コードを判定する
- 20. Pythonの関数を辞書(dict)のValueに格納して、Keyに応じた関数呼出しをする方法
DeepLearning with Pythonを読んで得た学びを残しておく
## はじめに
[Deep Learning with Python](https://www.amazon.co.jp/Deep-Learning-Python-Francois-Chollet/dp/1617294438)のEnglish verを読んで学びがあった箇所を自分のために書き残します。
途中、**Note**とある箇所は私のメモになります。
もし私以外の誰かの参考にもなれば嬉しいです。
文章のですます調や用語の統一ができていないところが多々ありますが、私のメモだと思ってご容赦ください。
## 次元の考え方
ベクトルも次元
軸の数(ランク)も次元## 損失関数の使い分け
– 2クラスの分類問題ではバイナリ・クロスエントロピー
– 多クラスの分類問題ではカテゴリカル・クロスエントロピー
– 回帰問題では平均二乗誤差
– シーケンス学習問題ではコネクショニスト時間的分類(CTC)確率を出力するモデルを扱う場合、通常はクロスエントロピーが最良の選択です。クロスエントロピーは,情報伝達理論の分野における量で,確率分布間の距離を測定するものです.
デコレーターによるメソッド実行時間計測 in Django
メソッドの実行時間を測定するのに、毎回メソッドの開始と終わりの時刻を計測して
差分を計算するのは手間ではないですか?なので、**デコレーター**で実現してみました。
## デコレーター
“`python
import time
def measure_runtime(method):
def wrapper(*args, **kw):
# 始点タイム
ts = time.time()# methodの実行
rt = method(*args, **kw)# 終点タイム
te = time.time()# 差分の表示
print (‘%s %2.2f ms’ % (method.__name__, (te – ts) * 1000))return rt
return wrapper
“`単純に、メソッドの前後でunix時間を取得して差分を表示させているだけのプログラムになります。
logに吐き出した
MAMPのPHPのexec()からpython3を簡単実行。
MAMPのpythonはversion2なので、ずっとこの壁にぶつかってたんですが、
“`php
$command = “python test.py”;
exec($command, $output, $return_var);
“`python→python3でできました。意外と簡単でした。
“`php
$command = “python3 test.py”;
exec($command, $output, $return_var);
“`
python3でyamlファイルを読み込む
yamlファイルは、設定ファイルに使われることが多いようです。
“`yaml:config.yaml
hyperparameterA:
name: ‘ModelName_AAA’
param1: 1
param2: 2
hyperparameterB:
name: ‘ModelName_BBB’
param1: 3
param2: 4
“`“`python:test.py
import yamlwith open(‘config.yml’, ‘r’) as yml:
config = yaml.safe_load(yml)print(‘— A —‘)
print(‘name: ‘, config[‘hyperparameterA’][‘name’])
print(‘param1: ‘, config[‘hyperparameterA’][‘param1’])
print(‘param2: ‘, config[‘hyperparameterA’][‘param2’])
print(‘— B —‘)
print(‘name
python from import*使い方を解説
# python from import*使い方を解説
### importとは、別のファイル(モジュール)に記載されたpythonコードを取り込む機能のこと。
以下のようなファイルamod.pyがあるとする
def a_method():
pass
a_var = None別のファイルbprog.pyでは、以下のようにamod.pyのメソッドや変数を参照できる。
pythonには、公式、サードパティ製のモジュールが多数存在し、多様な機能を提供している。
プログラムの冒頭でモジュールをインポートすることでそれらモジュールを活用できる。「from import *」の意味は?
上述のように、. , . のような記法で、モジュールのメソッドや変数を参照できます。
さらに、 fromimport , from import という記法を用いると、モジュール名を省略できるようになります。
from amod import a_m
torch.Tensor 後、日付情報の復元結果が微妙にずれる
# サマリ
– 日付情報の整数値をDL(`torch.Tensor`)に通したあと、復元すると微妙にずれる現象の概説
– 微妙にズレた日付を復元するサンプルを提供## 環境
– jupyter notebook
– たぶん、Colab でも動くと思う
– pytorch: 1.7.0# 現象
## 準備
“`python
import numpy
import pandas
import torch
“`“`
index_date = pandas.date_range(“2016-01-01”, “2018-12-31”)
index_dateDatetimeIndex([‘2016-01-01’, ‘2016-01-02’, ‘2016-01-03’, ‘2016-01-04’,
‘2016-01-05’, ‘2016-01-06’, ‘2016-01-07’, ‘2016-01-08’,
‘2016-01-09’, ‘2016-01-10’,
…
matplotlibを使ったpythonジョブでsshサーバーを抜けたあとでもエラーが出ないようにbackendをうまく切り替える
# エラーになる条件
以下のmatplotlibで図を保存するpythonコードを考える。
“`py:check.py
import time
import matplotlib
import matplotlib.pyplot as plt# あとでsshサーバーを抜けるための猶予
time.sleep(10)print(matplotlib.get_backend())
fig = plt.figure(figsize=(3.0, 3.0))
plt.plot([0, 1, 2, 3], [0, 1, 2, 3])
plt.savefig(“hoge.png”)
“`このコードを
“`console
$ python3 check.py
$ python3 check.py $
“`のように普通にフォアグラウンド、バックグラウンドで実行しても問題なく図は保存される。
しかしながら、sshサーバー上で次のようにバックグラウンドジョブで投げたあとにサーバーを抜けるとtkinterのdisplay周りのエラーで落ちる(sshの-Xや-Yオプション関係なく
指定した拡張子を持つファイルを調べて、ファイル名の配列を返すメソッド
###1. 定義したメソッド
“`Python:Python
def get_ext_matching_file_names(ext_pattern_list, search_directory_path) :
file_names_list = os.listdir(search_directory_path)
# 上記のいずれかの拡張子を持つファイルのファイル名を格納する配列を用意
available_filename_list = []
# 上記のいずれかの拡張子を持つファイルのファイル名を配列に格納する
for file_name in file_names_list:
ext_check_result = []
for ext in ext_pattern_list:
boolean = ext in file_name
ext_check_result.append(boolean)
if True in ext_check_result:
Python、LINEbot【番外編】~もしも赤ちゃん服のお店をしていたら~
#経緯
前回Python、Herokuを用いたLINEbot(オウム返し)を作成してみた!
よろしければそちらの記事も読んでいただければ幸いです!
[PythonとHerokuでLINEBOTを作ってみた](https://qiita.com/adgjmptw0/items/8c0c99b118a5612f29eb)そこで更に調べてみるとLINEdevelopersを調べていくとたくさん遊べると感じたので少しだけアレンジしたものを作ってみました。テーマは何でもよかったのですが、今年赤ちゃんが生まれたので「赤ちゃん服のお店」だったらにしました(笑)
※今回はホームページありきの内容を想定しております。
#LINEの編集
###基本設定
LINEdevelopersの基本設定からLINEbotのアイコンや挨拶メッセージを編集します。
![スクリーンショット 2020-11-27 122144.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/603568/c257f3d7-dbca-1941-3d87-c
pythonの if __name__ == ‘__main__’:は何のためにあるのか。
#pythonの if __name__ == ‘__main__’:は何のためにあるのか。
一言で言うと、if __name__ == ‘__main__’:はこのpythonファイルが「pythonファイル名.py」と言うふう実行されているかどうか」を判定するif文。
#以下の hello.py という if __name__ == ‘__main__’のないPythonファイル を先に見ていきましょう。
“`python
def main():
print(“Hello”)main()
“`この hello.py のように if __name__ == “__main__” 無しでも、 python hello.py とすることで「Hello」と表示するPythonファイルは作れます。
“`bash
$ python hello.py
Hello
“`ですがこの hello.py の場合、外部から import hello と hello.py をインポートした際にも 「Hello」と表示されてしまいます
“`python
import
【@デコレータ使用篇】Pythonの関数を辞書(dict)のValueに格納して、Keyに応じた関数を呼出す
__前回__の__記事[「Pythonの関数を辞書(dict)のValueに格納して、Keyに応じた関数呼出しをする方法」](https://qiita.com/Afo_guard_enthusiast/items/3d6d1c7398f6cfef05c5)__の続編です。
###( 参考にした書籍 )
__(書籍)Julien Danjou(著)『Python ハッカーガイドブック』*pp.142-143*__所収のサンプルコードを拡張しました。“`Python3:iPython(Python3.9.0)
functions_dict = {}def register(f):
global functions_dict
functions_dict[f.__name__] = f
return f@register
def sample_func1():
return ‘bar’print(functions_dict[‘sample_func1’])
# 実行結果
python アンダースコアに関して
python のアンダースコアの位置について
アンダースコアの位置 例
アンダースコアのみ `_`
先頭に1つのアンダースコア `_foo`
末尾に1つのアンダースコア `foo_`
先頭に2つのアンダースコア `__foo`
先頭と末尾に2つずつのアンダースコア `__foo__`
途中に1つ以上のアンダースコア `foo_bar_baz`, `10_000_000`アンダースコアのみの場合は、必要のない値(または一時的な変数)の代入先として使用される。
例えば以下のようにfor文でインデックスへのアクセスが不要な場合や
“`py
for _ in range(47):
print(‘Hello, world’)
“`必要のない値や返り値の代入先として使われる
“`py
temp_list = [0, 1, 2, 3]
a, b, _, _ = temp_list
print(a)
# 0
print(b)
# 1
print(_)
# 3
# 3次元座標を取得する関数でx軸だけ必要な場合
x, _, _ = get_coordinate(area)
数行で簡単 Pythonでwebサイトから情報取得
#初めに
こんにちは、rickyです。
今回はPythonのLibraryであるBeautifulSoup(以下bs4)を用いて簡単にWebサイトから情報を取得する方法(構文解析)をご紹介します。
この知識を利用すればニュースサイトから必要な情報だけを取得することができます。
この記事ではQiitaのURLからトレンドを所得してみます。
まずはソースコードからです。#Qiitaからトレンド取得のソースコード
“`Python
import requests
from bs4 import BeautifulSoupurl = “https://qiita.com/”
html = requests.get(url)soup = BeautifulSoup(html.text, ‘html.parser’)
for trand in soup.find_all(class_=”tr-Item_title”):
print(trand.text)
“`#補足
はじめてbs4とrequestsを使う場合はpipでインストールしてください。“`
pip
LINEでyahoo天気から好きな地域の天気を通知してもらおう!~PART3~
#前回までの流れ
前回まで行ったこととしては、yahoo天気からスクレイピングで全国地域の天気情報のURLを取得してファイルに書き込むということを行ってきました。この回で一旦、自分が作成したコードについて全てまとめて説明できればと思います。
では早速行きましょう!#LINEの登録
「[PythonでLINEに通知を送る](https://qiita.com/hiro-abe/items/e42f857bd6b40bc178a3)」という記事での説明が非常にわかりやすいので引用させていただきます。#地方一覧と必要な関数の設定
これまでのPARTで取得してきた地方名を表示してみましょう。“`python
import pandas as pd
#DB読み込み
print(“どこの天気が知りたいですか?”)
weatherDF = pd.read_csv(“./database.csv”, encoding=”cp932″)#地方一覧の表示
chihouList = []
for chihou in weatherDF[“地方”]:
if not chihou i
AutomatorでPython3を使う時にハマるポイント
##はじめに
Automatorを使用してPython3を動作しようとしている方がハマりやすいエラーを解説していきます。閲覧しているあなた様の助けになることをお祈りしております。ご質問等も歓迎です。##初学者が必ずハマるエラーを紹介する
何も知識がないままAutomator開いていつものbashだと思い脳死状態でこう書きがちです。
![スクリーンショット 2020-11-26 10.44.23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/328076/18ca19c4-e689-99bc-2888-7572302c3463.png)
しかしながらこれでは実行できません。以下のエラーが発生します。
“`アクション“シェルスクリプトを実行”でエラーが起きました: “-: python3.9: command not found”“`
“`-: python3.9: command not found“`
![スクリーンショット 2020-11-26 10.44.31.png](https://
[Python + Tensorflow2] 安定した機械学習環境構築
#概要
現時点(2020/11/26)で安定動作する機械学習環境を構築していきます。
具体的には、
– pyenv導入(macOS, Linuxのみ)
– Miniconca導入
– 機械学習に役立つパッケージたちの導入
の手順で進めていきます。
Tensorflow は NumPy などの他パッケージに依存しており、相性の良いバージョン同士でないと警告文などが頻発します。
この記事は、そのようなバージョン情報等の備忘録です。記事中で紹介する実行環境とパッケージ(一部)は以下のとおりです。
| OS | Shell | Python | Tensorflow |
| —- | —- | —- | —- |
| Windows10 | Anaconda Prompt | 3.7.9 | 2.1.0 |
| macOS (intel) | bash, zsh, fish | 3.7.9 | 2.0.0 |
| Linux (Ubuntu) | bash, zsh, fish | 3.7.9 | 2.2.0 |#環境構築
## Windows の場合
内包表記の書き方【Python】
この記事では、
**内包表記の書き方**
について書いていきます。## 内包表記とは
内包表記とは、リストや辞書などののループ処理をシンプルに記述できる記法です。[式 for 任意の変数名 in イテラブルオブジェクト]
の式で表されます。
## 使い方
まずは、random.randintで10個の1~100の要素を持ったリストを作ります。“`python
import randoms = []
for _ in range(10):
x = random.randint(1, 100)
s.append(x)
“`次にリストsのすべての要素を3倍にする記法です。
for文と比較してみます。“`python
#for文
s_10x = []
for data in s:
s_10x.append(data * 3)#内包表記
s_10x = [data * 3 for data in s]
“`一行でかけるのでだいぶすっきりしているので見やすいと思います。
また、処理速度も早いのでなるべく内包表記を使用する方が良いと
毎朝起こしてくれる彼女ができた。
### 唐突ですが、彼女ができました。
はい。嘘です。ごめんなさい。今回は、[Line Notify](https://notify-bot.line.me/ja/)を使って毎朝指定した時間に、その日の予定を教えてくれる『彼女みたいな存在』のBotを作りました。
![IMG_8606.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/415015/2d7ac38e-d21f-0706-67a0-f4ddf0a7a078.jpeg)# 0. アイディアと開発について。
アイディアに関しては、スタバから家に帰ってる途中に思いつきました。
帰宅してそのまま(手洗いうがいはしました!!)開発をはじめました。### プログラミング言語
言語に関しては、Pythonを採用しました。
採用理由としては、サーバレス(Lambda)で実装したかったのと前日にPythonを書いており、気分がPythonだったからです。### 使用したサービス
開発環境: [Cloud9](https://aws.amazon.
スクレイピング時にhtmlファイルの文字コードを判定する
## 概要
まとまったページ群をスクレイピングしたい時、– 複数のサイトをスクレイピングしようとするとそれぞれ文字コードが違う
– 同じサイトでもサイトによっては各ページで文字コードがバラバラみたいなケースがある(私はどちらもあった)
ので、ページごとに文字コードを判定する方法を書いておく。## 方法
文字コード判定のライブラリである`chardet`や高速な`cchardet`を使うのも有効だが、これらは判定する文字列が充分に長くなければ精度が出ないこともある。
そういったページでも精度を担保したければ、htmlの文字コード指定を見るのが良さそうに思えたので、今回はその方法。“`python
# https://example.com に対してリクエスト
res = requests.get(‘https://example.com’)
# レスポンスのバイト列が返ってくる
byte_html = res.content# charset=??の形で書かれた文字コードを判定するため、一旦バイト列をdecode
tmp_decoded = byte_html.
Pythonの関数を辞書(dict)のValueに格納して、Keyに応じた関数呼出しをする方法
##1. メソッド(関数)を宣言する
“`Python3:Python3
def sample_func_1(text : str) -> str:
add_text = “追加した文字列”
return (text + add_text)def sample_func_2(text : str) -> str:
add_text2 = “追加した文字列バージョン2”
return (text + add_text2)“`
##2. 辞書型(*dict*)オブジェクトの*Value*に、関数を括弧を付けずに記述する
“`Python3:Python3
func_dict = {
‘label_1’ : sample_func_1,
‘label_2’ : sample_func_2
}
“`##3. 辞書型オブジェクト[*Key*ラベル名]()で、関数を呼び出して実行する
辞書(*dict*)のvalue値として、格納されているのは、関数(メソッド)オブジェクトそのものです。
そのため、関数(メソッド)を実行するには