- 1. はじめに
- 2. 用語の説明
- 2.0.1. 説明変数
- 2.0.2. 目的変数
- 2.0.3. 回帰
- 2.0.4. 分類
- 2.0.5. Growiサイドバーに記事ランキングを作った話
- 2.0.6. 雀魂の画面から画像認識で対戦情報を持ってくる(Vol. 1)
- 2.0.7. 【Pandas】行と列のデータを並べ替える方法 | sort_values/sort_index/reindex
- 2.0.8. 学習環境構築:WSL2+Python+Django+MySQLでWEBアプリ製作
- 2.0.9. 【MCMC】メトロポリス・ヘイスティングス法、ハミルトニアンモンテカルロ法、ギブスサンプリングを比較する
- 2.0.10. 君たちは正規表現におけるインド数字の罠にハマったことはあるかい?(١٢٣٤٥٦٧٨٩)
- 2.0.11. Python3エンジニア認定基礎試験模試メモ
- 2.0.12. pandas Dataframeをvalidationするpanderaを使ってみる
- 2.0.13. Google ColabでFUSEを使ってGCSにアクセスする
- 2.0.14. Pandas: データフレームについて–11: 重複データの処理
- 2.0.15. ウェブ/モバイル(React/TypeScript)での圧縮ライブラリ 簡易まとめ
- 2.0.16. Pandas: データフレームについて–10: データの置換
- 2.0.17. DRF+Nuxt+MySQLのローカル・ECS環境構築
- 2.0.18. DRF(Django REST framework)インストール・セットアップ方法
- 2.0.19. 天気予報データを解析してみよう 〜数値予報から時系列グラフを作る〜
- 2.0.20. EC2 Inf1インスタンスを使ってみた
- 2.0.21. Pandas: データフレームについて–09: データフレームを表示する
深度センサーを使って物体検知をする
# 動機
AI Dynamics Japan では、様々な物体検知アルゴリズム(画像・映像の中から対象物の位置を特定する技術)をAIや画像処理技術を使って実現していますが、案件の中には、通常の画像からでは人間ですら認識できないようなケースというものがあります。そのような場合に自分達は「Third Eye(第3の眼)」と称して[^1] 特殊なセンシング技術を用いて課題解決することがあります。今回はその中でも「**深度センサー**」を使って物体検知・差分検知する方法をご紹介したいと思います。
[^1]:実際に言っているのは自分(みきを)だけだったりする# LiDARセンサー(Intel® RealSense™)
**LiDAR**(**Li**ght **D**etection **a**nd **R**anging)は、センサーからレーザー光を物体に対して照射し、その反射光を観測することで物体との距離を測定する技術です。今回は [Intel®製 RealSense™ シリーズ](https://www.intel.co.jp/content/www/jp/ja/architectur
Scrapyを1ファイルで動かすサンプル
# 概要
[Scrapy](https://doc-ja-scrapy.readthedocs.io/ja/latest/index.html)をstartprojectを使わず1ファイルで記述し、pythonコマンドで実行するサンプルです。対象サイト( https://blog.qiita.com/ )から各記事のデータを収集してJSON Lines形式でファイル出力します。
**実行コマンド** 終了はCtrl+Cを2回
“`sh
$ python main.py
“`# サンプルコード
“`python:main.py
# 要インストール
# $ pip isntall scrapy
import scrapy
from scrapy.crawler import CrawlerProcess
from scrapy.extensions.httpcache import DummyPolicyclass MySpider(scrapy.Spider):
“””スパイダー https://doc-ja-scrapy.readthedocs.io/j
機械学習の基礎の基礎を1から
はじめに
本稿では機械学習の基礎の基礎として線形回帰について、Pythonのサンプルコードを併せて学んでいきます。
scikit-learnのデータセットであるカリフォルニアの住宅価格データセットから目的変数である住宅価格を予測します。
用語の説明
説明変数
目的変数を説明する変数のことです。例えば、「部屋数」「築年数」「緯度経度」から「住宅価格」を求める場合、この「部屋数」「築年数」「緯度経度」が説明変数となります。
目的変数
説明変数から予測された変数のことです。例えば、「部屋数」「築年数」「緯度経度」から「住宅価格」を求める場合、この「住宅価格」が目的変数となります。
回帰
予測する値が数値など連続する値のときのことです。例えば、「住宅価格」などは連続する値を取ることができるので回帰となります。
分類
予測する値がYes,Noのようなデータが属するクラスである場合のことです。カリフォルニアの住宅価格データセットには入っていませんが、例えば仮に、「ユニ
Growiサイドバーに記事ランキングを作った話
Growi記事ランキング投稿
ページの取得、投稿を行う、`Page`, 更新履歴を閲覧する `Revisions` クラスを定義した `growi` モジュールは別記事[^1]にしま ~~した。~~ す。予定[^1]: GrowiAPIを使って記事を取得・投稿する (まだ書いてない)
この記事はランキング投稿スクリプトの解説記事です。
# 完成品イメージ
## 完成品スクショ
![Screenshot from 2022-06-19 23-28-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/113494/b14b766c-b28b-8f58-58f9-7867834188f6.png)
## 完成品標準出力
完成品標準出力
“`markdown
# :heart:ライクが多いランキングトップ101. :arrow_right: [/お試し](https://demo.growi.org/5ee0e945ac935700
雀魂の画面から画像認識で対戦情報を持ってくる(Vol. 1)
[前回の記事](https://qiita.com/xenepic_takku/items/f25a97735a90546d1451)
# 前回までのあらすじ
> 1. 雀魂の画面のスクリーンショットを持ってくる
> 1. OpenCVのテンプレートマッチングでスクショから牌姿情報を持ってくるという方針を決めたのはいいものの、いきなり1. でつまづく。
雀魂のスクショを取ってこれないのである。
[参考にした記事](https://qiita.com/hiro0156/items/51ab267f4f47f2f8fe76)だとスクショなんてスッと取ってきてるんだけど、node.jsになると途端に難しいらしい。# スクショ難民
さて、色々調べた時に巡回したページを挙げる。> C#での画面キャプチャの取得方法を徹底解説!
https://www.fenet.jp/dotnet/column/language/4633/> Pythonでスクリーンショットを取得して指定フォルダに保存する
[URL長いので省略](https://office54.net/python/app/p
【Pandas】行と列のデータを並べ替える方法 | sort_values/sort_index/reindex
## 【はじめに】
Pythonライブラリの「Pandas」の中で、データを並べ替える方法はいくつかあります。
今回はその中でも「sort_values」、「sort_index」、「reindex」について紹介していきます。### 本記事の内容
– pandasのインポート
– csvファイルの読み込み
– データを並べ替える | sort_values
– インデックスを並べ替える | sort_index
– カラムを並べ替える | sort_index(axis=1)
– カラムを任意の順番に並べ替える | reindex## 【pandasのインポート】
“`Python
import pandas as pd
“`## 【csvファイルの読み込み】
「1920年から2015年までの全国の人口推移のデータ」を使用します。
“`Python
df = pd.read_csv(‘data.csv’, encoding=’shift-jis’)
df
“`| | 都道府県コード | 都道府県名 | 元号 |
学習環境構築:WSL2+Python+Django+MySQLでWEBアプリ製作
# この記事について
職場の後輩向けに書いた「環境構築手順書」です。「理解すること」や「セキュリティ」は後回しにして、まずは動かしてみることに特化させた記事となっています。
なお、筆者は業務での WEB アプリ開発経験がありませんので、手順の誤りや勘違いが含まれている可能性があります。記事中に誤記や手順の誤りを見つけられた方は、編集リクエストやコメントでご指摘いただけると嬉しいです。# 対象者
この記事は以下の様な方を想定して書いています。
– WEBアプリ開発の学習を始めたい人
– 過去に学習用の開発環境構築で挫折した人# VSCode 拡張機能のインストール
VSCode に以下の拡張機能を事前にインストールしておいてください。
– [Remote – WSL](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-wsl)
– [Remote – Containers](https://marketplace.visualstudio.com/items?itemName=m
【MCMC】メトロポリス・ヘイスティングス法、ハミルトニアンモンテカルロ法、ギブスサンプリングを比較する
ベイズ推論を用いた予測では、パラメータの事後分布や予測分布を求める必要があります。尤度関数に対する共役事前分布を用いた線形回帰などのシンプルなモデルでは、事後分布や予測分布を解析的に求めることができます。しかし、ニューラルネットワークなどの複雑な確立モデルでは解析的な推論は困難になります。
観測データを$\mathbf{X}$、パラメータなどの非観測変数の集合を$\mathbf{Z}$としたとき、推論で求めたいのは事後分布$P(\mathbf{Z}|\mathbf{X})$です。今回紹介するサンプリングアルゴリズムは$P(\mathbf{Z}|\mathbf{X})$を明示的に求める代わりに、$P(\mathbf{Z}|\mathbf{X})$からサンプルを採取することで分布の特性を求めます。
この記事では、マルコフ連鎖モンテカルロ法(Markov chain Monte Carlo methods)を用いたいくつかのサンプリングアルゴリズムを解説し、紹介していきます。
※注意
この記事は筆者が勉強したことをまとめて、理解を深めるために執筆しています。内容に誤り等があった場合は、
君たちは正規表現におけるインド数字の罠にハマったことはあるかい?(١٢٣٤٥٦٧٨٩)
## はじめに
突然ですが質問です。以下の正規表現の結果はどうなるでしょうか。
“`py
import re
re.match(r’\d{4}-\d{2}’, ‘٢٠٢٢-٠٦’)
“`Pythonで書いてはいますが、内容を捕捉します。「’٢٠٢٢-٠٦’」という文字列が、数字4文字+ハイフン+数字2文字にマッチするかどうか、という正規表現を書いています。
一見するとどう見ても数字4桁ではないので、正規表現にマッチしないように見えますよね????
実は正規表現にマッチします!!!というのが今回の記事の内容になります。## そもそも正規表現における数字の扱いとは
今回はPythonの正規表現のライブラリを利用しているので、公式のリファレンスを見てみましょう。
該当の部分には以下のような記述があります。>\d
Unicode (str) パターンでは:
任意の Unicode 10 進数字 (Unicode 文字カテゴリ [Nd]) にマッチします。これは [0-9] とその他多数の数字を含みます。 ASCII フラグが使われているなら [0-9] のみにマッチします
Python3エンジニア認定基礎試験模試メモ
・ビルドイン関数dir()
モジュールが定義している名前を確認することができる。・print(‘円周率は%5.3fである。’%math.pi)
%5.3f の 5 が文字列で、5桁に満たなければ左にスペースを挿入して5 桁にする。
3 は小数点以下の数字を 4 桁目で四捨五入して 3 桁にする。
f は小数であることを示す。
% は古い書式指定文字列の文法。・raise
好きなタイミングで例外を発生させることができる
raise 例外名(“メッセージ”)・コマンドライン引数を取得するためのモジュール
sys・ログを取得するためのモジュール
logging・仮想環境にインストールされたすべてのパッケージを表示するpipのオプション
pip list・引数と同じ要素を検索し、最初の要素を削除: remove()
・リストから、引数の値(x)の最初のアイテムを削除するメソッド
remove()・t = 123,345,’test’ と等価の記述
t = (123,345,’test’)・シーケンスデータ型についての説明
タプルは「i
pandas Dataframeをvalidationするpanderaを使ってみる
# 概要
[pandera](https://pandera.readthedocs.io/en/latest/index.html)を使ってirsiとtitanicのデータをvalidationしてみる。
対応しているのはpandasだけではないので詳しくは公式の冒頭を読むと分かりやすいです。# どうしてこの記事を書いたのか
外部からCSVとかでデータを取得してデータフレームにして整形して分析とか計算とかをするってことを自動化していると、
データフレームは当初の想定と同じ形になっているのだろうかと不安になるし、
型が変わっていたりカラムが増えていたりする事に気づきやすくしたいなって思ったので。# 前提
– panderaのバージョンは 0.11.0
– pandasのバージョンは 1.4.1
– Pythonのバージョンは 3.9.10
– irisのデータセットを取得するためだけsklearnをimport
– titanicのデータは[Kaggleからダウンロードしたtrain.csv](https://www.kaggle.com/competitions/ti
Google ColabでFUSEを使ってGCSにアクセスする
## はじめに
本記事ではGoogle Colab上でGCS FUSEを利用してGCSを仮想マシンのフォルダにマウントする方法を解説します。モチベーションとしては、Google Colabで実験した内容をVertex AIに移植することが多いためGoogleDriveではなくGCS環境にデータを一元管理したいためです。## 実装
以下のコードを先頭のセルにコピペしてい実行すればディレクトリが正しくマウントされます。今回はVertex AIと同じように利用したいというモチベーションなので、`/gcs/{BUCKET_NAME}`以下にマウントします。
必要なものはGCSのバケットとそのバケットへのアクセス権限を持ったGoogleアカウントです。以下のコードを実行するとGoogleアカウントのログイン画面が現れますのでログインします。
“`python
from google.colab import auth
auth.authenticate_user()# Install GCS FUSE
!echo “deb http://packages.cloud.google
Pandas: データフレームについて–11: 重複データの処理
# 重複データの処理
列単位でユニークな値,行単位でユニークな行についての処理を行う。
“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [4, 4, 1, 5, 1, 3, 4, 3, 5, 3, 3, 4, 3, 3, 5],
‘b’: [4, 1, 4, 3, 1, 2, 4, 4, 2, 1, 1, 1, 1, 3, 3]
})
df
“`
ウェブ/モバイル(React/TypeScript)での圧縮ライブラリ 簡易まとめ
こんにちは、最近フロントエンドと仲良くなってきたむっそです。
もともとバックエンドばかりやっていたのですが、仕事の都合でフロントエンド(React/React Native/TypeScript)も触ることが多く、今回は **便利そうな画像/ファイル圧縮ライブラリを調べてみました。**
(にわか仕込みで大変恐縮です)# はじめに
フロントエンド側で大きめなファイル(画像やPDF/CSVなど)を受け取った時に以下のような流れでシステムを組むことが多いのかなぁと思います
> フロントエンド ⇒ バックエンド(圧縮処理) ⇒ インフラ(S3など)
ただ個人的に **「ネットワークがボトルネックになることが多いので、極力ネットワークを経由したくないし、早めに圧縮したいなぁ」** っていうのが正直な気持ちです。
となると、理想的な流れは以下のような感じかと思います。> フロントエンド(圧縮処理) ⇒ インフラ(S3など)
だいぶすっきりしますね。
しかも最近のフロントエンド側の計算機(スマホやPC)も割と高性能だと思いますし、 **計算処理が重くなる圧縮処理でも多少耐えられPandas: データフレームについて–10: データの置換
# データの置換
欠損値 `NaN` の置換については, 「Pandas: データフレームについて–02: 欠損値の扱い」を参照のこと。
“`python
import pandas as pd
df = pd.DataFrame({
‘a’: [1, 2, 3, 4, 5],
‘b’: [1.2, 3.4, 5.6, 7.8, 9.0]
})
df
“`
DRF+Nuxt+MySQLのローカル・ECS環境構築 DRF+Nuxt+MySQLな環境を作るための備忘録
作業ログ的な感じなので説明省いてますので質問がある方はコメントください。## 本記事のポイント
1. ローカルでDRF(Django REST framework) + Nuxt + MySQLの環境構築
1. Docker Compose for ECSでDRF(Django REST framework) + Nuxt + RDSの環境構築
1. ECSのコンテナにSSHできるようにする。ECS Exec
1. ALBを使ってHTTPSアクセスできるようにする。Docker Compose for ECSは構築してしまえば、1コマンドでECSを起動できるのでオススメ
ただしSSH接続やALBを含めた構築はAWS周りの知識、特にCloudFormationが必要なので結構大変です。。。
Qiitaやネット上にほとんど情報がないので自分と他のエンジニアのために記録を残す。グッドラック
※ DRFやNuxtのインストールやセットアップは省く## ローカル対応
### 各種コンテナ用のDockerファイル作成
####
DRF(Django REST framework)インストール・セットアップ方法
DRF+Nuxt+MySQLな環境を作るための備忘録
作業ログ的な感じなので説明省いてますので質問がある方はコメントください。## インストール
requirements.txt
“`bash
djangorestframework==3.13.1
Markdown==3.3.7
django-filter==21.1
“`DRFをインストール
“`bash
$ pip install -r requirements.txt
“`## プロジェクト・アプリ作成
startprojectはconfigなど別ディレクトリに作成
“`bash
django-admin startproject config .
“`“`bash
python manage.py startapp apiv1
“`ユーザー追加
“`bash
python manage.py createsuperuser –email xxx@toyscreation.jp –username xxx
> XXX
“`## 初回セットアップ
### アプリ共通
天気予報データを解析してみよう 〜数値予報から時系列グラフを作る〜
この記事では、気象庁が配信する天気予報の基礎資料となる数値予報データを扱って、将来の気圧の時系列グラフを作成する方法を紹介します。
# はじめに
みなさんが見ている天気予報は、さまざまな機関(気象庁)や民間の気象会社がそれぞれ持つノウハウ等を注ぎ込んで将来の天気を予想した結果です。ただそのベースは共通していて、コンピュータが将来の地球表面のようすをシミュレーションによって予測しています。この手法は、機械で数値的に計算することから**数値予報**と呼ばれています。日本では気象庁が数値予報の業務を行っていて、その予報結果は気象業務支援センターを通じて契約者向けに公開されています。公開されたファイルには、気温、湿度、気圧、風、日射量…といった値が一定間隔に置かれた緯度格子、経度格子ごとに収録されています。こういった、等間隔に区切った格子ごとに気象要素を収録したデータは**GPVデータ**(Grid Point Value Data)と呼ばれます。日本語にすると格子点値データなのでそのままですね。
GPVデータの形式は、世界気象機関(WMO)が定めた二進形式格子点資料気象通報式(第2版
EC2 Inf1インスタンスを使ってみた
## はじめに
低コストで高性能な推論が可能なEC2 Inf1インスタンスを使ってみました。
これまでElastic Inferenceは利用したことがあるので、Elastic Inferenceと比較してみました。### Inf1インスタンスとは
AWSのページでは以下のように紹介されています。
> 同等の現行世代の GPU ベースの Amazon EC2 インスタンスと比較して、スループットが最大 2.3 倍高く、推論あたりのコストが最大 70% 低くなっています。Inf1 インスタンスは機械学習推論アプリケーションをサポートするため、1 から構築されました。同社は、AWS が設計開発した高機能の機械学習推論チップである AWS Inferentia チップを最大 16 個搭載しています。また、多くのAmazonサービスでもInf1インスタンスが利用されています。
## 今回実施すること
* Inf1インスタンスを用いて、ECS上に推論サーバを構築する
* Inf1インスタンスとElastic Inferenceを比較する## 利用するモデル
モデルとして、物
Pandas: データフレームについて–09: データフレームを表示する
# データフレームの表示
“`python
import pandas as pd
import numpy as npn = 65
np.random.seed(123)
df = pd.DataFrame({
‘a’: np.arange(n) + 100,
‘b’: np.random.rand(n),
‘c’: np.around(np.random.normal(50, 10, n)),
‘d’: np.random.choice([‘A’, ‘B’, ‘C’, ‘D’, ‘E’], n)
})
df
“`