‘Python’ カテゴリーのアーカイブ
量子アニーリングでシフト表作成
- 2021/09/13
- suganuma
- Fixstars Amplify
- イジングマシン
- 量子アニーリング
- 量子プログラミング
M5StickVで独自のモデルを使って画像認識
M5StickVを入手したので、独自のモデルを作成し画像認識を試してみました。
V-Training を利用するのが一番お手軽ですが、別の方法を試してみました。
M5StickVではkmodelというフォーマットのモデルを使います。
TensorFlow Liteのモデル(tflite)からMaix Toolboxを使ってkmodelに変換できます。
kaggleを試してみた
最近機械学習の勉強をはじめました。何冊か本を購入しザーッと目を通し(深くは理解できてません)、次に何か適当なサンプルで機械学習を試してみようと思いましたが、なかなか都合が良いデータというのはないです。
そんな時にKaggleを見つけました。Kaggleはデータ分析コンペを行うサイトですが、機械学習を勉強するのにも、すごく役立つサイトです。
「Titanic: Machine Learning from Disaster」という学習用のコンペをチュートリアルで最初にやるようになってますが、すでに日本語でたくさん紹介されてるので「House Prices: Advanced Regression Techniques」というのをやってみます。タイタニックが分類に対してこれは回帰の問題です。
やってみる、といっても初心者には何からやるのか検討がつきませんが、Kaggleには多くの方々が自分が行ったコード等(Kernels)を説明付きで公開してくれているので、それらを真似すればできます。
最初は人が作ったKernelsをひたすら見て自分のものにする、という感じかと思います。
以下も基本、人が作ったKernelsを参考に書いてます。
また、Kaggleには開発環境もあり、スクリプトまたはノートブック(Jupyter Notebook)の形式でブラウザから試すことできます。システムとしてよくできていると思います。
目的
アイオワ州のエイムズにある住宅価格を79の特徴量より予測します。Ames Housing dataset
IronPythonとジェネリックと初期値わたし
- 2013/08/12
- murave
- IronPython
C#勉強会に行って自己紹介で「MVVMパターン用のフレームワーク使ってViewとViewModelはC#、ModelはIronPythonで書います」と言ったら微妙な空気になりました、夏。
muraveです。
というわけでC#とIronPythonを組み合わせて書いてます。基本的に配列や辞書は便利なのでPythonのモノ使ってましたがパフォーマンス・チューニングやっててジェネリック使ったほうがいいところもあるかな、と。
IronPython側でのジェネリックの書き方は知っててたまに使ってたんですが(C#での<>が[]になります)、試したら普通に初期値も与えられるのにちょっと感激。
C#で書くとList<string>の場合
>>> import site
>>> import clr
>>> from System.Collections import Generic as DotNetCollectionsG
>>> dot_l = DotNetCollectionsG.List[str]()
>>> print dot_l
List[str]()
>>> dot_l = DotNetCollectionsG.List[str](['a', 'b'])
>>> print dot_l
List[str](['a', 'b'])
C#で書くとDictionary<string, int>の場合
>>> import site
>>> import clr
>>> from System.Collections import Generic as DotNetCollectionsG
>>> dot_dict = DotNetCollectionsG.Dictionary[str,int]()
>>> print dot_dict
Dictionary[str, int]()
>>> dot_dict = DotNetCollectionsG.Dictionary[str,int]({'a':1 ,'b':1})
>>> print dot_dict
Dictionary[str, int]({'b' : 1, 'a' : 1})
ね♪
helpみたら普通に書いてありました。
>>> help(dot_dict)
Help on Dictionary[str, int] object:
class Dictionary[str, int](object)
| Dictionary[str, int]()
| Dictionary[str, int](capacity: int)
| Dictionary[str, int](comparer: IEqualityComparer[str])
| Dictionary[str, int](capacity: int, comparer: IEqualityComparer[str])
| Dictionary[str, int](dictionary: IDictionary[str, int])
| Dictionary[str, int](dictionary: IDictionary[str, int], comparer: IEqualityComparer[str])
|
以下略
えらいなぁ。
IronPythonでもRequestsが使いたい
- 2013/03/08
- murave
- IronPython
Requests: 人間のためのHTTP
http://ja.python-requests.org/en/latest/
Pythonの便利なHTTPライブラリ Requests を IronPython でも使いたいわけです。
こんなことを書いているということは素直には使えないわけです。
一応動作してるかな〜、というところまで行けたのでメモしときます。IronPython は 2.7.3 で、Requests は 1.1.0 です。
ポイントは2つ。
まず一つ目。
sys._getframe が必要なので ipy.exe (or ipy64.exe) に -X:Frames オプションを付けて起動する。
オプションはこんな感じで確認できます。
C:\Users\murave>ipy -help
Usage: ipy.exe Usage: ipy [options] [file.py|- [arguments]]
<前略>
-X:Frames Enable basic sys._getframe support
<後略>
2つ目。IronPython には idna エンコーディングがないので回避する。
requests の models.py で使用されているので取り敢えずコメントアウト。
idnaで検索すると290行目あたりで使用されてます。
# try:
# netloc = netloc.encode('idna').decode('utf-8')
# except UnicodeError:
# raise InvalidURL('URL has an invalid label.')
netloc = netloc.encode(‘utf-8’).decode(‘utf-8’) に書き換えてみたりもしたのですが馬鹿らしい気がするのでコメントアウトしました。
おそらくこの影響で「ドメインとURLの国際化」は未対応になってしまってますが、動かないよりはいいかと。
C:\Users\murave>ipy -X:Frames
IronPython 2.7.3 (2.7.0.40) on .NET 4.0.30319.18010 (32-bit)
Type "help", "copyright", "credits" or "license" for more information.
>>> import requests
>>> import json
>>> r = requests.get('http://172.16.191.1:8001/api/v1_0/poll/')
>>> r.text
u'{"meta": {"limit": 20, "next": null, "offset": 0, "previous": null, "total_cou
nt": 3}, "objects": [{"id": 1, "pub_date": "2013-03-05T13:51:15", "question": "W
hat\'s up?", "resource_uri": "/api/v1_0/poll/1/"}, {"id": 2, "pub_date": "2013-0
3-06T10:01:35", "question": "\u65e5\u672c\u8a9e\u30c6\u30b9\u30c8", "resource_ur
i": "/api/v1_0/poll/2/"}, {"id": 3, "pub_date": "2013-03-06T13:51:15", "question
": "\u3044\u3044\u3044", "resource_uri": "/api/v1_0/poll/3/"}]}'
>>> res = r.json()
>>> print res['objects'][1]['question']
日本語テスト
>>> payload = {"pub_date": "2013-03-08T20:19:15", "question": "どうかね?"}
>>> r = requests.post('http://172.16.191.1:8001/api/v1_0/poll/', data=json.dumps(payload), headers={"Content-Type": "application/json"})
>>> r
>>> payload = {"pub_date": "2013-03-08T20:19:15", "question": "putは?"}
>>> r = requests.put('http://172.16.191.1:8001/api/v1_0/poll/1/', data=json.dumps(payload), headers={"Content-Type": "application/json"})
>>> r
>>> r = requests.delete('http://172.16.191.1:8001/api/v1_0/poll/1/')
>>> r
と、requests.get、requests.post、requests.put、requests.delete 動いているようです。
YAPC::Asia 2012 LTソン muraveスライド&デモ動画
- 2012/09/30
- murave
- IronPython
- YAPC
- イベント