- 1. 初心者向け Pythonanywhereを使ってみよう
- 2. Djangoのcreatesuperuserで「AssertionError: database connection isn’t set to UTC」発生
- 3. 深層学習を用いたJ-POPの歌詞の分散表現
- 4. Tensorflow(Keras)で基本の画像分類モデル構築
- 5. JupyterNotebookを想定した機械学習の予測モデルの全体像(LightGBM + Optuna)
- 6. 【Python】スクレイピングしたデータで、日本地図を爆速で塗り分けるためのTips
- 7. Linuxのnlコマンドに相当するコードをPythonで実装してみた
- 8. S3にオブジェクトをアップロードして引数をlambdaに送りたいとき
- 9. venv を condaっぽく使う
- 10. フーリエ級数(Fourier Series)から群論(Group Theory)へ
- 11. yukicoder contest 311 参戦記
- 12. Algorithm | 二分探索をPython3で解説(例題あり)
- 13. シリアルポートからくるデータをリアルタイムにプロットする
- 14. matplotlibで生成したグラフを直接エクセルに出力する方法
- 15. Python – FizzBuzz
- 16. DjangoをDEBUG=FalseでHerokuにデプロイするとServer Error(500)が出てきて悩んでいる人向けの小ネタ
- 17. Pythonパッケージ中にsymlinkを含めたい
- 18. 初心者による初心者のためのDiscord.py
- 19. ネイティブモジュールを含む Python プロジェクトの開発イテレーションを改善したい
- 20. tf.data、TFRecordsを使った画像読み込み (tensorflow 2.6.0~)
初心者向け Pythonanywhereを使ってみよう
#目的
Pythonで書いたWebプログラムを簡単にインターネット環境で使えるようになる「Pythonanywhere」の使い方、主に自分が書いたコードをデプロイして公開するまでのやり方について自分のためのメモ書きとして残すことであります。
#環境
Pythonanywhere上の環境は以下の通り
- Python==3.8
- Django==3.2.3
PythonanywhereはPythonのバージョン指定ができます。Djangoなど必要なライブラリはConsoleからバージョンを選択してinstallできます、ってかHerokuみたいなrequirements.txtが使えるかどうかよくわからんから、自分の環境で必要なライブラリを個別にinstallしとかなきゃなりません。(ゴニョゴニョすればrequirements.txtも使えるかもしれないけど、確認してません)
##「Pythonanywhere」というサービス
Djangoのcreatesuperuserで「AssertionError: database connection isn’t set to UTC」発生
##概要
Django + psycopg2 で posgreSQL に接続している。
createsuperuser を実行すると「AssertionError: database connection isn’t set to UTC」が発生し、
スーパーユーザーが作成できない。“`
$ python manage.py createsuperuser
Traceback (most recent call last):
File “manage.py”, line 22, in
main()
File “manage.py”, line 18, in main
execute_from_command_line(sys.argv)
File “C:\Python\Python38\lib\site-packages\django\core\management\__init__.py”, line 401, in execute_from_command_line
utility.execute()
File “C:
深層学習を用いたJ-POPの歌詞の分散表現
# 日本語のベクトル化(分散表現)の実装 – J-POPを題材に
### 動機
– G検定で習った言語の分散表現(ベクトル)に興味を持った
– スクレイピングでデータを取得できたので使いたかった目次
– スクレイピングでJ-POPデータの読み込み
– 自然言語処理(形態素解析、わかち書き)
– J-POPデータで歌詞のベクトル化の実装と問題
– 学習済みモデルを用いた文字のベクトル化
– 歌詞の3Dプロットとクラスタリング
– 課題・改善点## スクレイピングでJ-POPデータの読み込み
歌ねっとから任意の歌手の人気順の歌の歌詞データを取得
データ数:140曲
列:歌手名、歌名、歌詞スクレイピングの詳細については省略
## 自然言語処理(形態素解析、わかち書き)
使用ライブラリ:janome
歌詞データを形態素解析し、名詞と動詞の単語だけ抽出し、単語のリストを構成
関数の定義“`Python
from janome.tokenizer import Tokenizert=Tokenizer()
def extract_words(text):
t
Tensorflow(Keras)で基本の画像分類モデル構築
# はじめに
## 動機
今回画像分類モデルを初めて構築したので、新鮮な気持ちなまま記録を残しておくことは今後のためになるでしょう。## 使用データ
食品画像データで、ソースは忘れました。ごめんなさい。
50種類のラベル付けがされているやつです。## 使用ライブラリ・環境
実行環境は Google Colab Proです。
深層学習ライブラリはTensorflowを使います。
Tensorflow 2.6.0
後は画像処理の基本的な子たち。
importは以下の通り“`Python
import numpy as np
import pandas as pd
import glob
from PIL import Image
import mathimport tensorflow as tf
from tensorflow.python.ops.gen_math_ops import imag
from tensorflow.keras import datasets, layers, models
from tensorflow.python.keras.engi
JupyterNotebookを想定した機械学習の予測モデルの全体像(LightGBM + Optuna)
####目次
– はじめに
– データの前処理
– 学習モデル構築
– 精度の検証
– ハイパーパラメータチューニング
– 学習モデル構築2#はじめに
Pythonや機械学習を学ぶ初級者の人にとっては初めて見るライブラリや、初めて使うメソッドが一度にたくさん出てくるので、コードの記述の目的を整理して振り返れる状態にしておくことはとても大事です。今回はLightGBMのハイパーパラメーターをoptunaでチューニングし、学習モデルを構築するステップについて振り返ります。
![LightGBM_logo_black_text.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1917703/41f40341-d8e2-8561-9c1b-b8c4938dbdeb.png)![optuna-logo.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1917703/1e9629ad-f726-7eac-84cc-d496f5
【Python】スクレイピングしたデータで、日本地図を爆速で塗り分けるためのTips
#はじめに
ふとしたきっかけで、サクッと日本地図を塗り分けたくなる場面がありますよね(多分)ライブラリが非常に豊富な **Python** を使って
**スクレイピング → 日本地図の塗り分け**
のステップを爆速にするためのコツを紹介します。どんな雰囲気の可視化ができるのか、47 都道府県の最低賃金を例に取って、YouTube の動画にしたのでぜひご覧ください。
#
Linuxのnlコマンドに相当するコードをPythonで実装してみた
Linuxの[nlコマンド](https://atmarkit.itmedia.co.jp/ait/articles/1703/30/news024.html)に相当するコードをPythonで実装してみました。
“`test.txt
AAA
BBB
CCC
“`“`nl.py
import sys
if len(sys.argv) > 1:
try:
f = open(sys.argv[1], “r”)
except FileNotFoundError:
print(‘Error: File {0} is not found.’.format(
sys.argv[1]), file=sys.stderr)
sys.exit(1)
else:
f = sys.stdinlines = f.readlines()
f.close()i = 1
for line in lines:
if line == ‘\n’:
continue
print(
S3にオブジェクトをアップロードして引数をlambdaに送りたいとき
今まではS3をトリガーにLambdaを発火させていたのですが、これだと追加の変数を設定することができず、どうすればいいか悩んでいたときに、InvokeInputに渡せばいいことを知りました。
## 参考
https://qiita.com/yukpiz/items/269277a97053237a6980
## go server側
S3にアップロードしたあとに、invokeして変数を渡すようにしました。
“`main.go
package mainimport (
“encoding/json”
“fmt”“github.com/aws/aws-sdk-go/aws”
“github.com/aws/aws-sdk-go/aws/session”
“github.com/aws/aws-sdk-go/service/lambda”
)// これはLambda関数の完了で返すための構造体定義
type Response struct {
Message string `json:”message”`
Ok bool `json:”ok
venv を condaっぽく使う
長いことPython環境の管理には [conda](https://docs.conda.io/en/latest/miniconda.html) のお世話になってきたのですが、最近は [venv](https://docs.python.org/ja/3/library/venv.html) が主流になりつつあるそうです。
主たる理由は標準ライブラリに組み込まれたこと、それから依存関係で不具合を起こしやすかった機械学習ライブラリの多くが、`pip install` で十分解決できるようになってきたことかと思います。そこで、一念発起してvenvへの意向を試みたのですが、condaとの微妙なシンタックスの違いで慣れない部分がありました。
特に、“`shell
python -m venv env/path/name # 任意の場所に仮想環境を作れる
source env/path/name/bin/activate # アクティブ化するときはパスを入力する
“`のように、アクティブ化するときにパス名を入力するのが面倒だな、と思いました。
`conda`だと
フーリエ級数(Fourier Series)から群論(Group Theory)へ
群論の初歩、すなわち**加法群**(Additive Group)設定の話から再出発します。
[【Python演算処理】環論に立脚した全体像再構築①空環と実数環](https://qiita.com/ochimusha01/items/361c1abe1ea8e2540fb9)* まず**自然数集合**$\mathbb{N}$に**加法単位元**(Additive Identity)0を追加した集合Aを用意する。
![image.gif](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fqiita-user-contents.imgix.net%252Fhttps%25253A%25252F%25252Fcdn-ak.f.st-hatena.com%25252Fimages%25252Ffotolife%25252Fo%25252Fochimusha01%25252F20210625%25252F2021062508003
yukicoder contest 311 参戦記
# yukicoder contest 311 参戦記
1時間遅れの参加でAしか解けませんでした.
## [A 1656 Recuperation](https://yukicoder.me/problems/no/1656)
B 日でストレスが A×B になって、それを癒やすのに A×B 日かかるので、合計日数は B + A×B = (A+1)B 日ですね.
“`python
from sys import stdinreadline = stdin.readline
T = int(readline())
result = []
for _ in range(T):
A, B = map(int, readline().split())
result.append((A + 1) * B)
print(*result, sep=’\n’)
“`## [C 1658 Product / Sum](https://yukicoder.me/problems/no/1658)
直感的に A1=x, A2
Algorithm | 二分探索をPython3で解説(例題あり)
## 二分探索とは
二分探索(バイナリサーチ)とは、かんたんにいうと、数字がソートされたリストのなかから、求めたい数を効率的に求めるための手法である。
例えば、次のようなリストがあったとしよう。
“`python
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
“`このとき、このリストから`7`を求めたいとする。
通常は、`0`から前から順番に見ていって探し出す、という手法をとる。このとき、`0, 1, 2,…`とみてくので、探すまでに8回の操作が必要である。
しかし、これを二分探索をもちいることでより効率的に値を探し出すことができる。
二分探索は、まず真ん中の値から探索を開始する。このリストであれば、リストの最小値である`0`と最大値である`9`を足して2で割った数を真ん中の値`mid`とする。つまり、`4`の値が取れる。ここで、求めたい値である`7`がこの値よりも大きいかどうかを判定する。大きければ`left`に値を入れ、小さければ`right`に値を代入する。この操作で1回分である。このときは、`7`は`4`よりも大きいので、`le
シリアルポートからくるデータをリアルタイムにプロットする
# 作ったもの
Pythonの標準機能とMatplotlibとPySerialなどよく使われるライブラリだけで、シリアルポートからくるデータをリアルタイムにプロットしてみました。
![画像](https://raw.githubusercontent.com/aerialist/serial_plotter/main/images/serial_plotter.png)
コードは[GitHubに](https://github.com/aerialist/serial_plotter)。
# なぜ作ったか
Arduinoなどのマイコンにセンサを繋ぎ、測定値をシリアルでパソコンに送り込むことがよくあります。Arduino IDEにはSerialPlotterの機能があるので、リアルタイムに測定値を眺めることがすぐにできてとても便利です。
ところが表示のレンジが勝手に変わってしまうのを止めたかったり、何かしらの計算をしながら表示したかったり。自分でちょっとしたカスタマイズをしてリアルタイムにグラフを眺めたいことがあります。
Instructablesなどをみていると、Pro
matplotlibで生成したグラフを直接エクセルに出力する方法
# 概要
matplotlibで生成したグラフをエクセルに出力する時、自分のローカルにグラフ画像を保存せずにそのままエクセルに出力したい事があると思います。今回は「既存のエクセルファイルに新しいタブを追加し、そこにグラフを出力する」という場面を想定し、上記を実現するコードを書いていこうと思います。
# サンプルコード
“`python
import io
import openpyxlimport matplotlib.pyplot as plt
fig = plt.figure()
# ~~~~~~ グラフを作っていく処理は省略 ~~~~~~~~
# 既存のエクセルファイルを開き、「chart」という名前のタブを追加する
file = ‘path/to/excel.xlsx’
workbook = openpyxl.load_workbook(file)
new_sheet = workbook.create_sheet(‘chart’)# PCのメモリに画像を保存する
img_data = io.BytesIO()
fig.savefig(img_data,
Python – FizzBuzz
“`python
def fb(n):
result = ”if n % 3 == 0:
result = ‘Fizz’
if n % 5 == 0:
result += ‘Buzz’
if result == ”:
result = nreturn result
i = 1
while i < 100: print(fb(i)) i = i + 1 ```
DjangoをDEBUG=FalseでHerokuにデプロイするとServer Error(500)が出てきて悩んでいる人向けの小ネタ
# DjangoがHerokuで動かない
![スクリーンショット 2021-08-27 20.27.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1739706/94446043-64a8-795f-3966-673cee26b63d.png)HerokuにDjangoをDEGUB=Falseでデプロイが成功しても、接続するとServer Error(500)が表示されて悲しい気持ちになってしまい、いやいやながら不安な心を抱いてDEBUG=Trueにしている人(初心者)のための情報です。
私のような英語がよく理解できず、かつ翻訳内容すら正しく読みとる読解力が足りない人間がDjango公式などの文書を読むと、とかく勘違いしたり理解しないままやっちまうのでServer Error(500)を出しがちです。
そんな私がなんとか動かすことに成功した環境設定について、その注意点まとめてみた。
Herokuへのデプロイはコマンドを叩くんじゃなくて、Githubからデプロイする機能を使ってで行ってま
Pythonパッケージ中にsymlinkを含めたい
Pythonパッケージ中にsymlinkを含めたいことがある。
現行の状況では、
– ファイルのsymlinkは実体がコピーされる
– ディレクトリのsymlinkはエラーを起こす(include_package_data)か無視される(package_data)という状況。
どうしてもsymlinkのまま扱いたいことがあると思います。
https://github.com/pypa/pip/issues/5856 で議論されているように見えますが結論が見えない。
https://github.com/cielavenir/distutils_symlink_enabler ライブラリを作ってしまいました。
bdistは非対応ですが、build_pyとsdistであればこれで対応できます。
(ただしWindowsでは確認してません)
初心者による初心者のためのDiscord.py
## 前書き
この初心者による初心者のためのDiscord.pyでは、
Discord.pyを習得したいけどよく分からない!
という人のために、初心者が、初心者のための解説をしていきます。
書き方、使い方、構文などを記載していきます。
この記事を書こうと思った理由は、動くけど情報が古かったり、だいぶ昔に作成された記事がヒットしたりと、最近の記事が少なかったので、先駆者様への恩返しなども込めた記事となっております。
ちなみに初投稿です。至らない部分もあると思いますが、問題点などあれば教えて下さると幸いです。対象:初心者(パソコンのタイピングができて、pythonを触ったことがある程度の人)
##基本構文
まず初めに、Discord.pyとは、Discord BotをPythonで動かすためのライブラリのことを指します。
まず、“`shell:ターミナル
# Windows環境
py -3 -m pip install discord.py
# その他
python3 -m pip install discord.py
“`でdiscord.pyをpythonで使えるよう
ネイティブモジュールを含む Python プロジェクトの開発イテレーションを改善したい
setup.py でビルドする + C/C++ ネイティブモジュールな Python プロジェクトがある.
動かすと不都合があるので .py をいじって修正して再度実行 -> おかしい -> print デバッグ -> … みたいなイテレーションをする.
python ソースコードだけであれば, pip インストール先のファイルを直編集という手もあるが, ネイティブモジュール含んでいて, ネイティブモジュール部分を編集した場合ビルドしなおしが発生.
毎回 `python setup.py install` して動かして… とかだとめんどい.
## とりあえずの方法
`python setup.py build` でネイティブモジュールも含めビルド一式が `build/lib.linux-x86-64-…/` とします. ここにそこにパスを通して動かす.
“`
# ビルドしなおす
(cd; python setup.py build) export PYTHONPATH=
/build/lib.linux-x86-64…:$PYTH
tf.data、TFRecordsを使った画像読み込み (tensorflow 2.6.0~)
チュートリアルとかにある全てnumpy配列に格納するタイプではなく、大規模データなどで使われる、バッチ毎に読み込む方法。
あまり最近のが無かったので、Qiitaで記事にした。
tensorflowは2.6.0を前提。“`python
import glob
import math
import os
from typing import List, Tuple, Unionimport albumentations as albu # 必要に応じて
import tensorflow as tf
import numpy as np # 必要に応じてAUTOTUNE = tf.data.experimental.AUTOTUNE
“`# tf.data
## 画像の読み込み
tf.dataを使う場合、まずは読み込む用の関数を用意する。
簡単に書けば、こういうものになる。“`python
@tf.function(experimental_follow_type_hints=True)
def read_and_preprocess(img_path: tf