Project

General

Profile

PyCon JP 2019

Why python

なぜPythonが世界を席巻しているのか 3つの理由

独学プログラマーの著者
テクノロジーの本で上位5位

人にプログラミングを教える最善の方法

まったくの初心者からエンジニアになった
Victor agularさん HTML CSS Javascriptから始めた
いまではデータサイエンティストをしている

教授はJAVAから教えてきた。本当に難しい。

大学以外でプログラミングを独学した人がいたのを見て
Think Pythonという本で勉強しはじめた

・Pythonはビギナーの導入
・企業側にPythonの需要がある
・素晴らしいコミュニティを持つ

JAVAならHello Worldを教えるのに、Classとか色々おしえないといけない
Pythonならprint(“Hello World”)と書くだけ
だから新しいプログラマーにとって、かんたんで学びやすい

JavaScriptはどうだ?
でも、最初に学ぶには最適ではない。
JavaScriptのいいところを教えるのに本を書く必要がある

Developers and programmers salary forecast and trend in japan
というグラフがある。

PythonとAutoML

https://www.slideshare.net/c-bata/pythonautoml-at-pyconjp-2019

ベイズ最適化
・TPE: Optuna
・GP: scimitar-optimize, botorch
・SMAC: SMAC3
早期停止アルゴリズム
・SuccessiveHalving: Optuna, Dask-ML
・Hyperband: Dask-ML

Optuna
TPE, Asynchronous Successive Halving, Median Stopping Ruleに対応

利用時のポイント
Sqlite3は使用をさけたほうがいいよ
SkoptSamplerはカーディナリティの高い質的変数を避ける
Define-by-Runインターフェースの高い表現力のモデル選択は最適化が難しい
Optimize実行時にstudy.optimize(objective, catch=())をつける

Pythonで切り開く新しい農業

自動車の組み込みエンジニアをしていた
今もフリーランスとして働き続けながら、
キュウリ農家もしている。
またPlant sensing & Data AnalysisのPh Dしている

2014から農家でPythonをはじめた
MashupAwards10がきっかけでPythonを使うように

スプラウトを4つ並べて、もっとも生育がいい状況を作る

Makerとは、Dale Dougherty
アーティストのように、彼らは外的報酬ではなく、内的な目標によって動機付けられます。彼らは他人の作品に触発されます。最も重要なことは、彼らは未来が作られてくるまで待たないということです。
Maker Faire Tokyo 2019

雑草抜き取りマシーン
DonkeyCarをベースに作っている
Jetson Nano 10Wモード
はっぱの判定はMobilenet_ssdを利用
走行の判定もしている
どちらも12000枚の教師データ
Pythonの理由:高度な認知行動をさせたいから

Makerでよくみるデバイス
PICマイコン
Raspberry Pi
Jetson
M5Stack
Arduino
ESP8266
Micro:bit
Speed Maix (カメラとニューラルネットが動かせる新しいやつ)
・・・ほとんどどれもPythonで開発可能

Raspberry piのpiはpythonのpiだった
Pythonのみを実行できるコンピュータを作ろうとしていたため
2018年6月で50万台のうち60%が産業用

品目別10aあたりの労働時間
こめ、じゃがいも、きゃべつは、とても低い
ピーマン、きゅうり、トマト、ミニトマトはとっても高い
機械化が難しい作業がおおい果菜類は労働集約型になる

きゅうり栽培における作業別の労働時間の割合
40%が収穫、22%が出荷(選別)、20%管理(成長管理)
選別の作業は、それによって価値が高くなるものではない
だから、選別にあまり時間をかけたくない時間を減らしたい

きゅうり判定マシン1号機
2500枚の教師データで80%の精度だった

きゅうり判定マシン2号機
3方向から写真を撮って判定をする
8500組の画像を2ヶ月で集めた
→91.6%の精度になった

実地テストすると・・・
・遅い
・ベルトコンベアで傷つく
・判別精度はまあまあ
・箱にきれいに並べて蓋をするまでが仕分け
・総括:こんなおもちゃ使えない

きゅうり判定マシン3号機
AIによる自動化ではなく、AIのサポートによる効率化
テーブルにきゅうりを置くと判定してくれる
教師データを36000枚、1ヶ月かけた
5層の畳み込みニューラルネットワーク
きゅうりの長さ、太さ、表面積、画像の4つのInput
→80%の精度だった

季節や成長段階によってキュウリ等級の分布が変わる
農家では全体の傾向を見極め等級判断基準を微調整している
ニューラルネットに入れる前にキャリブレーション値を入れる
ノブを回すと等級に微調整を与えることができるように

実務で実際に使えるレベルになった
ただ、熟練者のスピードには敵わない

障害者も働きやすい環境づくりができる
ライン型からセル型にできる

依頼がよくくるので、期待値の調整をちょうする
具体的には、精度そんなにでねーよってこと
でも、人間同士のコミュニケーションの支援ができる
自動化だけじゃないDLの可能性に気づいた

トマトは水を少なくすると甘くなる
静岡大学がAIで高糖度トマトを安定大量生産に成功した

植物や環境のデータを収集分析して、植物にとって快適な栽培制御を行う
Jupiter Notebookに実験ノートにしている

Pythonで始めてみよう関数型プログラミング

F#、OCamlの影響を強く受けた
これで関数型プログラミングの魅力に目覚めた

関数型プログラミングとは・・・
手続き型プログラミング:命令実行の列としてプログラムを記述していく
関数型プログラミング:複数の式を関数の適用で記述していく
データに複数の関数を適用する

F#のパイプライン演算子
10 |> add 5 |> minus 20 |> display

方法1標準機能で実現する
方法2Pythonを生成するコンパイラで実現する coconut-lang、hypnagogic.hyなど
方法3AST変換で実現する lihaoyi/macropyなど
方法4がんばって3rdパーティパッケージとして実現

この発表でやるのは方法4を紹介する

☆関数合成
Let newfunc = add50 >> add100 >> minus100
Newfunc 10
F#なら記号を組み合わせた新たな演算子が定義可能
Let (>>) f g x = g(f x)

PythonならFnpy/fn.pyという関数合成を提供するパッケージをつかう
Fn.fというのでつかう

☆関数のカリー化
関数の引数が増えたらどうする?
カリー化された関数を使う
部分適用:複数の引数の一部分を実行できる
Pythonならfn.func import curriedでできる

☆不変/永続データ構造
Tobgu/pyrsistent

☆パターンマッチ
Let gendername person =
Match person with
| {name=n; gender=1} -> n + “is male”
| {name=n; gender=2} -> n + “is female”
| _ -> “undetermined”

Santinic/pampyというパッケージでいける

☆モナド
Haskellの美しさを知っている人は、人生に絶望することはない。Haskellで世界を変えたい
Haskell 教養としての関数型プログラミング
モナドは・・・
モナドは型クラス:データ型をカテゴライズする役割を持つ機能
Data Maybe a = just a | nothing
PythonではTypesafe-monadを使う
Functor application monadで必要なメソッドを定義する

婚活・恋活領域におけるPythonを使ったマッチング最適化

https://drive.google.com/file/d/1SXn7_u9OddelLPQ0Jn2H8vflL-hBp2Az/view?usp=sharing

Pythonラッパー作成で伝えたい2つのこと

NEC Advanced Analytics Platformの開発をしている

pythonの実行環境でpython以外の機械学習ライブラリーをpythonラッパーで改善できる
・世間にあるpythonラッパーの作成手段
・失敗談から学んだこと

ラッピング
コマンド Subprocess
C/C++ python.h、swig、boost.Python、Ctypes
Java Py4J、JPype

Subprocess.Popen()を使用してラッピングする
Jupiter Notebook -> Pythonラッパー -> 機械学習ライブラリ

DjangoとJupyterで始めるPyData

https://speakerdeck.com/kuma127/beginning-pydata-with-django-and-jupyter

野球のデータ分析がしたくてPythonをはじめた
Django-extensionsを使うとshell plusという機能がある
Python manage.py shell_plus —notebook
これで$ Jupiter notebookを実行するのとほぼ同じ

Added by aretan 2019-09-16 ago