Python関連のことを調べてみた2019年12月23日

Python関連のことを調べてみた2019年12月23日

機械学習を仕事に使うには? 01_機械学習の目的を理解する

皆さんこんにちは。
本日からQiitaをはじめました。

普段は機械学習エンジニアとして、AI開発やWebアプリケーション開発に関わっています。

プライベートでは新米パパになりました。
4ヵ月になる長男を抱っこしながら記事を書いています(笑)

記事を書くキッカケとして、まだ参考書がなかった2017年から機械学習に取り組んできましたが、
地道に苦労して機械学習を習得した経験は必ず誰かの役に立つと感じています。

そこで、キャリアアップを目指す人達をサポートできる記事を書こうと決めました。
記念すべき初投稿のテーマは『**機械学習は何のために作られたのか?**』です。

どんなに良い参考書を読んでも、**機械学習の目的が分かっていないと何も習得できない**と思います。
まずは全ての基礎となる全体像を理解していきましょう。

SNS でも色々な情報を発信しているので、記事を読んで良いなと感じて頂けたら
[Twitterアカウント「Saku731」](https://twitter.com/Koji21825331) もフォロー頂けると嬉しいです。

## 機械学習とは
皆さんこ

元記事を表示

猫ももう飽きてるゆるふわ深層学習めも

# TL; DR
* 教師あり機械学習の文脈で深層学習を簡単に説明します(厳密性は皆無)
* 勉強会の題材として使用する予定なので、今後加筆修正される可能性があります

# 深層学習とは?
* 英語でDeep Learning
* 機械学習手法のうちの1つ
* 神経回路を模した機械学習手法のニューラルネットワーク(NN)を多層化したもの
* NN自体は50年以上の歴史があり、いくつかの冬の時代(ダメな子扱いされてた)時代を経て、2012年に画像認識コンテスト ILSVRCにおいて圧倒的な精度で優勝してDeep Learningという名前で蘇った
* 色んな構造のモデルがあり、画像認識ではConvolutional Neural Network(CNN)、画像生成ではGenerative Adversarial Network(GAN)、自然言語処理ではLong Short Term Memory(LSTM)がよく使用される

# 教師あり機械学習としての深層学習
深層学習はNNを多層化したものと説明しましたが、実際は単純な多層化ではなく畳み込み演算や再帰計算、自己注意計算など複雑な構成

元記事を表示

PytorchでSemantic Segmentationするときに困ったことまとめ

#Pytorchでsemantic segmentationして困ったこと
卒論書くときにpytorchでsemantic segmentationをしたのだが, いろいろ困ったことので備忘録的にまとめておく.

## IoU
torchvisionの方にbox_iouというものがあるのだが, segmentation用の奴が見つからなかったので困った
結局[この実装](https://www.kaggle.com/iezepov/fast-iou-scoring-metric-in-pytorch-and-numpy)を使った

## torch.nn.CrossEntropyLoss
こいつがマジで厄介
[document](https://pytorch.org/docs/stable/nn.html)を見ると$Input:[Minibatch, C, d_1…]$とか書いてたので推論した結果と正解データのマスクのshapeを[バッチ数, クラス数, H, W]みたいな感じのone-hot表現にしてたら無限にエラーを吐いてきて1,2日詰まった.

実際には推論結果のshape

元記事を表示

PythonでBOXのAPIをOAuth認証してから使うサンプル

# はじめに

ファイル共有クラウドサービス「BOX」のAPIをPythonから利用するサンプルを紹介します。

APIの使い方自体は「BOX」のドキュメントはじめ、色々な人が紹介してくれているのですが
自分がやりたかったことに近い情報が無かったので記事にしました。

# やりたかったこと

* とりあえずBOXのAPIを使いたい
* macのターミナルから実行(本当はローカルのJupyterLabから実行)
* OAuthを使う
* OAuthのリダイレクト結果をWEBサーバーで受け取る
* Pythonで開発

https://github.com/box/box-python-sdk/blob/master/docs/usage/authentication.md
まずは、このSDKのサイトに載っている次のようなサンプルコードをサクッと動かしたかったのです。

“`
client = Client(auth)
user = client.user().get()
print(‘User ID is {0}’.format(user.id))
“`

動かすだけであれば手動でO

元記事を表示

勾配法実装1

# はじめに
アドベントカレンダーのこの日を予約してから早1ヶ月程が経ち、クリスマス目前となりました。なんだか、いつも以上に今年1年間はあっというまに過ぎ去った気がします。今回は、ある程度Pythonは書けるけど、機械学習で具体的にどんな実装をするのか知らない人向けに、僕からのクリスマスプレゼントとして、なるべくわかりやすくまとめてこれをお送りします。理論的な部分と実践的な部分が混じっているのでわかりそうなところだけつまみ食いしてみてください。多分それでも雰囲気はつかめると思います。前回の記事で機械学習の直観的な描像はまとめてあるので[こちら](https://qiita.com/shinyaweeb/items/2aceffda24d72b307c63)も参考にしてください。
# 勾配法とは
勾配法とは、最適化に用いられる方法の1つです。最適な出力を与える重み$W$を求めるためにしばしばこの勾配法が用いられます。

具体的には[前回](https://qiita.com/shinyaweeb/items/2aceffda24d72b307c63)示した2乗和誤差

$$ \frac{

元記事を表示

GAE + python + Djangoでハマった話

## 経緯
ローカルで動くのに、GAEにデプロイしたら下記のようなエラー表示が。。。

Error: Server Error
The server encountered an error and could not complete your request.
Please try again in 30 seconds.
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/509891/aea2071a-308d-9a26-9571-b37bad6819ce.png)

## ログの確認
エラーログを確認するため、下記のコマンドで状況を見るとどうやらmoduleがうまく探せていないようでした。ここで’main’ってなんだ、という罠に陥りました。

“`
c:\Users\test>gcloud app logs tail -s default

File ““, line 965, in _find_and_load_unl

元記事を表示

Cloud Dataflowを用いてデータの値によって動的に宛先を変えてGCSに保存する

# はじめに
この記事は [Classi Advent Calendar 2019](https://qiita.com/advent-calendar/2019/classi)の23日目の記事です。

こんにちは、ClassiのデータAI部の@tomoyanamekawaです。
普段はGCP上でのデータ分析基盤構築をメインでやっています。

最近、「BigQueryにあるデータを中の値に合わせてファイル分割してGCSに保存したい」ということがあって、その時にCloud Dataflowにお世話になりました。
他の方にも需要ありそうで、かつPythonでの実装例が少なかったのでまとめようと思います。

# 今回のゴール
BigQueryにある特定のテーブルをGoogle Cloud Storage(GCS)にexportする処理をdailyで実行する。
ただしあるcolumnの値によって保存先のディレクトリを変えたい。
ファイル形式はjson。

## 例
BigQueryにあるreservationsテーブルを
reservationsテー</p></blockquote>
</blockquote>
<aside class='widget widget-post'>
<div class='tag-cloud-link'>Python</div>
<div class='tag-cloud-link'>gcp</div>
<div class='tag-cloud-link'>CloudDataflow</div>
</aside>
<div><a style='width:100%;' class='btn__link' href='https://qiita.com/tomoyanamekawa/items/a0f300f72de315dd243f'>元記事を表示</a></div>
<h3 id=【記録用】Keras画像系その2 : 自前データセットを使ってCNNで判定させる

どうも。

前回の記事はKerasで画像を読み込んでデータセットを作るまでの記事でした。

https://qiita.com/ku_a_i/items/7f71933f6b71cf30a3a8

今回はそのデータセットを使って実際にCNNで判定させるところまでやってみます。
フォルダ構成は以下のようになっている前提です。

“`Python:
”’
picture -╷- train -╷- Apple(分類1) -╷- **.png #学習用
╎ ╎   ╎ (多数の画像・・省略)
╎ ╎   ╵- **.png
╎ ╵- Mango(分類2) – (略)

╵- val -╷- Apple(分類1) – (略) #学習検証用
╵- Mango(分類2) – (略)
”’
“`

#0.前回のおさらい。データセットの作成

`

元記事を表示

Ultra96 V2 に PYNQ の環境を構築して Jupyter Notebook へログインする

# はじめに

[Ultra96 v2](https://www.avnet.com/wps/portal/japan/products/product-highlights/ultra96/) でロジックのハードウェア化にトライします。まずは、Ultra V2 に PYNQ 環境を作り、SSH と Jupyter Notebook でアクセスするところまで。

まずは、Xilinx のプロセッサーの概観です。-> [Xilinx 製品情報](https://japan.xilinx.com/products/silicon-devices/soc.html)

[Getting started](https://www.96boards.org/documentation/consumer/ultra96/ultra96-v2/getting-started/) は、CPU を使っているだけで、FPGA っぽいことは全くしていない様子。FPGA が使えたらと思い方法を調べたところ以下の方法があるらしい。

– PYNQ (Python for Zynq)
Python(Jupyte

元記事を表示

OpenCVを用いてアムステルダム駅を通る人を認識するのはびっくりするほど簡単だった。

#最終目的
僕はマーケティングが好きなのでこのような人体認識を機械にさせるところから始まり、最終的にはマーケティングなどに使えるツールを自作できるようにしたいなと考えている第一歩として、OpenCVを触ってみた。

この一歩目が正しいかはわからないが…

Jupyter Notebook上でコードは回した。

##この記事の内容
OpenCVを使って、動画解析をするというのは非常に簡単ではあるが、初心者として詰まったところなどを紹介していきながら執筆していこうと思う。

##実際の動画
**アムステルダム駅で人体認識をOpenCVを用いて実行してみた。**
[![IMAGE ALT TEXT HERE](http://img.youtube.com/vi/fiGLOCT_iwg/0.jpg)](http://www.youtube.com/watch?v=fiGLOCT_iwg)
#コード
“`python:detect.ipyb
import cv2
import os

#setting cascade file
f_cascade = cv2.CascadeClassifi

元記事を表示

Spotifyの関連アーティストからネットワーク図を作って次に聞く曲の決定支援

この記事は、[NTTコミュニケーションズ Advent Calendar 2019](https://qiita.com/advent-calendar/2019/nttcom)の22日目の記事です。
昨日は @kanatakita さんの記事、[アプリケーションのリリースに必要な会議を倒したい話](https://qiita.com/kanatakita/items/a68c6e7758524422ecb0) でした。

# はじめに
こんにちは、NTTコミュニケーションズのSkyWayチームに所属しているyuki uchidaです。
本記事は、[BERTを理解しながら自分のツイートを可視化してみるハンズオン](https://qiita.com/yuki_uchida/items/09fda4c5c608a9f53d2f)に続いて『可視化したい』シリーズ第二弾です。

プライベートでSpotifyのAPIを叩いていたところ、個人的な興味範囲であるリコメンドシステムに絡めて面白そうな可視化ができそうだと思ったため、この記事を書いています。

## 何をする記事?

Spotifyは

元記事を表示

【AWS SAM】 DynamoDB+Lambda+APIGatewayでAPIを作る

# 内容
DynamoDBのデータを取ってくるAPIを、AWS SAMで構築してみる

要するに、こんな感じのテーブルから、、、

|group(Hash) |name(Range) |
|—|—|
|group1 |name1 |
|group1 |name2 |
|group2 |name3 |

こんな感じに取ってこれるようにしたい。

“`shell
curl https://hogehoge/Prod/dynamo-api/v1/?group=group1&name=name1

{
“result”: [
{
“name”: “group1”,
“group”: “name1”
}
]
}
“`

# 環境
– macOS Mojave -10.14
– python3.7.4
– sam 0.38.0

# 目次
1. アプリケーションの環境構築
2. template.yamlを書く
3. 実行スクリプトを書く
4. デプロイ
5. 検証

# 1

元記事を表示

Python基礎 if文

#Python基礎①
アウトプット用にメモ
##if文
“`

number = 40
if number > 30:
print “hello world!”
print “Hello World!”
“`

###比較演算子 > < >= <= == != 論理演算子 and or not ``` if number > 50 and number < 70: print "hello world!" print "Hello World!" if 50 < number <70 print print "hello world!" print "Hello World!"` number = 60 if number > 50:
print “hello world!”
elif number > 30:
print “Hello World!”
else:
print “HELLO WORLD”

print “yes” if number > 60 else “no”
“`

元記事を表示

Tkinterを使ってサンタになりきる

令和元年が早くも終わりそうになってます。今年は芸能人の結婚ラッシュが目立ちましたね。
私も先日親友からいきなり結婚を報告されました。~~ついこの前まで六花ちゃんの足太くて良いよねとか言ってたじゃん…~~Twitterで愚痴ったら知らない外国人が慰めてくれました。さっそく留学経験が生きて良かったです。

そして世間はクリスマス。数多くのお父さんお母さん達がサンタになることでしょう。今年結婚した方々も将来子供が生まれればサンタになるはずです。

しかし人生1度きりの子育て、多くの新婚夫婦がどうサンタになればいいか悩んでいるのではないでしょうか。
そんな方々のためにサンタの予行演習が出来るゲームを作りました。

ということで[Make IT AdventCalendar2019](https://qiita.com/advent-calendar/2019/make_it)、22日目の記事を書かせていただきます。

# はじめに

今回ゲーム制作にあたって利用したのはTkinterになります。
基本的なコードは[12歳からはじめるゼロからのPythonゲームプログラミング教室](https:

元記事を表示

AtCoder Beginner Contest 148 参戦記

# AtCoder Beginner Contest 148 参戦記

## A – Round One

2分半で突破. 簡単なんだけど、なんかシンプルに書こうと思うと難しいなあと思った.

“`python
A = int(input())
B = int(input())

print(*(set([1, 2, 3]) – set([A, B])))
“`

## B – Strings with the Same Length

1分半で突破. 書くだけ. zip かなあと思いつつ使わなかった.

“`python
N = int(input())
S, T = input().split()

print(”.join(S[i] + T[i] for i in range(N)))
“`

## C – Snack

3分で突破. 最小公倍数が答えだけど、どう解けばいいんだっけ、最大公約数が分かれば分かる?と思いつつ、Google に「最小公倍数 Python」ってググったら `lcm(a, b) = a * b / gcd(a, b)` って出てきたので書いて終わ

元記事を表示

pythonのseleniumで`arguments[0].scrollIntoView();`が失敗するときの対応

## 概要

pythonのseleniumで**arguments[0].scrollIntoView();** を使って画面の表示位置を調整していたスクリプトを久しぶりに動かしたときにエラーで落ちてしまったのでその対応方法

## 対処方法

“`python
self.driver.execute_script(“arguments[0].scrollIntoView();”, inputLabel)
“`
から

“`python
inputLabel.location_once_scrolled_into_view
“`

に変更しました。
`inputLabel`はwebdriverのfind_element_by_XXX のメソッドで取得した要素になります。

## 状況

* seleniumの処理中画面の範囲外の要素を操作しようとすると`MoveTargetOutOfBoundsException`が発生してしまうので、対処として**arguments[0].scrollIntoView();**を使って画面をスクロールしてから動かすようにしていました。
*

元記事を表示

pythonでテキストファイルから条件に一致した行を抽出

## 概要

複数の条件を使ってに前方一致、後方一致、部分一致、完全一致のいずれかを使ってテキストを抽出する処理をpythonで作ってみました。
もとはとあるテキストから特定の文言が含まれているものを抽出して除去する処理をpythonで作りましたが、抽出する処理だけでも有効かと考えその部分を一部変更できるようにして作り直してみました。

## 必要なもの

* python 3.7.2
* pandas
* numpy

今回はexeもあるので動かすだけならpythonなど不要です。

## 公開場所

* [github](https://github.com/snowpff14/etcresource/tree/master/regExtract)で公開しています。

## 処理内容

* `resources/検索データ.xlsx`に定義された文言をもとに`resources/appConfig.ini`に設定した定義に応じて前方一致、後方一致、部分一致、完全一致の条件で抽出を行います。
* 処理する対象は`data`ディレクトリの中に格納されているファイルをすべて処理します。

元記事を表示

mong続報 – Dockerの名前生成ツールは2年前にPythonに移植されていた-

[mong – Dockerのコンテナ名をランダム生成するコードをPythonに移植してみた -](https://qiita.com/toshihikoyanase/items/85aa03d4e20fd6fe45f4)の続きです.

# TL;DR

– [namesgenerator](https://pypi.org/project/namesgenerator/) というパッケージが見つかりました.[mong](https://github.com/toshihikoyanase/mong)は見事に車輪の再発明でした.
– 一方`namesgenerator`は2017年12月からアップデートされていないので辞書が古く,生成できるパターンが本家や`mong`より少ないです.
– `mong`でインスタンス生成が必須なのは使いにくかったので `namesgenerator`を見習って`mong.get_random_name()`を追加してみました

# namesgenerator

Google, pypiで検索していて Dockerの名前生成ツールのPython版はないな

元記事を表示

Janus gatewayのAdmin APIを使ってみる

# 概要
Janus gatewayというWebRTCメディアサーバーについての記事は多数ありますが、
用意されているAPIの使い方については公式以外ほとんどありません。
調べるのに苦労しましたので、ここにまとめておきたいと思います。

# 参考になるサイト
– [公式サイト](https://janus.conf.meetecho.com/docs/admin.html)

# APIの種類
Janusで用意されているAPIには大きく分けると二つの種類があります。

– **Admin API**

Janusを管理、モニターするためのAPIです。
この記事にて使ってみます。

– **プラグイン API**

Janusにはビデオ通話やストリーミング、SIP関連などの多数のプラグインが用意されています。
そのプラグインを操作するためのAPIです。
次回記事にて使ってみるつもりです。

# Websocketを介してAdmin APIを使ってみる
## Janusのコンフィグを設定する
Admin APIを呼び出す際に使うパスワードを設定します。

“`/usr/local/et

元記事を表示

Python2の引退に向けて

##はじめに
今年もあと10日ほどになりました。2010年代が終わるという節目であると同時に、Pythonの世界でも一つの時代が終わることになります。長らくサポートされてきたPython2.7が2020年1月1日にサポート終了(EOL: End of Life)となります。つまりそれ以降はバグが見つかっても修正バージョンが出ない。Python2.7が2シリーズの最後となり、Python2は引退することになります。

Python2.7の最初のバージョンが出たのが2010年7月3日だったので9年半に渡って現役を続けました。その頃のPython3はVersion 3.1。そこからバージョンを重ねて3.8まで来ていて、マイナーバージョン数ではPython2を越えました。

Python2の約20年の歴史の中で2.7がその半分を占めるという異常な状態になったのもPython3がPython2と互換性がなく移行に時間がかかったからでした。[PEP-404](https://www.python.org/dev/peps/pep-0404/)で宣言されていたようにPython2.8は出ないことにな

元記事を表示

OTHERカテゴリの最新記事