- 1. AWS上でデータの収集、加工、分析を行う
- 2. 破壊力学のお勉強
- 3. Equalumの同期速度を可視化してみた。。
- 4. 自作Cコンパイラ neo-c2 version 1.2.7リリースです。型推論が入ってます
- 5. ValueError: Input contains NaN, infinity or a value too large for dtype(‘float32’). に対処する
- 6. 【Django】プロジェクト構成を「設定」「ユーザ管理」「アプリケーション」の3つに分ける
- 7. Pythonガチの初学者が「LightGBM・TensorFlow」を使って競馬予測のモデルを作ったら単勝回収率100%こえた
- 8. ABC189のD問題の解き直し
- 9. [pytest] monkeypatchを広いスコープで使う
- 10. boston データセットで NGBoost を試す
- 11. Pythonファイルをexe/app化する。
- 12. 【第三回】YOLOv3を一から実装 ~畳み込み層・残差ブロック~
- 13. strptime()とstrftime()の使い方
- 14. メモ〜mockの使い方
- 15. 回帰とGBDTのハイブリッドで時系列データの予測精度を上げる
- 16. DjangoでLoginRequiredMixinとUserPassesTestMixinの併用
- 17. [Python] [openpyxl] 1つのExcelファイルから全てのシートを単独のExcelファイルに分割(コマンドライン引数)
- 18. 【AtCoder】ABC225をPython3で解説(ABCD)
- 19. Docker Desktop for WindowsのインストールとJupyterLabの起動
- 20. Python×FlickrAPIで画像集め
AWS上でデータの収集、加工、分析を行う
#はじめに
kaggleなどでデータ分析の勉強を行う際は、既に加工されて分析しやすい形になったデータに対して分析を行うことが多いと思います。しかし実務ではデータの収集から行う必要性があったり、分析に適さない生データを扱うことになると思います。そこで一からデータの入手・加工・分析までの流れをやってみようということと、AWSの経験値を積むために、AWS上で一連の流れを処理するためのアーキテクチャを作成しました。
#学習方法
AWSについてはネットで調べつつ繋げていくのがメインでした。
個々の実装やサービス同士の繋げ方については、別で記事をあげていきたいなぁと思ってます。スクレイピングについては、udemyの「【4つの実案件で学ぶ】Python Webスクレイピング完全パック」で学びました。実案件を交えつつ、非常に分かりやすい内容となっています。
#作ったもの
一週間に一回、バイク王さんの中古バイクのデータを取得し、データ分析を行える状態まで持っていくアーキテクチャです。
下図が今回作成したものになります。![image.png](https://qiita-image-s
破壊力学のお勉強
#今更破壊力学?
私は、仕事では基本的に試験データを用いた解析をやっております。
最近は機械学習を用いたモデル開発なんかもやってますが、結果の解釈とかのときに必要になったので、いい機会なのでお勉強ということで。
一応プログラムも絡めておかないと運営に怒られそうなので、適当に数式をcかpythonかmatlabで書いてみますかねぇ。##使う本
いつ買ったのかはわからないが、家に転がっていた__小林英男著、”破壊力学”__##私の知識
4力(材料力学、熱力学、機械力学、流体力学)は大学で履修
材料に関する知識は一般論ぐらい(機械材料とか)
固体物理は習ったような・・・。
数学は大学課程はなんとか、統計検定2級は最近合格。
Equalumの同期速度を可視化してみた。。
####以前の投稿でEqualumの検証を行った際に、5個のオリジナルテーブルをCDCの起点にして、最終的に中間の自動統合データベースを含む、5個の新規データベースをExactlyOnceで安心・安全・確実に生成する・・・・という内容の1時間以内チャレンジ!!が有りましたが、今回は、その際に作成したPythonのプログレスバー型可視化でなく、即時可視化が可能なLogiCOMPOSER(旧Zoomdata)を使った「オーバーヘッドを削った版」動画が出来ましたので、取り急ぎ公開させて頂きます。
##とりあえず・・・動画から!
自作Cコンパイラ neo-c2 version 1.2.7リリースです。型推論が入ってます
mapの型推論が入ってます。以下のコードが動きます。
“`c
#include$
$
int main()$
{$
list*% li = new list .initialize();$
$
li.push_back(“1”);$
li.push_back(“2”);$
li.push_back(“3”);$
li.push_back(“4”);$
li.push_back(“5”);$
$
li.map { return atoi(it); }.filter { return it > 3; }.each { printf(“%d\n”, it); }$
$
return 0;$
}$
“`あとはヘッダーを整理しました。
https://github.com/ab25cq/neo-c2
ValueError: Input contains NaN, infinity or a value too large for dtype(‘float32’). に対処する
scikit-learn を使うと
“`python
ValueError: Input contains NaN, infinity or a value too large for dtype(‘float32’).
“`というエラーに遭遇して、データのどこにエラーがあるか追及するのに苦労すること、ありませんか?(あるある)
# 問題設定
pandas で次のようなデータを用いるとします。
“`python
X.shape, Y.shape
“`((1318, 400), (1318,))
普通にscikit-learnを使うと、次のようなエラーが出るとします。
“`python
from sklearn.ensemble import RandomForestRegressormodel = RandomForestRegressor()
model.fit(X, Y)
“`———————————————————————–
【Django】プロジェクト構成を「設定」「ユーザ管理」「アプリケーション」の3つに分ける
#はじめに
Djangoプロジェクトの構成を綺麗にするために,多くの方がベストプラクティスを考え公開しています.私も自身が所属する研究室内でプロジェクトの引き継ぎを行う必要があるので,「何がどこで動いているか」をわかりやすくできないか日々模索しています...
今回の記事では私なりに考えて,良いかもと感じたDjangoプロジェクトの構成を紹介・提案します.#結論
Djangoプロジェクトの構成を**「設定」「ユーザ管理」「その他のアプリケーション」の3つに分けます.**これによって管理がしやすくなると思います.
「設定」のディレクトリ名が`_config`となっているのは特殊ですが,このディレクトリ名のおかげで設定ディレクトリが常に一番上に表示されて探す手間が省けます.(あくまで私の1アイデアであり,一般的な名前の付け方ではありません)“`sh
.
├── _config # 設定
├── account # ユーザ管理
└── apps # その他アプリケーション群
├── app1
├── app2
└── app3
“`#実装
Pythonガチの初学者が「LightGBM・TensorFlow」を使って競馬予測のモデルを作ったら単勝回収率100%こえた
#目次
[1, はじめに](#はじめに)
[2, 今回の目標](#今回の目標)
[3, 使用するデータ](#使用するデータ)
[4, 前処理](#前処理)
[5, モデル作成](#モデル作成)
[6, スコア結果](#スコア結果)
[7, レース結果](#レース結果)
[8, 反省点・改善点](#反省点改善点)
[9, さいごに](#さいごに)#はじめに
ご覧いただいてありがとうございます。
今回は、競馬予測の機械学習モデルを作ってみました。
作成しようと思った理由としては元々競馬が好きで予想とかをしていましたが、自分で予想するのは難しくなってきたから機械にやってもらおうというのが事の発端です。後会社を辞めてニートになり時間ができたので作成しました(笑)まだまだ勉強不足や荒い知識で作成しているようななところもありますが、改善案などをコメントでいただけると幸いです。
GitHubにコードをあげています!
[GitHub-競馬予想モデル](https://github.com/KHTTakuya/KeibaPrediction)#今回の目標
複勝or単勝で回収率10
ABC189のD問題の解き直し
## 概要
Atcoder Beginner Contest 189のD問題が、~~(茶色Diffの問題なのに)~~手こずってしまったのと、解説だけだとピンと来づらかったので、自分への戒めも兼ねてまとめてみました。## 問題
N個の文字列(値は”AND”, “OR”のいずれか)が与えられる。
値が`True` or `False`のN+1個の列X(x0, x1, …, xN)に対して、以下の操作を行った時のXの個数を求める。– $y0 = x0$
– Siが”AND”のとき、yi = yi-1 && xi
– Siが”OR”のとき、yi = yi-1 || xi
※&&, || はそれぞれ論理積、論理和## 公式の解説
公式の解説では、答えをf(S1, …, SN)とすると、– SNが”AND”のとき
yN-1, xNが一意に定まるため、
$f(S1, …, SN) = f(S1, …, SN-1)$
– SNが”OR”のとき
xNがTrueならyN-1がなんでも良く、
xNがFalseならyN-1がTrue(一意に定まる)ため、$f(S1, …,
[pytest] monkeypatchを広いスコープで使う
# はじめに
pytestで単体テストを書いているときに以下のようなエラーに遭遇したことはないでしょうか。“`
ScopeMismatch: You tried to access the ‘function’ scoped fixture ‘monkeypatch’ with a ‘module’ scoped request object, involved factories
“`この記事では、このエラーについて解説し解決策を示します。
# エラーの解説
エラーメッセージに書いてある通り、`function`スコープのfixtureである`monkeypatch`をより広い`module`スコープで使おうとしたことによって、スコープがあっていないよ!と言われています。
pytestではfixtureの中で別のfixtureを入力として受け取り、使用することができます。この時気をつけなくてはいけないのは、fixtureの「スコープ」という概念です。スコープには以下の4つがあります[^1]。– `function`: テストケース毎に実行される(デフォルト)
– `
boston データセットで NGBoost を試す
# はじめに
ブースティングアルゴリズムで分布を予測する NGBoost を用いて、boston housing dataset の住宅価格予測を行ってみる。参考文献を以下に示す。– NGBoost: Natural Gradient Boosting for Probabilistic Prediction について
– [User Guide](https://stanfordmlgroup.github.io/ngboost/intro.html)
– [git hub : https://github.com/stanfordmlgroup/ngboost](https://github.com/stanfordmlgroup/ngboost)
– [元論文の arXiv : https://arxiv.org/abs/1910.03225](https://arxiv.org/abs/1910.03225)
– Boston Housing Dataset について
– [Boston Housing:ボストンの住宅価格(部屋数や犯罪率などの13項目)の表形式デ
Pythonファイルをexe/app化する。
#はじめに
インターネットなどで配布されているソフトウェアのインストーラーやソフトウェア本体のファイル形式はWindowsであればexe、Macであればappなどですが、それをPythonファイルからexeなどのアプリケーションファイル形式に変える方法をまとめてみましたので、参考になれば幸いです。追記:
exe/appファイルはPythonの実行環境がなくても、実行できます。#動作環境
Windows 10、11
Mac OS Monterey 12.0.1Python 3.10.0
pip 21.3.1#pyinstallerの導入
まず初めに、大前提としてpyinstallerというexe化するためのツールを導入する必要があります。
Windowsであればコマンドプロンプト、
Macであればターミナルを開いてください。
そこに次のように入力して実行します。“`
pip3 install pyinstaller
“`このようなエラーが出た場合はpipをアップデートする必要があるので、
“`
WARNING: You are using pip vers
【第三回】YOLOv3を一から実装 ~畳み込み層・残差ブロック~
はじめに
[前回の記事](https://qiita.com/gotty21/items/7e6bfdc2c221dc3521e9)ではYOLOv3に論文でも使用されたCOCO datasetを使ってdatasetを作成しました。今回からモデル構造の作成に取り掛かります。YOLOv3では画像の特徴を抽出するために複数の畳み込み層と残差ブロックを使用します。本記事では畳み込み層を作成する関数と残差ブロックのclassの作成を解説していきます。# フォルダ構成
>作業フォルダ
> ┠ COCO (COCO datasetのダウンロードの項で作成します)
> ┠ dataset
> ┠ ┗ cocodataset.py (前回作成)
> ┗ models
> ┗ YOLOv3.py (今回作成するファイル)# 使用ライブラリ
本記事内で使用するライブラリは以下となります。本記事では使用しませんが、動作確認の使用する前回作成したCOCOdatasetもimportしておきます。その際に必要となるモジュール検索パスを追加もここで記述してあります。“`python:c
strptime()とstrftime()の使い方
Pythonにおいて、入力された日付のチェックなどに***datetime***モジュールを使用した。
その中で、“`strptime()“`と“`strftime()“`の使い方についてまとめておく。
この2つのメソッドは振る舞いだけでなく、“`strptime()“`はクラスメソッドである一方で、“`strftime()“`はインスタンスメソッドという違いがある。##strptime()
文字列を日付形式に変更することができる。
指定された日付を示す文字列と指定されたフォーマットが正しければ、***datetime***オブジェクトが作成される。“`python
from datetime import datetimedatetime.strptime(<日付を表す文字列>,<フォーマット>)
# 例
datetime.strptime(‘2021-11-8′,’%Y-%m-%d’)
“`また、これを使用して指定された日付が妥当でフォーマットに一致するかチェックすることができる。もし指定された日付が正しくなければ、“`ValueError“
メモ〜mockの使い方
今回のお題
–
今回はpythonのmockライブラリの基本的な使い方について取り上げます。目次
–– mockとは何か
– 具体例
– 終わりにmockとは何か
–
mockとはテスト内で用いる代替品、及びそれを簡単に用意するためのpythonの標準ライブラリのことを指します。例えばあるプログラムに、戻り値を返す`メソッドA`とメソッドAを呼び出すための`メソッドB`を実装する予定だして、先にメソッドBが完成したとしましょう。
この場合、メソッドAの完成を待ってからメソッドBをテストするというのはあまり望ましくありません。
そんな悠長なことをしていてもしメソッドBに不備があった場合、メソッドAの実装後だと修正が大変になる可能性があるからです。
ですがメソッドBのテストにはメソッドAが必要なので、暫定的にメソッドAの代わりをしてくれるものを作り、それを呼び出せるかどうかを以てメソッドBのテストとする、というのが一般的です。
この`メソッドAの代わり`のことをプログラミングの世界ではmockと言います。
また、pythonにはこのmockを簡単に用意できるライブ
回帰とGBDTのハイブリッドで時系列データの予測精度を上げる
Kaggle公式チュートリアルにて第5回目: [Hybrid Models](https://www.kaggle.com/ryanholbrook/hybrid-models)を扱っていきます。
今までは回帰をメインに予測を行ってきましたが、
今回は回帰とGBDT(Gradient Boosted Decision Tree)をいいとこ取りして精度を高めていこうよ!っていうのが主題です。
(チュートリアルにもありますがstackingモデルのようなイメージです)
# 時系列データを構成する要素と残差
今まで扱ってきたデータとしてトレンド・季節性・周期(不定期含む)があり、これらのアプローチだけでもかなり予測としては成立することがみて取れました。これらを考慮すると
時系列データ = トレンド + 季節性 + 周期性 + 残差
という構成要素であると考えることができます(by Kaggle)公式チュートリアルから引用すると順番としては以下のようなイメージ
![スクリーンショット 2021-11-08 11.21.34.png](https://qiita-imag
DjangoでLoginRequiredMixinとUserPassesTestMixinの併用
LoginRequiredMixinとUserPassesTestMixinの併用するときに、未ログイン時にログインページへ飛ばなくなって困ったのでメモです
django 3.0.8
## やり方
“`
def handle_no_permission(self):
if self.request.user.is_authenticated:
raise PermissionDenied
else:
return redirect(‘account:login’)
“`
LoginRequiredMixin、UserPassesTestMixinを継承しているclassにこれを追加するだけです
[Python] [openpyxl] 1つのExcelファイルから全てのシートを単独のExcelファイルに分割(コマンドライン引数)
[前回の記事](https://qiita.com/VoshVolk/items/4ed52cedb2214d437ae2)で作成したものを、コマンドライン引数を取れるよう、一般化した。
“`python:splitsheet.py
import os
import sys
import argparse
import openpyxl
import copydef create_parser():
parser = argparse.ArgumentParser()
parser.add_argument(
‘excel_file’,
type=str,
help=’This is Excel file.’,
)
parser.add_argument(
“dest_dir”,
type=str,
nargs=”?”,
default=None,
help=”This is destination dir.”)
【AtCoder】ABC225をPython3で解説(ABCD)
ABC225のA-D問題の解説。
https://atcoder.jp/contests/abc225
## 目次
[A – Distinct Strings](#a—distinct-strings)
[B – Star or Not](#b—star-or-not)
[C – Calendar Validator](#c—calendar-validator)
[D – Play Train ](#d—play-train)## A – Distinct Strings
https://atcoder.jp/contests/abc225/submissions/me
### 解説
長さが3の文字が与えられ、これを並び替えた種類は何通りあるかという問題。
もし`aaa`ならば、並び替えてもすべて同じ文字になるので、1種類。つまり、文字の種類が1種類のときは、1種類となる。
もし`aab`ならば、`b`の位置は、`aab`と`aba`と`baa`となる。したがって、文字の種類が2種類のときは、並び替えた文字列は3種類になる。
もし`abc`ならば
Docker Desktop for WindowsのインストールとJupyterLabの起動
## はじめに
Windows10にDocker Desktop for Windows(Hyper-V)をインストールし、JupyterLabを起動するまでをまとめました。## デバイスの仕様とDocker Desktopのシステム要件
#### デバイスの仕様
* OS:Windows10 Pro
* プロセッサ:AMD Ryzen 9 4900HS with Radeon Graphics 3.00 GHz
* 実装RAM:16.0GB
* システムの種類:64 ビット オペレーティング システム、x64 ベース プロセッサ上記仕様のデバイスにDocker Desktop for Windowsをインストールしていきます。
Docker Desktopのシステム要件は下記です。#### Docker Desktop(Hyper-V)のシステム要件
* OS:Windows 10 64-bit: Pro 2004 (build 19041) or higher, or Enterprise or Education 1909 (build 18363) or highe
Python×FlickrAPIで画像集め
## はじめに
先日投稿した「[Pythonで可愛い子の画像集め(Seleniumでスクレイピング)](https://qiita.com/kbanchi1111/items/c494976fe1f7d4a53605)」に関連して、
今度はFlickrAPIを用いて画像収集したので、記事にしてみました。今回も、コマンドライン引数次第で集める画像を変えられる作りにしています。
## Flickrとは
* 写真動画共有コミュニティサイト(https://www.flickr.com/)
* WebAPIが提供されている(FlickrAPI)
* FlickrAPIの利用には「アカウント登録」「アプリケーション作成」「アクセスキー取得」が必要## やりたいこと
* PythonでWebスクレイピングして画像収集
* Python + FlickrAPIで実装
* コマンドライン引数に収集したい対象を指定したら、FlickrAPIで画像をダウンロード以下のように実行すると、
“`
python XXX.py dog 100
“`![dog.png](https://q