- 1. pythonのインストール方法
- 2. SQLAlchemyでmysqlのjson_containsを使うのに文字列で検索する方法
- 3. DatabricksでMLflowを使う② – 実験パラメータとメトリクスの可視化 –
- 4. Raspberry pi – Arduino Uno間のシリアル通信(Python)
- 5. Pythonを使ったフィボナッチ数列
- 6. LightGBMを使って競馬予想で回収率100%を超えるコードを書いた(その2)
- 7. XOR世界で行列のrankを求める(F2上での行列のrank)
- 8. 幅優先探索(BPF)多分理解した(python)
- 9. 機械学習についてのメモ(随時更新)
- 10. [Python] クラスをiterableにする方法
- 11. asyncpg でよくやる操作まとめ
- 12. GPyを使ってガウス過程回帰
- 13. 将棋棋士の高見七段と増田六段をCNNで分類してみた【CNN初心者向け】
- 14. jupyter lab上で画像のラベリングをする
- 15. [Python] UnionFind ABC177D
- 16. OpenCVでスプライトを回転させる
- 17. 犬ですが何か?Django–カスタムユーザーモデルを作成する
- 18. python3の地味なトリビア
- 19. AtCoder Beginner Contest 177 問題C 間違った理由を調べてみた
- 20. VScode+RemoteWSLでWindowsのPython実行環境を作る
pythonのインストール方法
自分用のメモとしてpythonのインストール方法を書き残します。
#MacOS
###パッケージマネジャ(Homebrew)をインストール
“`/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”“`
###pythonをインストール
“`brew install python“`#Windows
###インストーラーをダウンロード
[公式ページ](https://www.python.org/ “公式ページ”)にアクセスしてDownloads->All releasesと進む。使用コンピュータのビット版に応じて、インストーラーをダウンロードする。
###ダウンロード先を指定する。
Custumize install locationを”C:\Python\Python36″と指定する。
SQLAlchemyでmysqlのjson_containsを使うのに文字列で検索する方法
`json_contains`使って文字列で検索しようとしたら少しハマった。
## 成功例
`””`で囲む必要がある。実際mysqlで直接selectするときも`json_contains(fuga, ‘”piyo”‘)`とする必要がある。
“`success.py
from sqlalchemy import funcsearch_str = ‘piyo’
db.session.query(Hoge).filter(func.json_contains(Hoge.fuga, f'”{search_str}”‘))
“`## 失敗コード例
“`fail.py
from sqlalchemy import funcsearch_str = ‘piyo’
db.session.query(Hoge).filter(func.json_contains(Hoge.fuga, search_str))
“`## エラーメッセージ
“`
sqlalchemy.exc.OperationalError: (pymysql.err.OperationalError
DatabricksでMLflowを使う② – 実験パラメータとメトリクスの可視化 –
# はじめに
前回のこちらの記事ではDatabricks上でMLflowを使って機械学習モデルのトレーニングを行った履歴をノートブック上に統合するための方法について書きました。[DatabricksでMLflowを使う① – ノートブック上での実験トラッキング -](https://qiita.com/knt078/items/49a14a83c45f3f501ee7)
Databricksのマネージド型MLflowではUI上でトレーニングモデルのパラメータやメトリクスの比較、モデルのステージングなどを行うことができます。
この記事では実験ごとのパラメータやメトリクスを可視化して比較する部分について書いています。
# 実験ごとのUI画面
前回記事でノートブック上で実験ごとのメトリクスなどを確認した画面から、図中赤枠の部分をクリックします。
![図2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/618791/cc6da995-e758-ac74-1744-e87089408375.png)
Raspberry pi – Arduino Uno間のシリアル通信(Python)
Raspberry pi – Arduino間などでデータのやり取りをしたい、と思って調べてたらでできたものをオブジェクト指向化したやつ。
# Arduino側のソース
## ソース“`cpp:Serial.ino
int n = 12;void setup(){
Serial.begin(9600);
}void loop(){
Serial.println(n);
Serial.write(“Hello World!\n”);
delay(1000);
}
“`
– 一応シリアルモニタで通信ができているか確認する。
– シリアルモニタで通信を確認出来たらシリアルモニタを閉じる。(閉じないと`SerialException`エラーが出るみたい。)
– 通信速度は`9600`に設定
– 数値の送信は`Serial.print`関数、文字列の送信は`Serial.write`関数で行う。(一つにできないのかな?)# Raspberry pi側(Python)のソース
## pyserialのpipインストール
Pythonでシリアル通信をするために
Pythonを使ったフィボナッチ数列
読んでたPython本でフィボナッチ数列に関して出てきたので調べつつメモ程度のライトな内容でまとめておきます。
なお、私の方はデザインの専門卒なので数学関係やコンピューターサイエンス関係の大学を出ている方からずると色々雑な点があるかと思われますがご了承ください。
# 使う環境
– Python 3.8.5
– VS Code# そもそもフィボナッチ数列とは
イタリアの数学者のレオナルド・フィボナッチさんにちなんで名づけられた数列です(英語ではFibonacci sequence)。
`0, 1, 1, 2, 3, 5, 8, 13, 21…`といった値の数列になります。
最初(0のインデックス)が0、次(1のインデックス)が1、それ以降は1つ前と2
式で書くと以下のような感じになります(数列の$n$番目の値を$F_n$とします)。“`math
F_0 = 0\\
F_1 = 1\\
F_n = F_{n – 1} + F_{n – 2}
“`また、この数列はいわゆるデザイン方面、特に黄金比(1:1.618…)とも密接に絡んでおり、デザイン関係の本な
LightGBMを使って競馬予想で回収率100%を超えるコードを書いた(その2)
# はじめに
この記事は
[・LightGBMを使って競馬予想で回収率100%を超えるコードを書いた(その1)](https://qiita.com/km_takao/private/0a448543961a97fc9c94)
の続きの記事になります。
その1ではモデルについて勢いで書きましたが、その2では実際に未来予測した結果を書き、最後にコードを公開します。
# モデル作成後の予測値
実は7月の時点でnoteに予測値はすでに出していました。
ただし予測に使ったコードは、予想noteを出しつつも改良を続けていること、今回公開するコードは基礎的な部分のみであることから、ここのnoteの予想と公開するコードの予測値が必ずしも一致するわけではありません。[【競馬予想】2020年07月25日](https://note.com/km_takao/n/naeb34e070a91)
[【競馬予想】2020年07月26日](https://note.com/km_takao/n/n201bc60b695c)
[【競馬予想】2020年08月01日](https://note.com/
XOR世界で行列のrankを求める(F2上での行列のrank)
#最初に
趣味で数学の勉強している農学部の大学生です.
数学力もプログラミング力もまだまだなので教えてもらえると嬉しいです>< ##XORとは 詳しくは別サイトで調べてください. かいつまんで話すと 1+1=0 1+0=1 0+1=1 0+0=0 と演算が定義されている世界だと思っていただければ(代数的に言うと$\mathbb{F_2}$上の和です.) ##簡約化とは 行列のrankを保ちつつ都合がいい形に変形していく作業です. rankが分かると嬉しいことが多いです(雑) また簡約化する過程で存在すると逆行列を得ることができるので簡約化は結構大事なものです. ##プログラム まずは演算を定めます ``` def cal(a,b): if a==1 and b==1: return 0 elif a==1 and b==0: return 1 elif a==0 and b==1: return 1 else: return 0 ``` 次に行列の行の足し算を定義しておきます(よく
幅優先探索(BPF)多分理解した(python)
###参考記事
[Pythonで誰でも書けるBFS(幅優先探索)](https://note.com/melon_ms_mtcc/n/nd2c0c7c16edb)この記事は、pythonでBFSを検索すると上位にでてきます。
しかし、私にとって一部わかりにくい部分があり、あと、多分ですが、説明に一部間違いがあったと思われる。
ですので、私の理解したことを記事にしようと思いました。###書き換えた
BPF完全に理解した状況で、それを記録しました。“`
from collections import dequen, m = map(int, input().split())
graph = [[] for _ in range(n+1)]
for i in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)#print(graph) ⇦①
dist = [-1] * (n+1)
dist[0] = 0
dist[1] = 0#print(dis
機械学習についてのメモ(随時更新)
#学習の流れ
1. 実施内容の決定
2. データ入手
3. データ前処理
4. 手法選択
5. ハイパーパラメータ選択
6. モデルの学習
7. モデルの評価 → 3、4、5へ
#訓練データとテストデータを分ける理由
・システムリリース時
持っている全データを訓練データとしても良い・精度評価を行いたい場合
訓練データとテストデータを分け、訓練データのみから学習したモデルでテストデータを評価する教師あり学習の目的が、未知のデータに対する予測であるため
#適合不足と過学習
##適合不足
・訓練データに対しても予測精度が低い状態##過学習
・訓練データによくフィットしているが、テストデータ(未知のデータ)に対する予測精度が低い状態適合不足と過学習のバランスをいかにうまく取るかが機械学習の一番難しいところ
[Python] クラスをiterableにする方法
## Contents
Pythonのクラスで反復処理[^1]を行う方法の解説記事です。
各コードは[GitHub repository](https://github.com/lisphilar/article_qiita/tree/master/python/01_italable_class)からダウンロードできます。[^1]: [Qiita: Pythonのfor文〜iterableってなに〜](https://qiita.com/conf8o/items/7ee98d103e94caa8b5dd)
“`Python:iter_minimum.py
iteration = IterClass([“a”, “ab”, “abc”, “bb”, “cc”])
print([v for v in iteration if “a” in v])
# [‘a’, ‘ab’, ‘abc’]
“`||実行環境|
|:–:|:–:|
| OS | Windows Subsystem for Linux |
| Python | version 3.8.5 |## 解決方法
asyncpg でよくやる操作まとめ
[psycopg2 でよくやる操作まとめ – Qiita](https://qiita.com/hoto17296/items/0ca1569d6fa54c7c4732) がじわじわ LGTM が増える人気記事になっているが、最近は aiohttp Server との組み合わせで asyncpg の方をよく使うようになってきたので、こちらについてもまとめる。
しかし公式ドキュメントが普通にわかりやすいし分量も多くないので全部読んでしまうのが早いかもしれない。
[asyncpg — asyncpg Documentation](https://magicstack.github.io/asyncpg/current/index.html)## asyncpg 概要
– Python から PostgreSQL にアクセスするためのモジュール
– asyncio を活用した非同期処理を行うため Python 3.5 以上でないと動かない
– [DB-API の仕様](https://www.python.org/dev/peps/pep-0249/) には準拠していない (そもそも
GPyを使ってガウス過程回帰
## ガウス過程回帰とは
すでにサンプリング済みの入力“`x“`に対応する出力“`y“`をもとにして、
新しい入力“`x’“`に対する出力の予測値“`y’“`の期待値と分散を返す回帰モデルを作成する。
限られたサンプル点から関数の真の形を予測するときに用いられる。
https://jp.mathworks.com/help/stats/gaussian-process-regression-models.htmlガウス過程回帰モデルを扱うには、GPyというpythonのライブラリを使う。
https://gpy.readthedocs.io/en/deploy/### 真の関数の描画
入力を2次元とし、真の関数はそれらを余弦関数に通した値の足し合わせであるとする。“`python:temp.py
import numpy as np# 関数の定義
def func(x):
fx = np.sum(np.cos(2 * np.pi * x))
return fxxa = np.linspace(-1, 1, 101)
ya = np.
将棋棋士の高見七段と増田六段をCNNで分類してみた【CNN初心者向け】
## この記事でやったこと
– **CNNによる画像分類をkerasで実装**
– **将棋界でも似ていると言われている高見七段と増田六段を分類できるかを試した**
– 高見七段と増田六段は学習後の分類結果が悪かった。
– 代わりに「高見七段とガルリ・ガスパロフ」や「高見七段と藤井二冠」を分類してみたところうまく分類できていた。
– やはり高見七段と増田六段は似ている…?## はじめに
突然ですが、将棋界で似ていると言われている高見七段と増田六段をご存知でしょうか。(上が高見七段、下が増田六段)
![高見七段](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533584/7e33c1d1-5a44-8ae1-0755-de1f14fef87c.jpeg)
![images (9).jfif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/533584/8257021e-2b3c-871e-53c0-df3033d6c556.jpe
jupyter lab上で画像のラベリングをする
## やりたいこと
AIに使いたい画像のラベリングをしたいが、GUIを作るのが面倒。。。と思い、
JupyterLab上でできないかーと考え、色々調べてたらできたのでそのときのメモ。
matplotで表示した画像を更新しながらinputでラベリングを入力するようなイメージ。## 実行環境
– Python 3.8.5
– jupyter lab 2.2.2
– mac(windows10でも実行済み)## コード
sample_imgフォルダにある画像をラベリングする。### 準備
“`python
import cv2
import matplotlib.pyplot as plt
import os
import glob
import IPython
# 画像のpathを取得
img_list = glob.glob(os.path.join(r”sample_img”,”*.jpg”))
img_list
>>> [‘sample_img/img3.jpg’, ‘sample_img/img2.jpg’, ‘sample_img/img1.jpg’]
“`#
[Python] UnionFind ABC177D
#[ABC177D](https://atcoder.jp/contests/abc177/tasks/abc177_d)
UnionFindにはいろいろな実装があるが, 本問ではparents配列にノード数を保持する実装だと非常に簡単に解ける. 以下のようにしてノード数を保持する.
・自身が子のとき, 親ノード番号を格納する。自身が根のとき, ノード数を負の数で格納する。
・負の数のときは自身が根であり, その絶対値がその木のノード数を表す。“`python:サンプルコード
import sys#UnionFindTreeクラスの定義
class UnionFind():
#クラスコンストラクタ
#selfはインスタンス自身
def __init__(self, n):
#親ノードを-1に初期化する
self.parents = [-1] * n#根を探す
def find(self, x):
if self.parents[x] < 0: return
OpenCVでスプライトを回転させる
# はじめに
[OpenCVで透過画像を扱う ~スプライトを舞わせる~](https://qiita.com/mo256man/items/f7524dd34718a01fb3df)の続きです。スプライトを回転させるって、ワクワクしますな。ナムコのSYSTEM II基板を思い出します。アサルトとか、オーダインとか。プレイステーション本体を購入する前にナムコミュージアム VOL.4を買ったものだ。
# OpenCVで画像を回転させる
OpenCVでは`cv2.rotate()`で画像を90度単位で回転できることができるが、任意の角度で回転させる関数はない。より高度な関数があるので、それを使う。## アフィン変換のお勉強
回転や拡大縮小などの一次変換と平行移動を合わせた写像をアフィン変換という。要は“`math
\begin{pmatrix}
x’ \\
y’
\end{pmatrix}
=
\begin{pmatrix}
a & b \\
d & e
\end{pmatrix}
\begin{pmatrix}
x \\
y
\end{pmatrix}
+
\begin{
犬ですが何か?Django–カスタムユーザーモデルを作成する
#ユーザー登録/ログイン/ログアウトの機能追加
こんにちワン!柴犬のぽん太です。今日は暑いのでガリガリ君ソーダ味を食べました。めちゃくちゃ美味しかったです!ガリガリ君って埼玉県の会社が作っているんですね。ぽん太はまだ埼玉県に行ったことがないです。
さて、今日はユーザー管理機能に挑戦します。
##accountアプリの作成
まずはaccountアプリケーションを作ります。“`console:terminal
(venv_dog) Ponta@shiba_app # python manage.py startapp accounts
“`アプリケーションを作成したらそれをshiba_app/settings.pyのINSTALLED_APPSに登録します。ぽん太のINSTALLED_APPSは次のようになっています。
“`Python:shiba_app/settings.py
INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.c
python3の地味なトリビア
他の人の記事眺めてて、どうもご存じないらしい、という点を幾つか。
# コロンの後ろには1文だけ書ける
なので
“`py
exec(“for i in range(10):\n\tprint(i)”)
“`これは
“`py
for i in range(10):print(i)
“`
もともと1行で書ける。execとか要らない。これはコロンを使う全ての構文であてはまる。def,class,while,try/catch,if….他なにかあったっけ。
他所様のフレームワークのソースを探検してたら、こういうのよく見かけない?
“`py
class OreOreException(Exception): pass
“`# 式の継続が明らかな場合は、任意箇所で改行できる
## 例えば内包表記
“`py
xx = [“even” if i % 2 == 0 else “odd” \
for i in range(10)]
“`
これは“`py
xx = [
“even”
if i % 2 == 0
els
AtCoder Beginner Contest 177 問題C 間違った理由を調べてみた
#はじめに
2020/8/29に行われたContest177の問題Cで、絶望するほどハマったので、調べてみました。#問題
https://atcoder.jp/contests/abc177/tasks/abc177_c#考えたこと
まともに計算すると、多分TLEになると思った。
でもちょっと工夫すればなんとかなりそう。しばし熟考。
求める和が、{(A1+A2+…+An)^2-(A1^2+A2^2+…+An^2)}÷2 だという結論に達し、コード化。
およそ10分後、完成。“`python:c.py
n = int(input())
l = input()
a = l.split(‘ ‘)tmp = 0
tmp2 = 0for i in range(n):
tmp += int(a[i])for i in range(n):
tmp2 += int(a[i])*int(a[i])print(int((tmp*tmp-tmp2)/2)%1000000007)
“`よっしゃ、今日は調子ええで!4問いけるかもしれんな!
と思った矢先
VScode+RemoteWSLでWindowsのPython実行環境を作る
この記事ではVScodeとWSLを用いてWindows上で動くPythonの実行環境を作成する方法を解説します。
# メリット
具体的な構築方法に入る前にまず、多くあるPython実行環境の中でこれを選ぶメリットを解説したいと思います。
1. VSCode上でステップ実行等の高度な機能が利用できる
2. インストールするパッケージの管理が容易
3. 必要な機能を選んで使用することができる。まず1に関してVSCodeを用いることで特別な設定をほぼ行うことなくプログラムのステップ実行(一行ずつ挙動を確認しながら実行すること)やオートフォーマット(スペーシングなどのプログラムの見た目の調節を自動で行う機能)を利用することができます。
次に2に関して。この環境ではPythonにデフォルトで備わっている仮想環境の機能を使用します。そのため、pipによるコマンドベースでのパッケージの管理を行うことができます。また、VSCodeから使用することでactiveな仮想環境の切り替えを容易に行うことが可能です。
最後に3つ目に関してです。今回構築する環境でインストールするのはVSCode関連では拡張機