- 1. 【python】であっち向いてホイ
- 2. 2つのファイルのDiffを取るときの備忘録
- 3. 【Python】学習時間を記録するDiscord Botを作成する
- 4. GitHub Actions入門~Pythonを自動で実行する~
- 5. 戸建て住宅マーケティングAI 開発 (2) bulk sql for postgres + python3
- 6. ヅカの芸名を自動生成するAIを作る(2):データ解析編
- 7. webエンジニア界隈で使われる各言語のテンプレートリテラル比較してみた
- 8. ラズパイのSoC温度を定期的にチェックし閾値を超えたらメール通知する
- 9. 「streamlit hello」を実行すると「command not found」になる
- 10. GiNZA で形態素解析やってみた(インストールで少しだけハマった)
- 11. プログラム経験2ヶ月の私が1週間で機械学習アプリをつくってみた
- 12. 【競技プログラミング】コイン問題をやってみた【組合せ最適化】
- 13. 画像劣化を超解像する Blind Super Resolution モデル DCLS-SRを使う
- 14. google colabでSQLを使う
- 15. Django Formクラスのprefixの紹介
- 16. Kaggleコンペで出されるタスクと評価指標まとめてみた
- 17. 【Pytorch】UNetを実装する
- 18. isNaNはTRUEじゃないの?
- 19. propertyを使ってコードをシンプルにする
- 20. Pythonでクローラーを作ってみる
【python】であっち向いてホイ
じゃんけんゲームの作り方を見て同じような方法であっち向いてホイもできるのではないかと思い
下記のサイトを参考に作りました。
この後は連勝数の表示や勝った時だけ音が鳴るようにしたいと考えています。https://flytech.work/blog/16310/#tkinter-2
環境
OS Windows10
言語 Python3.8.3
IDE visual studio code“` python
from cProfile import label
from email.mime import base
import tkinter as tk
import randomdef btn_click():
num = random.randint(0,3)def return_screen():
baseGround_new_screen.destroy()baseGround_new_screen = tk.Tk()
baseGround_new_sc
2つのファイルのDiffを取るときの備忘録
# 概要
– 2つのファイルのDiffを取って違った場合にFAILEDになるテストスクリプトを作りたい
– 比較する2つのファイル名が同じである
– 比較する2つのファイル名が同じ場合、WinMergeで同じことができるがPCがMacのためスクリプトを書くことにした# 参考
https://docs.python.org/ja/3/library/difflib.html# 環境
“`
# Pythonのバージョンを確認
python –version
> Python 3.7.3# pytestのインストール
> pip install pytest# natsortのインストール
> pip install natsort
“`# 実装
“`python:test_compare.py
import os
import difflib
import glob
from natsort import natsorted
import pytestfile_path_1 = “/path/*.txt”
file_path_2 = “/path/*.tx
【Python】学習時間を記録するDiscord Botを作成する
# 概要
discordでオンライン勉強会を行っている。
勉強時間を自動で記録したいと思いdiscord botを作成したので以下に方法を記載する。
処理としてはボイスチャンネルにいた時間を計測し、メンバーが退室した時点で該当のメンバーのボイスチャンネル滞在時間を出力するものになる。# 方法
## bot作成
処理内容は置いといてまずはbotを作成してみる。
ローカルで稼働するbotの作成方法については以下の記事が非常にわかりやすいので参考にした。
https://qiita.com/PinappleHunter/items/af4ccdbb04727437477f
ひとまずこれで作成して動いたらbotの作成は完了。## 常時稼働させる
上記はローカルで稼働するbotであり、自環境でプロセスを稼働させ続ければbotを動き続けるが、
当然自環境(プロセス)を停止すれば非稼働となる。
そこでクラウドでアプリケーション実行環境を用意し、そこで稼働させ続けることで常時稼働させる。
常時稼働botの作成は以下を参考にした。
https://fuurinblog.com/settigs-d
GitHub Actions入門~Pythonを自動で実行する~
**GitHub Actions**で**Python**スクリプトを自動実行する手順
## 1.リポジトリ作成
今回はサンプルなので、`Public`で作成する## 2.Pythonファイルの作成
**ルートディレクトリ**に以下の内容で`sample.py`を作成する“`py
import numpy as npa = np.array([1, 2])
b = np.array([3, 4])
print(a + b)
“`## 3.Pythonライブラリ設定ファイルの作成
**ルートディレクトリ**に`requirements.txt`を作成する
**Python**スクリプトで利用する**ライブラリ**とその**バージョン**をすべて記載する必要がある
今回は`numpy`を利用するので以下の内容を記載“`txt
numpy >= 1.21
“`## 3.GitHub Actions設定ファイルの作成
1. ルートディレクトリに`.github/workflows/`フォルダを作成する
1. yamlファイル`sample.yaml`を作成し
戸建て住宅マーケティングAI 開発 (2) bulk sql for postgres + python3
開発中
[![タイトルなし.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2639/63b93891-adeb-5247-cef0-d85216d0c58e.png)](https://15db.end0tknr.jp/)今回、バッチ処理には python、databaseには postgres を使用しますが、
大量データの insert , update , upsert (update or insert)を行う為、
psycopg2.extras for python3 を使用し、bulk sql を用意します。srcは以降に記載していますので、詳細は、そちらをご覧ください。
insert , update , upsert のいずれの場合も、処理対象のレコード群を渡すと、
まず、bulk 処理する単位(chunk)にレコードを分割し、
その後、sqlを実行します。# 参考させて頂いたurl
mysqlでも bulk処理を実装できますが、
今回のpostgresの場合、以下を
ヅカの芸名を自動生成するAIを作る(2):データ解析編
# これまでのあらすじ
[こちら](https://qiita.com/muto-jo/items/79c41aa2fb8ff27c047c)を参照
宝塚の芸名を自動生成するAIを作るのが目標。
Wikipediaから宝塚の生徒一覧の名前を集めたところ。記事を書いた後で収録漏れに気づいて、全期分の収録漏れチェックや、NameDividerによる姓名分離の修正に結構手間かかった…
# 今回やること
* 宝塚の生徒一覧をpandas.DataFrameに取り込む
* 少し解析してみる# DataFrameに取り込み
“`Python
import pandas as pd#定数
MAX_PERIOD = 108
NAME_TEMP = “takaraduka_actress/takaraduka_actress_{}period.csv”actress_data = pd.DataFrame()
for i in range(MAX_PERIOD):
period = i + 1
try:
period_data = pd.r
webエンジニア界隈で使われる各言語のテンプレートリテラル比較してみた
# はじめに
昨日書いた記事でもしれっと使ってるんですが、固定の文字列+連番みたいなことをやるときに、普通に文字列連結してもいいのですが見づらいし直感的ではないので、テンプレートリテラル(テンプレート構文)というものを使って、文字列に直接変数をぶっこんでしまう、というやり方を日常的にやるんじゃないかと思います。
昨日書いた記事はこちら
https://qiita.com/layzy_glp/items/7f3e43af11858eff622d
というわけで、昨日書いた記事の順番で各言語のテンプレートリテラルを紹介していきたいと思います。
# Ruby
“`ruby:例
v = “hoge”
print “hoge#{v}” # hogehoge
“`ダブルクォートで囲われている中の `#{v}` のところですね。変数名を `#{変数名}` ってな感じで囲むやり方です。
割と古く(v1系)からのrubyでは当たり前のように使われているもののようです。
正確には「**式展開(string interpolation)**」と呼ばれるものらしく、変数どころかruby式を入
ラズパイのSoC温度を定期的にチェックし閾値を超えたらメール通知する
## vcgencmdで温度をチェックしてsmtlibでメール通知する
### vcgencmdとは?
+ Raspberry Pi上のVideoCore GPUから情報を出力するツール
+ [ラズパイ公式サイト](https://www.raspberrypi.com/documentation/computers/os.html#vcgencmd)| Command | Contents |
|:-:|:-:|
| get_camera | Raspberry Piカメラの有効状態、検出状態を表示 |
| measure_temp | Raspberry Pi 4 の内部温度センサーで測定した SoC の温度を返す |
| measure_clock arm | 指定されたクロックの現在の周波数を返す:ARM(CPU) |
| measure_clock core | 指定されたクロックの現在の周波数を返す:CORE(GPU) |+ 温度取得例
“`
$ vcgencmd measure_temp
temp=45.9’C
“`### ユースケース
+ Rasp
「streamlit hello」を実行すると「command not found」になる
## エラー内容および対処法
**実行環境:** MacOS ターミナル
“`言語:エラー内容
% streamlit hello
zsh: command not found: streamlit
“`streamlit までのPATHが通っていないのが原因。
下記のようにPATHを指定すると実行できた。“`言語:対処内容(streamlitまでのPATHを指定して実行)
% /Users/{ユーザー名}/Library/Python/3.8/bin/streamlit hello
“`正常に実行されると、Streamlitに関するニュースを送るためにメールアドレスの入力を促されるが、何も入力せずにエンターでOK。
その後、ブラウザが起動する。
終了したい場合
GiNZA で形態素解析やってみた(インストールで少しだけハマった)
突如形態素解析をしてみたくなりました。
以前 MeCab をやったことがありますが、いまは GiNZA だというのでやってみました。下記の WSL 環境です。
“`
$ cat /etc/os-release
NAME=”Ubuntu”
VERSION=”20.04.3 LTS (Focal Fossa)”
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME=”Ubuntu 20.04.3 LTS”
VERSION_ID=”20.04″
HOME_URL=”https://www.ubuntu.com/”
SUPPORT_URL=”https://help.ubuntu.com/”
BUG_REPORT_URL=”https://bugs.launchpad.net/ubuntu/”
PRIVACY_POLICY_URL=”https://www.ubuntu.com/legal/terms-and-policies/privacy-policy”
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal
“`Py
プログラム経験2ヶ月の私が1週間で機械学習アプリをつくってみた
## はじめに
#### 1. 機械学習アプリを作ろうと思ったきっかけ
近頃サッカーの試合を見ていると、ボール支配率だけではなく最終スコアの予測が試合中に常に更新され続けている。海外のチームによってはこのようなスコア期待値を上回ることを目標としていることもあるらしく、このようなサッカーのデータ分析に興味を持ったため。
#### 2. 使用言語、ライブラリの選定理由
機械学習用のライブラリが非常に充実しているpythonを利用する。
また、Webアプリの作成には、pythonだけで完成するstreamlitを利用してなるべく短時間でアプリを作ることを目的とする。
#### 3. Statsbombについて
![SB – Icon Lockup – Colour positive.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2724475/a457fb33-d342-ac6c-9ac9-e74d4e7009fc.png)本分析、およびアプリ作成においてはサッカーのデータ分析の会社であるStat
【競技プログラミング】コイン問題をやってみた【組合せ最適化】
# 1.初めに
・アルゴリズムを学ぶために、競技プログラミングを始めました。
・AOJのコースをやっていくので、その備忘録を残します。## 1.1.前提知識
・組み合わせ最適化問題の解法の一つとして「動的計画法(DP)」というものがあります。
### 1.1.1動的計画法(DP)って何?
#### ある問題を小さな問題に分けて解いていく手法
・組合せ最適化問題では「DPテーブル」という表の値を埋めていくことで、正解に辿り着けます。# 2.コイン問題
https://onlinejudge.u-aizu.ac.jp/courses/library/7/DPL/1/DPL_1_A## 2.1問題
額面がc1, c2,…, cm 円の m 種類のコインを使って、 n 円を支払うときの、コインの最小の枚数を求めて下さい。各額面のコインは何度でも使用することができます。
### 入力
“`
n m
c1 c2 … cm
“`
1行目に整数 n と整数 m が1つの空白区切りで1行に与えられます。
画像劣化を超解像する Blind Super Resolution モデル DCLS-SRを使う
# 劣化画像をきれいにしたい
**【画像:input→output】**
これくらいの小さい画像から、上のサイズに4倍のスケールアップしています。
Blind Super Resolutionは、さまざまな画像劣化に対応するための技術です。
google colabでSQLを使う
pythonの学習にgoogle colaboratoryはとっても便利だが、下の画像のようにSQLを触ることもわりとお手軽にできる。
# 1. 諸々準備
“`sh
!pip install ipython-sql==0.3.9# サンプルデータのダウンロード・解凍
!wget https://www.sqlitetutorial.net/wp-content/uploads/2018/03/chinook.zip
!unzip chinook.zip
“`**ipython-sql**という、notebookのマジックコマンドでSQLを実行できるようにするためのライブラリを用いる(https://github.com/catherinedevlin/ipython-sql)
Django Formクラスのprefixの紹介
# はじめに
DjangoでFormを使ったviewを作ってて以下のような不便を感じたことはありませんか?
「1つのviewに2つのFormを表示してるんだけど、同じname属性を持ったinputが2つできちゃって、POSTがわかりずらい」
こんな時に役に立つのが、Formのインスタンス作成時に指定できるprefixです# コードの紹介
## サンプルとして定義したmodels.pyとforms.py
今回はModelFormでサンプルを示すので、事前にmodels.pyとそれに基づいたforms.pyを定義しますね
“`python:models.py
from django.db import models# Create your models here.
class TestModel(models.Model):
name = models.CharField(max_length=100)class SampleModel(models.Model):
name = models.CharField(max_length=100)
“
Kaggleコンペで出されるタスクと評価指標まとめてみた
# コンペにおけるタスクの種類
– 何を予測するのか?
– どういう予測値を提出するのか?## 回帰タスク
**数値**を予測する
– モノの値段
– 株価のリターン
– 店舗への来客数評価指標:
– RMSE
– MAEコンペ例
– [House Prices – Advanced Regression Techniques](https://www.kaggle.com/c/house-prices-advanced-regression-techniques)
– [Zillow Prize: Zillow’s Home Value Prediction (Zestimate)](https://www.kaggle.com/c/zillow-prize-1)## 分類タスク
### 二値分類
**レコードがある属性に属しているかどうか**を予測する
– 患者が病気にかかっているか否か2つのケースがある
1. 0 or 1 の2種類のラベルで予測を提出
2. 0から1の間の確率を表す数値で予測を提出評価指標:
– 1 の場合、F1-score
–
【Pytorch】UNetを実装する
# はじめに
ニューラルネットを用いた画像関係の処理に、セグメンテーションと呼ばれるタスクが存在します。セグメンテーションは画像の1ピクセルごとにどのクラスに属するか予測します。代表的な応用事例として、自動運転・医療画像解析が挙げられます。
バイオ関係では、接着細胞の割合を算出することが可能だと思います。
今回はPytorchの習熟とセグメンテーションに対する理解を深めることを目的として、UNetの実装を行いました。# UNet
[【参考】セグメンテーションのモデル](https://www.skillupai.com/blog/tech/segmentation1/)
[【原著論文】U-Net: Convolutional Networks for Biomedical Image Segmentation](https://arxiv.org/abs/1505.04597)セグメンテーションにはいくつかのモデルが存在しますが、UNetはエンコーダ・デコーダ構造の代表的なモデルとなります。
このモデルは序盤(エンコーダ)に畳み込み層を用いた特徴量抽出を行い、終盤(デコーダ)
isNaNはTRUEじゃないの?
## 今回記事を記述した背景
☆isNaNを書いてつまづいた人へ。
暇だったのである問題を解いていました。
問題の内容は
入力した引数が
*数字だったら5枚する
*数字ではなければ”ERROR”という文字を返す
という簡単な問題を作っていました。
## 記入したコード
“`function num(input){
if(isNaN(input)){
console.log(input * 5)
}else{
console.log(‘error’)
}
}num(3);
“`
*numの中身が数字だったら→numを5倍するなので、3を入れたら15になるかとおもいきや、、errorになってしもーた。
### isNaN(input)で、数字かどうか判断します## 原因
### isNaN() 関数は数値ではない場合に true を返すので、注意して使用してください。とのこと
## 修正
“`function num(input){
if(!isNaN(input)){
console.log(input * 5)
}else{
propertyを使ってコードをシンプルにする
https://qiita.com/marusta/items/c2f4db466abbf7b45478
の後書き## propertyを使ってコードをシンプルにする
pydanticだけの話ではないが、Pythonのclassで利用できる@propertyをうまく使えるとコードをシンプルにできる。
せっかくpydanticを使ってデータを一箇所にまとめることができたので、それらのデータを利用して頻繁に使用するパターンなどはclassの中にあらかじめ用意しておく。
たとえば、ファイルの保存先をルールをあらかじめ決めておきたい場合、`{AAA}/{BBB}`というディレクトリに保存するコードがあったとして、コード内で毎回フルパスで書いているうちに誰かが間違える可能性がある。
たとえば`{BBB}/{AAA}`みたいな。
クラス内変数の定型文みたいなやつは@propertyに最初に定義しておくと何回も使いまわせるので良い。ormとの互換もあるので、sqlalchemyとかと組み合わせて使うのも良い
S3などの保存先のパスとか定義しておくとよい
“`python:保存先のパ
Pythonでクローラーを作ってみる
まず、`クローラー`とはWeb上で検索エンジンが自動で検索結果を収集してくれるプログラムの事です。他にも`スパイダー`などとも呼ばれています。
`Python`のフレームワークには、ブラウザを自動に操作できる[selenium](https://www.selenium.dev/ja/documentation/webdriver/getting_started/install_drivers/)というのがあり、`Chrome`や`Safari`、`Firefox`など`WebDriver`を通して動かしてくれる便利なヤツです。
[Pythonのインストール](https://www.python.jp/install/macos/install_python.html)ができている状態で。`VSCode`のターミナルから
“`
pip install selenium
“`
します。上手くインストールできているかは下記コマンドで確認しましょう。
“`
pip3 show selenium
“`“`
Name: selenium
Version: 4.3.0
Summar