- 1. MacBook Pro (14-inch, 2021)がきたー!セットアップを実施
- 2. 【物体検出】Google ColabでYOLOv5で電車の車両形式判定モデルを自作する
- 3. 【M1 Pro/Max対応】M1 Mac環境構築ベストプラクティス
- 4. Python 3.8.10におけるCaboChaの環境構築 windows版
- 5. matplotlib と seaborn を日本語化する(Ubuntu)
- 6. キリル文字をローマ字に変えるパーサが存在しなかったので作ってみた。
- 7. PyMongoでMongoDB Atlasに接続するとSSL: CERTIFICATE_VERIFY_FAILED
- 8. CherryPy
- 9. 【Django】フォロー・フォロワー機能を実装してみた
- 10. PythonからREDMINEのWIKIにアクセスする方法の検討
- 11. ロジスティック分布間のKLダイバージェンスを求めてみた
- 12. FastAPIで作るWebアプリ – validation
- 13. djangoの可変長引数についてまとめてみた
- 14. OpenCVで複数の画像に一括で線を引いて、絵や写真の構図を効率的に分析する方法【Python】
- 15. 自分による自分のためのクラス理解
- 16. discord.pyでコマンドを組み込む方法
- 17. [M1Mac]TensorFlow実行環境の構築
- 18. statsmodelsによる直交の意味と効果
- 19. 移動平均のコーディングとstatsmodelsを使った回帰モデルの構築と予測
- 20. djangoのmodelFormクラスについてまとめてみた
MacBook Pro (14-inch, 2021)がきたー!セットアップを実施
今回の記事はプログラムコードは含まれていないが、今の所問題なく動いていることを報告するためにアップした。
2021年10月19日、Apple storeで注文したMavBook Pro (14-inch, 2021)が、10月27日、到着した。プロセッサは Apple M1 Pro、メモリは 16GB、ストレージは 512GB SSD。税込み ¥239,800 也。高い! OSは、macOS Monterey (Version 12.0)。初期設定後、即座に、12.0.1 にアップデート。
第一印象は、M1 MacBook Airと比べて、厚いし重い。M1 MacBook Air と同じ環境を作るべく、ソフトをインストールしテストランをかけたが、問題なく動く模様。
ただし、気になることが。M1 MacBook Air で作成した Python プログラムを実行し、処理時間を計測したところ、MacBook Proのほうが若干遅い。まあ、YouTube で公開されているベンチマークテストをみても、シングルコアでのスコアはほぼ同じ(Pro のほうが若干スコアは高い)なので、しょうがないか
【物体検出】Google ColabでYOLOv5で電車の車両形式判定モデルを自作する
#はじめに
任意のデータセットで物体検出のモデルを作成する手順について備忘録としてまとめました。
今回はGoogle ColabでYOLOv5を使用して物体検出モデルを作成しますので、Googleアカウントがあれば誰でも簡単に試すことができます。なお、ローカル環境でのモデル作成は以前の記事を参照してください。(参考記事)ローカル環境でのYOLOv5モデル作成
https://qiita.com/hkwsdgea_ttt2/items/ccac4cec24a3799df8f3
#成果物
以下のように動画または画像から電車を抽出して、車両形式を判定するモデルを作成します。
今回は一般型(E231,E233など)、特急(E257,E353など)、機関車(EH200,EH500など)など14種類の車両形式を対象とします。![IMG_5067 (1).jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1559455/69bda2bd-efad-cf4b-8ca7-1c212d7a8ba2.jpeg)
【M1 Pro/Max対応】M1 Mac環境構築ベストプラクティス
# はじめに
2021/10/26にM1 Pro/Maxを搭載したMacBook Proが発売され、現在環境構築をされている方も多いかと思います。一方で、Pro/Maxも含めた**M1 Mac**はIntel Macと同じ方法でセットアップできないツールが多く、また公式未対応時のイレギュラーなセットアップ方法の記事がネット上に多く存在するため、**どのセットアップ方法が正しいのか判断するのが非常に難しい**状況となっています。
![独自インストール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/a6953011-924a-8d9b-8d63-c1fce4b6bad9.png)
そこで今回、私が調べた範囲で**現時点でのベストプラクティスと思われる方法**をまとめてみました。方法選択には主観も含まれているため、**「こちらの方が良い!」**という方法をご存じであれば、気軽にコメント頂けるとありがたいです
## 更新情報
本記事は**2021/10/30時点**での内容となります。
Python 3.8.10におけるCaboChaの環境構築 windows版
# はじめに
初投稿です。
~~2021/10/30時点でCaboChaの環境を作成したところ、参考になる記事は複数あるものの、かなりの苦労を要した為記事にしました。~~
記事を書いている途中で、苦労した部分をすべて吹き飛ばす簡単な方法が発見されたので前の記事はボツになりました。
本記事では、MeCabのインストールからCaboChaの環境作成までを扱います。# 環境
– Windows 10
– Python 3.8.10 (32bit)# Python 64bit版について
MeCabの使用は可能なようですが、CaboChaの使用が不可能なようです。
大人しく32bit版をインストールしてください。
32bit版をインストールする際には、”PATHを通す”のチェックボックスにチェックを入れてください。# MeCabのインストール
[MeCab公式](https://taku910.github.io/mecab/)より、MeCabのダウンロードを行います。
今回はWindowsなので、自己解凍インストーラを選択してください。
私は、mecab-0.996.exeを選択し
matplotlib と seaborn を日本語化する(Ubuntu)
# 概要
Jupyter で matplotlib や seaborn を使っているとき、ラベル名などに日本語を入力すると、 □ のお豆腐として表示されたりします。この場合の対処法を記載します。
# 環境
2021/10/30
matplotlib 3.3.4
seaborn 0.11.1
ubuntu 20.04.3# 対処法
## 日本語フォントをインストール
“`bash:bash
sudo apt install fonts-ipaexfont
“`## matplotlib の設定ファイルを変更
matplotlib の設定ファイルのパスを表示します。
“`python:python
import matplotlib as mpl
mpl.matplotlib_fname()
“`“…/site-packages/matplotlib/mpl-data/matplotlibrc“の様なもののはずです。
vi で編集します。“`bash:bash
vi …/site-packages/matplotlib/mpl-data/
キリル文字をローマ字に変えるパーサが存在しなかったので作ってみた。
# 目的
ローマ字からキリル文字変換器はWeb上に存在したがその逆のキリル文字をローマ字に変えるパーサが存在しなかったので作ってみた。“`russian.py
murnes_pursey_rossita={
“А”:”a”,
“а”:”a”,
“Б”:”b”,
“б”:”b”,
“В”:”v”,
“в”:”v”,
“Г”:”g”,
“г”:”g”,
“Д”:”d”,
“д”:”d”,
“Е”:”e”,
“е”:”e”,
“Ж”:”zh”,
“ж”:”zh”,
“З”:”z”,
“з”:”z”,
“И”:”i”,
“и”:”i”,
“Й”:”y”,
“й”:”y”,
“К”:”k”,
“к”:”k”,
“Л”:”l”,
“л”:”l”,
“М”:”m”,
“м”:”m”,
“Н”:”n”,
“н”:”n”,
“О”:”o”,
“о”:”o”,
PyMongoでMongoDB Atlasに接続するとSSL: CERTIFICATE_VERIFY_FAILED
# 環境
* OS: Windows 10 Pro 21H1 (19043.1320)
* Python: 3.8
* PyMongo: 3.12.1# 状況
Pythonのライブラリである**PyMongo**を使って、MongoDB Atlasで作ったクラスタに接続しようとすると、下記のような例外が発生し、接続することができませんでした。
“`
pymongo.errors.ServerSelectionTimeoutError: hogehoge-shard-00-00.usai2.mongodb.net:27017:
[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: certificate has expired (_ssl.c:1124)
“`# 解決策
StackOverflowにて、解決方法が回答されていました。
https://stackoverflow.com/questions/69397039/pymongo-ssl-certificate-verify-failed-ce
CherryPy
python の web フレームワークとはなんなのか。
なんのことか、よくわかりませんからやってみましょう。#CherryPy web framework
https://docs.cherrypy.dev/en/latest/install.html
インストールは pip で。
CherryPy supports Python 3.5 through to 3.8.
“`terminal
pip install cherrypy
“`もしくは github から git する方法でもいいようです。
この場合は、別途 git をインストールする必要があります。“`terminal
$ git clone https://github.com/cherrypy/cherrypy
$ cd cherrypy
$ python setup.py install
“`**running webserver**
![IMG_20211029_210959_553.jpg](https://qiita-image-store.s3.ap-northeast
【Django】フォロー・フォロワー機能を実装してみた
#はじめに
今回はSNSに必須となるフォロー・フォロワー機能の実装について備忘録を残していきます。
色々と書いておりますが、参照したサイトと本記事で書いた内容で不一致、もしくは勘違いしている点などがありましたら是非ともコメント欄でご指摘をお願いします。#開発環境
#### OS
– Windows10#### 開発言語
– Python 【version = 3.9.2】#### フレームワーク
– Django 【version = 3.1.7】#完成イメージ
フォロー・フォロー解除はタイムライン上に表示されたユーザーアイコンをクリックする必要があります。
![フォロワー①.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1608896/583f57aa-863a-4fda-3230-c754e4c939c5.png)
上の画像はタイムライン上に表示される、他ユーザーが投稿したツイートになります。
アイコンをクリックし、以下のユーザープロフィール画面(detail.html
PythonからREDMINEのWIKIにアクセスする方法の検討
# 背景
REDMINE-WIKIについて、プログラミングで操作する方法を調べている。
(話の経緯は下記参照)https://qiita.com/EasyCording/items/c2c3a5850941f45d1317
今回はpythonからREDMINEのWIKIにアクセスする方法の検討
## 前提
ライブラリはpython-redmine https://python-redmine.com/resources/wiki_page.html
REDMINEには接続済みとする(コードは省略)## フロー
* プロジェクトを全部引っこ抜く read_project
* wikiを全部引っこ抜く read_wikis —> この時点では中身は取れていない!!!
* wikiの記事を取りに行く get_wiki_byname —> ここでやっと取りに行ける## つまづいた点
以下のメソドの違いでつまづいていた。。。(こんな名付けでは、誤解するのも当然である)
.filter —> これはリソースセット(wiki_pa
ロジスティック分布間のKLダイバージェンスを求めてみた
# はじめに
ロジスティック分布のKLダイバージェンスを計算してみたいと思います。ロジスティック分布については[こちら](https://ja.wikipedia.org/wiki/%E3%83%AD%E3%82%B8%E3%82%B9%E3%83%86%E3%82%A3%E3%83%83%E3%82%AF%E5%88%86%E5%B8%83)を参考にしました。まずはロジスティック分布について紹介し、その後、2つのロジスティック分布のKLダイバージェンスを計算していきたいと思います。
# ロジスティック分布
ロジスティック分布は連続確率分布の一つで、その累積分布関数がロジスティック関数のものです。ロジスティック分布には2つのパラメータ$\mu,s$があり、$\mu$は実数全体、$s$は正の実数に値をとります。確率変数$X$の確率分布関数$F$は
“`math
F(x;\mu,s)=\frac{1}{1+\exp\left(-\frac{x-\mu}{s}\right)},~~x\in\mathbb{R}
“`と表されます。ここで、$\exp(x)$は$e^x$と同じ
FastAPIで作るWebアプリ – validation
今回はRequest パラメータのバリデーションを取り上げます。パスパラメータとクエリパラメータです。Swagger UIとともに、FastAPIでの開発効率を上げてくれるものです。
【過去記事】
[Python Asyncio入門](https://qiita.com/sand/items/0e445a13d81d20ea33c3)
[Aiohttpで作るSimple Web Server – Qiita](https://qiita.com/sand/items/971c851598ff59c1c905)
[Starletteで作る Simple Web Server – QIita](https://qiita.com/sand/items/dd622ce4f9249399974c)
[FastAPIで作るWebアプリ – 基本](https://qiita.com/sand/items/bba0913fe4504c612b3a)
[FastAPIで作るWebアプリ – validation](https://qiita.com/sand/items/8506853238882
djangoの可変長引数についてまとめてみた
本日のお題
–
今回は、djangoの可変長引数についてまとめます。可変長引数とはその名の通りで、引数の数に自由度があるもののことを言います。
通常の関数は第一引数が名前、第二引数が年齢などと何番目になんの引数が来るのかを明確にします(例1)。
このため、引数の位置が逆になったり数が合わなかったりするとエラーになりますよね。
“`python:例1
def info(name, age):
print(“私の名前はn” + name + “です。年齢は” + str(age) + “歳です。”)
“`
可変長引数に関しては数の指定がないので、いくつ引数を与えても処理をしてくれます。目次
–– 可変長引数その1〜*args
– 可変長引数その2〜**kwargs可変長引数その1〜*args
–
可変長引数の一つ目は*argsです。正確にいうと*が先頭についていればなんでも良いのですが、この引数を用いて定義された仮引数は可変長となります。
また、呼び出し時には、この部分に代入された引数全てがタプルの形で渡されます。
“`python
def prin
OpenCVで複数の画像に一括で線を引いて、絵や写真の構図を効率的に分析する方法【Python】
「OpenCVで複数の画像に一括で線を引いて、絵や写真の構図を効率的に分析する方法」の忘備録です。
#構図は補助線を引くと分かりやすい
![GridLine_chihiro042-1024×554.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/486558/e4c45aa1-bfe8-f732-820b-48824b4bdcc6.jpeg)
「**構図**」は、絵や写真の”**良さ**”に大きく関わる要素です。
たとえば、構図には
– **三分割構図**:画面を縦と横に3分割し、その交点に被写体を配置する構図。バランスが良くなる。
– **日の丸構図**:被写体を中心に据えた構図。分かりやすく、安定感が出る。
– **対角線構図**:被写体を画面の対角線上に配置する構図。画に躍動感が出る。など様々な種類(他にも色々あります)と、期待される効果があります。
つまり、適切な「**構図**」を選択すると、作品の説得力が増すわけです。
たとえば、こちらの写真。
自分による自分のためのクラス理解
##はじめに
pytorchによる分類をトライする中でClassが出てきた。
テンプレートがあるのでわかってなくても何とか(?)なるかもしれないけど、今後のために少し学んでおこうと思った。
感覚をできるだけ図に落とし込んで少しでもモヤモヤを晴らしていく。##そもそもClassとは何ぞや?
本やネットの中に、「オブジェクトの設計図」という表記で説明されていることがある。またオブジェクトは関数で定義されるので、データとして存在するだけでなく、自身が動くこともあるとのこと。
上の説明でも雰囲気はつかめるが、まだイメージしにくいので図でまとめてみた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1259951/53c7a1ce-42be-54fb-0ff0-0430029b08c3.png)
人間という入れ物の中に、その人を構成するデータが入っている。例えば趣味は「○○すること」というように動作で記録されているので、趣味をやりなさいと指示したら動く感じで捉えられるかも。##initに
discord.pyでコマンドを組み込む方法
# discord.pyでcommandを使う
disocrdでbotのコマンドを組み込む方法として簡単なのは組み込まれている`on_message()`を使っている人も多いかと思います.しかし`on_message()`を用いている場合,条件分岐でやや工夫が必要になることがあり,可読性が下がると思います.そこでdiscordpyが用意している拡張を利用してこの記事ではコマンドを組み込んでいこうと思います.## もともとの`on_message()`を利用した場合
“`
import discordTOKEN = ”
client = discord.Client()@client.event
async def on_message(message):
if message.author.bot:
return
if message.content == ‘!good’:
await message.channel.send(‘evening’)client.run(TOKEN)
“`## discordの拡張
[M1Mac]TensorFlow実行環境の構築
#はじめに(+背景)
今回の記事の内容は、タイトルの通り**M1 Mac**で**TensorFlow**を実行するための環境構築です。
筆者の場合はBert(Keras Bert)を使いたかったのですが、KerasのバックエンドとしてTensorFlowが動くため先ずはTensorFlowを使えるようにする必要がありました。
しかし、未だにM1 Mac上での環境構築は引っかかる点が多く今回も大変苦労しました。
四苦八苦しながらも、一通り問題なく使える環境構築が出来たので今回はそちらをこの記事にまとめます。#目次
– 使用機器&前提条件(Pre Requirements)
– 使用Macのスペック&OSのバージョン
– TensorFlowをインストールするための仮想環境の構築
– pyenvの導入
– miniforgeの導入
– miniforgeを利用した仮想環境の構築
– TensorFlowのインストール
– TensorFlow-MacOSの設置
– その他+テスト
– その他主要ライブラリの設置
– MNIST
statsmodelsによる直交の意味と効果
線形代数でも、線形回帰でも直交という概念は重要です。しかし、教科書などでいくら強調されてもなかなか時間できません。そこで実験計画法の例を用いて説明してみたいと思います。
# 2水準4因子の実験計画
2水準(1,2)、3因子(A,B,C)の実験を行う場合、実験の組み合わせは全部で$2^3=8$通りある。すべての水準の組み合わせについて実験を行うことが望ましい。そのような実験を完全実施要因計画という。その際には直交表を用いた実験が良く行われる。つぎの表はL8直交表で、列にそれぞれ1つの因子を割り当てる。この対応付けを割付という。直交表は名前の通り、行列の直交という性質を利用している。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/267055/7c22b1e7-f027-41a4-6b8a-1dbe5c7e8486.png)
A,B,Cの3因子に列を割り当てるのに、7列あるのは変だと思うかもしれない。これは主効果と交互作用効果を考慮に入れているからである。それぞれの要因の効果を主効果、
移動平均のコーディングとstatsmodelsを使った回帰モデルの構築と予測
前回は、時系列データにて連番を振っただけの簡単なダミー変数や1日前のデータを元にしたTime Lagで単純な線形回帰を扱ってきました。
今回は主に移動平均を中心に短期的な要因や季節性の要因を排除したりするなどのアプローチを元に機械学習を行っていきます。
前回同様、Kaggle公式のチュートリアルに準拠した形で進めます
[Trend](https://www.kaggle.com/ryanholbrook/trend)
(今回データの自作は厳しいのでKaggleのデータを用います。
そのため、ここではデータの添付などができないので実際に同じことをしたい場合はこちらからダウンロードやKaggleのnotebookで行ってくださいませ。)今回ちょっと変な意訳をしている可能性があるので、困った時はやはり参照元の確認をおすすめします。
# Trend(トレンド)とは?
トレンドとは、時系列データが持つ永続性や長期間での変化を平均値などから表現する方法みたいなものです。
トレンドは期間の幅が一番大きいため、時間として一番遅く、一番長い時間軸の重要度(カラムと置き換えてもいいと思います)と
djangoのmodelFormクラスについてまとめてみた
今回のお題
–
今回はdjangoのformクラスについてまとめます。Ruby on Railsではフォームタグ(正確にはformタグヘルパー)にmodelオプションというものがあるのですが、同じようなものはないかと探していたところmodelFormクラスにたどりつきました。
同じような用途で使えるものとしてformクラスというものもあるらしいのですが、そちらについては機会があればまとめます。
目次
–– 基本方針
– forms.pyの編集
– views.pyの編集
– テンプレートの編集
– おまけ〜formModelクラスとformクラスの違い基本方針
–
まずは基本方針をざっくりと話します。djangoにはmodelFormクラスというクラスが最初から用意されています。
なのでこれを継承させてformクラスを新たに作成し、そこに表示したい内容をフィールドとして持たせればビューに表示することができます。
言葉だけではよくわからないと思うので、早速実例に移ります。
forms.pyの編集
–
まずはアプリケーションフォルダの直下にforms.pyを新規作成