Tocyukiのブログ

ギターと柔術とプログラミングが好き!

Pythonで機械学習を学ぶための道のり

[2018/07/04] 加筆あり!

ちょっと前につぶやいた内容をもう少し整理しようかと

以下のコンテンツで学習すればいわゆるジュニアクラスレベルにはなれるんじゃないかなぁとか思ったり思わなかったり。

ProgateでPythonの基礎を固める

いまや破竹の勢いでユーザー数を伸ばし、国内でのプログラミングコンテンツの代表格となったProgate!こちらのPythonのコンテンツも非常に良質で基礎固めにはモッテコイ!

prog-8.com

ゼロから始めるPython

AIや機械学習でも人気のプログラミング言語「Python」、インストールからはじめPythonに触れながら学んでいく連載講座。

news.mynavi.jp

自然言語処理100本ノック

東北大学の乾・鈴木研究室で提供されている「自然言語処理100本ノック」。Pythonでの基本的な言語処理から、UNIXコマンド、正規表現、DBの取扱、機械学習などの学習にモッテコイのコンテンツ!

Dockerファイル付きでJupyterNotebookで学習できるようにしてみましたよ!

github.com

キカガクUdemy 機械学習コンテンツ

機械学習というと数学がネックになることが多いかと思うけど、このキカガクのUdemyコンテンツはその数学の取っ掛かりにはモッテコイ!アルゴリズムに関するコンテンツもあるのでおすすめ!アルゴリズムの後編が待ち遠しい!

www.udemy.com

www.udemy.com

www.udemy.com

CODEXA

NumpyやMatplotlib、Pandasなどの入門コンテンツが無料で学習できる!入門コンテンツが終わったら有料コンテンツもあるのでそちらにもトライしてみよう!

www.codexa.net

Aidemy

こちらは有料コンテンツだけど、NumpyやMatplotlib、Pandas、教師あり学習、教師なし学習、自然言語処理、ディープラーニングなどさまざまなコンテンツの学習が可能!Pythonの基礎など、入門コンテンツは一部無料で学習可能!

aidemy.net

松尾研のデータサイエンティスト養成講座&ディープラーニング基礎講座

東大の松尾研によるJupyter Notebook形式で作成されたコンテンツで、Qiitaでの解説記事も合わせてチェケラ!

qiita.com

グローバル消費インテリジェンス寄附講座演習コンテンツ 公開ページ | 東京大学松尾研究室 - Matsuo Lab

Deep Learning基礎講座演習コンテンツ 公開ページ | U-Tokyo Matsuo Lab

Kaggleで分析

基本的な機械学習の知識をつけたらあとはひたすらKaggleで実践を繰り返すのみ!詳細はQiitaの以下の記事で!

qiita.com

Kaggle: Your Home for Data Science

そんな感じで楽しい機械学習ライフを楽しみましょ!

今週の振り返り

またまた水曜だぁ〜。

シェアした記事、ツイートなど

ニュースで初めて何度も泣いた

子供がちょうど同い年ぐらいなのでそのせいかえらく感情移入してしまい、毎日このニュースが目につくけど内容を見るのが怖かった。世界には光がありそして闇がある。一生懸命に生きて家族と向き合いみんなで素晴らしい人生にしたいと強く思った。そして児童相談所の闇が少しでも光に照らされて正しい方向へ進むことを願うばかり。でも正しい方向とか言っちゃう時点で違うんだろうなぁ、と思ってみたり。

note購入

DAIさんが頭の中で考えていることが知りたかったので購入。でも内容的にはやっぱりそうかぁという当たり前に行動と仮説検証の高速PDCAをやっているだけだった。やっぱりシンプルにやるしかないよね、とほほ。

腰を痛めた

調子にのって週3回稽古を続けていたら腰をめっちゃ痛めた。はじめて整骨院行ったけどいきなり電気流されてめっちゃ痛くてびっくり。でもだいぶ楽になり初診で1500円だしコスパ良いよ。2回目の通院ではマッサージもしてもらって超きもちよかったけどやっぱり電気流されてめっちゃ痛かった。

最近すこし動いてます

やはり時間は自分の持っている一番レバレッジの効く資産だという認識を強くもち、きちんと行動していこうと思った。環境を変えることを含めて。やっぱり行動した分可能性も広がるよね。

そんなかんじで

ちゃんと日曜にふりかえれるようにしたいなぁ。あれもしたいこれもしたいってのはやっぱりむずかしいけどやると決めて継続することはできることはわかったからあとはちゃんと整理してすすめないとだ!

今週の振り返り

もう水曜だけどさくっと!

シェアした記事など

出来事など

てな感じでロードバイクは月曜と火曜のみで56km走りました。

とりあえず柔術も月曜、火曜、木曜と週3で稽古行けたのでそこそこ運動できたかなー。

しかし、学習の進捗がほぼない状態なのでそこはあまり良い状態ではないなぁ。

もうちょっと時間の使い方をちゃんとしなければ。

あー、仕事やだよー泣

今週の振り返り

ちょっと試験的に週次での振り返りをブログでもやってみようかなと思ってまして、ただ通常の振り返りとはことなり、今週の出来事やシェアしたりストックしたりした記事などを振り返ってみようかなと。

シェアした記事など

news.yahoo.co.jp

logmi.jp

lrandcom.com

出来事

とりあえず、ロードバイクを購入した。

さっそく通勤で使用するともう快適だのなんのって。

電車だとDtoDで1時間弱かかるんだけど、ロードバイクだとゆっくりで35分しかかからない。しかも、ラッキーなことに無料駐輪場をゲットすることができた!!これはもう完全に神のお導きなのでハレノヒは必ずロードバイク通勤して、突発的な飲みなどの誘惑を断ち切ることができる強い漢におれはなる。

汗もそこそこかくし、いい運動にもなるし、満員電車のストレスから開放されるしもう言うことなし。あとは本当に交通事故にだけ気をつけなければ・・・。

そして先週は柔術もとりあえず週3回通うことができた。まぁ、追い込むためにロッカー契約してこれで毎月柔術だけで2.5万円かかることになるのでまじで飲んでる場合じゃないし、飲む金もないっていうね!

そんなかんじで

すこしだけいい流れになってきそうな感じもあるので引き続き、頑張っていく所存でございます!!

pipのバージョン10はPython2.6に対応してない

こんなエラーがでてきた

あるひCentOS6.Xに以下の流れでpipをインストールしたところエラーがでるようになった

yum -y install python-pip
pip install --upgrade

そしてsetuptoolsをインストールしようとしたところ

# pip install --upgrade setuptools
Traceback (most recent call last):
  File "/usr/bin/pip", line 7, in <module>
    from pip._internal import main
  File "/usr/lib/python2.6/site-packages/pip/_internal/__init__.py", line 42, in <module>
    from pip._internal import cmdoptions
  File "/usr/lib/python2.6/site-packages/pip/_internal/cmdoptions.py", line 16, in <module>
    from pip._internal.index import (
  File "/usr/lib/python2.6/site-packages/pip/_internal/index.py", line 526
    {str(c.version) for c in all_candidates},
                      ^
SyntaxError: invalid syntax

こんなエラーが出たのでどうしたもんかと思ったら、Githubのissueにありました。

github.com

10.0 drops support for Python 2.6. See https://github.com/pypa/pip/blob/release/10.0.0/NEWS.rst#deprecations-and-removals.

It's noted in the "latest" version of the docs (https://pip.pypa.io/en/latest/installing/#python-and-os-compatibility) which will be promoted to "stable" once pip 10 is released.

まとめ

Python2.6系でpip upgradeしちゃだめだめ!

絵画を買うということの意味

大人の階段登る

そんなわけで人生初の絵画を購入してみたりしました。

ちなみに画家は佐藤勇太郎という高校時代の同級生、ようするに友達。

なんか自分の中で絵を買うという行為に憧れもあったりしたのだけど、絵を買うということの行為そのもの自体の意味合いを色々考えていたりしていた中で、実家に帰っていたタイミングでちょうど画家をやっているこのゆうたろうが個展を開くというので久しぶりに会いたかったし、顔を見せる程度という感じで足を運でみた。

もちろんその時は絵を買うなんてコトは考えてなかったし、すこし話でもしたいなぁ、程度の考えでまぁ、数千円〜一万円ちょいぐらいで良い絵でもあれば応援の意味を兼ねて買おうかな〜、ぐらいの感じで向かってた。

結局なんで買ったか

結局のところはこのゆうたろうと話していて刺激を受けたという部分が大きかったのかもしれない。というのも話を聞いていくとどうやらゆうたろうはスイッチが入っている状態のようだった。

スイッチとは?

これはとくにアーティストだけではなく、何かを成し遂げる人に必須の条件のように感じているんだけどようするにこの「スイッチが入っている」という状態は「没頭」している状態を指している。

ゆうたろうは絵描きらしく絵を書くことや絵描きとしての活動に没頭していて、睡眠も忘れ、3日に一度しか寝ないような生活を続け、この三年間で3回過労で倒れたというのだ。

最近だと1月に自宅で倒れ、連絡が取れないことを心配した友人が大家さんに連絡をとり、警察官立ち会いのうえで鍵を開けて家に入るとゆうたろうは倒れた状態で発見されたらしい。

何かをやりとげる、成し遂げるにはこの「スイッチ」を入れる必要がある。そしていま自分もこのスイッチを入れなければならないと感じている。

「スイッチを入れる」ということはある意味狂気じみた状態で感覚を研ぎ澄ませる必要があり、このゆうたろうから触発されたことでスイッチを入れようと決心し、ゆうたろうの可能性を確信した上でその自分の決断を確信し、この絵を購入した。

やることを継続するだけぜよ

あとは「没頭」し、行動を重ねていく。何より大事なのは

  • 感覚
  • 没頭
  • 継続
  • 行動

だと考えているので、感覚を大切にして、継続し、行動することを止めないで今を生きていくことに没頭していこうと思ったのでございます。

色々な感性に刺激を受けていけるように行動して、成長していくぞー!

ちなみに

購入した絵はこちらです。買ってから家のどこに飾るか悩みまくっておりますw

f:id:tocguitar1:20180422221621j:plain

Ansibleもくもく会(第2回)に行ってきた

ひさしぶりのAnsibleの勉強会

どうもとしゆきです。

というわけでAnsibleもくもく会(第2回)に参加してきましたよと。もくもく会的なものは初めてだったのですが、インスタンスも参加者毎に割り当ててくれるし、lightbulbのコンテンツもすごくよくできていてスムーズにもくもくすることができたし、目的のAnsibleTowerの感触もつかめていい感じでした^^

やったこと

以下のGitHubにあるAnsibleリポジトリのチュートリアル的なlightbulbというコンテンツを進めていきました。

github.com

その中で、Ansible、AnsibleTower、各種課題取り組みのおおまかに3つのセクションがあり、参加者は各々好きなセクションをもくもくしながらつまづいたところをRedhatのスペシャリストの方々に聞くという結構贅沢な感じでもくもく会が進んでいきました。

Ansible

github.com

Ansible Tower

github.com

課題取り組み

github.com

とりあえず、AnsibleとAnsibleTowerのハンズオンはできたけど、課題取り組みができていないので個別に進めていきたいなぁと思っております。

参考

その他、非常に参考になりそうな情報もシェアしていただいたので掲載しておきます。

Redhatの社員の方が作成したコンテンツ

github.com

AnsibleTowerに関するスライド

www.slideshare.net

www.slideshare.net

勉強用のスライド

lightbulbのコンテンツをクローンして、以下のHTMLファイルを開く

git clone https://github.com/ansible/lightbulb.git
open lightbulb/decks/ansible-essentials.html
open lightbulb/decks/intro-to-ansible-tower.html

lightbulbの環境構築方法

github.com

lightbulb/Vagrantfileを使えば、ローカルでも練習環境を構築できます。

おわりに

Ansibleの基本的な部分でも気づきがあったのでやっぱりこういう勉強会に定期的に参加するのは大切だなぁと感じたところでごぜいます。
Ansible Towerの評価については、ansible-jp@redhat.com もしくは ビジネス開発の中村さん宛(mnakamur@redhat.com)にご連絡くださいとのことなので、ご検討される方はどうぞ!

GoogleがJupyterNotebookをサービス化した「Google Colaboratory」がやばすぎる!!

こんなサービス待ち望んでました

最近、JupyterNotebookが便利だなぁと思いまくっていて、はやくどこかがWEBサービス化してくんないかなぁと思ったらGoogleさんがやってくれたよ!

スプレッドシートとの連携や、GoogleDriveでの共有など、Googleの既存サービスとの連携によるシナジーやばすぎますね!!

ちょっと使い倒してみてまた使用感等ブログに書いてみたいなぁと思います!

gigazine.net

東大松尾研の無料コンテンツがやばいから今すぐとりかかろう

無料でこのコンテンツが手に入るのすごい

最近、東大松尾研がすごい。
なにがすごいって演習コンテンツを無償公開してるんですが、そのクオリティがすごい。
しかもJupyterNotebook使ってるのもいい。
今後、こういった学習コンテンツはJupyterNotebookで公開されていく流れが加速していくんだろうなぁ~。

GCIデータサイエンティスト育成講座

Jupyter Notebook形式で作成された全15章の演習コンテンツ。データのセットアップから解析、可視化やモデルのアウトプットまでを一気通貫で学べるという。データサイエンスの主要言語Pythonの基礎から学べるほか、統計的数値計算や機械学習に関する技術、SQLやMongoDB、分散処理フレームワークのSparkなど、ビッグデータ解析に関する技術も学習できる。
個人で学習する目的のみで無償で利用でき、講習会や教室などでの利用は不可。クリエイティブ・コモンズの「CC-BY-NC-ND」(表示-改変禁止-非営利-一般)が適用されている。

www.itmedia.co.jp

weblab.t.u-tokyo.ac.jp

Deep Learning基礎講座

これは東京大学の公開講座「Deep Learning基礎講座」で実際に使っている演習コンテンツ

Jupyter Notebook形式で作成された研究者向け演習コンテンツで、Jupyter環境があれば利用可能。GPUを利用し、実際にモデルを学習させながら技術を習得できる。線形代数や機械学習が前提知識として必要。コードはTensorFlowと、Numpy、Scipy、Scikit-learnなど標準的なライブラリで構成した。公開したのは演習パートのみで、講義パートのコンテンツは別。
個人で学習する目的のみで無償で利用でき、講習会や教室などでの利用は不可。クリエイティブ・コモンズの「CC-BY-NC-ND」(表示 -改変禁止- 非営利-一般)が適用されている。

www.itmedia.co.jp

weblab.t.u-tokyo.ac.jp

Pythonで文字列をリスト化するTips

やりたいこと

  • たとえばこんな文字列をそのままリスト化したいときなどに
  • str型の数字をint型に直してリスト化したいときなど

コード

map関数をつかった場合

>>> text = '1 2 3 4 5'
>>> num_list = list(map(int, text.split(' ')))
>>> num_list
[1, 2, 3, 4, 5]
>>> text = 'A B C D E'
>>> word_list = list(map(str, text.split(' ')))
>>> word_list
['A', 'B', 'C', 'D', 'E']

リスト内包表記をつかった場合

>>> text = '1 2 3 4 5'
>>> num_list = [int(num) for num in text.split(' ')]
>>> num_list
[1, 2, 3, 4, 5]
>>> text = 'A B C D E'
>>> word_list = [word for word in text.split(' ')]
>>> word_list
['A', 'B', 'C', 'D', 'E']

解説

map関数をつかった場合

なんといってもキモはmap関数なわけですが、map関数はリストのような複数の要素をもったオブジェクト(シーケンス)と関数を引数としてうけとり、そのシーケンスの各要素をうけとった関数にわたして実行してくれます。

このように、関数をうけとる関数を高階関数と呼び、関数型言語でよく使われる機能です。
Pythonではmapのほかにfilterreduceなどの高階関数があります。

map関数の使い方は以下のように、第一引数が関数(またはlambda式)第二引数がシーケンスとなります。

map(function, sequence_object)

以下はさきほどのnum_listをつかってlambda関数をつかったmap関数の例ですが、Python3.xではmap関数の返り値はmap型のオブジェクトとなります。
リスト型のオブジェクトとして使いたい場合はlist関数などを使用します。

>>> num_list
[1, 2, 3, 4, 5]
>>> map_object = map(lambda x: x**2, num_list)
>>> map_object
<map object at 0x7f133c9660f0>
>>> type(map_object)
<class 'map'>
>>> list(map_object)
[1, 4, 9, 16, 25]

リスト内包表記をつかった場合

map関数をつかわなくてもリスト内包表記で同じような結果が得られますが、まぁ、これは好みの問題かもしれないです。
実行速度もどちらが早いというわけでもないですが、読みやすいコードであればどちらでもいいのかなというのが私の見解です。

PythonのTypeHints ~型アノテーション~

なんじゃこりゃ?

CheckIOを始めてみたらいきなりよくわからない表記が・・・。

py.checkio.org

def correct_sentence(text: str) -> str:
    """
        returns a corrected sentence which starts with a capital letter
        and ends with a dot.
    """
    # your code here
    return text

(text: str) -> strってなんなんでしょうか?(怒)

というわけで調べてみたところ、Python3.5から導入されたTypeHintsという機能のようです。

www.python.org

TypeHintsってなんぞやというところですがようするに型について注釈をつけられる(型アノテーション)ということのようです。

ちなみにアノテーションとはあるデータに対して関連する情報(メタデータ)を注釈として付与することを指します。

アノテーション - Wikipedia

コード解説

TypeHintsの仕様に従って上述のコードでアノテーションを実際に行っているのは以下の部分になります。

  • text: str: 引数textが、str型であることをアノテート
  • -> str: 関数correct_sentenceの返り値の型がstrであることをアノテート

つまり、

  • 引数の型はstr型だよ
  • 関数の返り値はstr型だよ

ということですね!

参考

qiita.com

smtp-sourceの使い方

smtp-sourceとは?

  • Postfixに内包されているメール送信ツール
  • StartTLSには未対応
  • 添付ファイルをつけたりはできない

よく使うオプション

オプション 説明
-l, length メッセージサイズ
-m, message_count 送信メール数
-s, session_count SMTPセッション数
-f, from 送信元メールアドレス
-t, to 送信先メールアドレス
-S, subject 件名
-w, interval 送信インターバル時間

使用例

だいたいこんな感じで使ったりする

$ smtp-source -m 100 -s 10 -l 10000 -S 'TEST MAIL' -f test@testmail.jp -t test@testmail.com 192.168.45.11:25

参考

Pythonで言語処理100本ノックするならJupyterNoterbook + Dockerがいいよという話

2年連続でインフルエンザにかかり、床に伏しております。

こないだ娘もインフルエンザにかかったからやばいかなーと思いつつやはりやばかった。
診察結果はインフルエンザB型、ちなみに娘はインフルエンザA型。

関係ないんかい。

そんなこんなで床に伏しつつ、最近あまりいじれていなかったJupyterNotebookでもいじろうと思って何やろうかなぁと思ったのですが、あまり進められていなかったこいつを再開しようかなと思ったところでございます。

www.cl.ecei.tohoku.ac.jp

この課題、一応Gitで管理しようかなぁとか思ったりしたのですが、めんどいのですよ。
しかも後半の方でDBを扱う課題もあるんですが、いちいち環境作るのもめんどくなぁ・・・、

はっ!??これってDockerも使えば幸せな感じになるんじゃないのか・・・!?

ということに気付いたため、さっそくリポジトリを作ってみました。

github.com

これでdocker-compose upするだけでJupyterNotebookの環境もMongoDBの環境も一発OKですぐにノックをすすめることができますね!!

微妙に作るのめんどくさかったので是非使って下さい^^

人形町にある「浜町藪そば」は美味いけど量がめちゃ少ない件

どうも、こんにちわ。としゆきですよ。

 

ひさしぶりに人形町来たのでお昼は外で食べることに。

 

なんとなく蕎麦がたべたかったので食べログ評価3.58の「浜町藪そば」へ。

 

浜町藪そば

食べログ 浜町藪そば

 

 

とりあえず以下を注文。

 

 

 

 

ビックリするぐらい少なかったけど味はとても良かったです(笑)

 

ちょっと濃い目の味付けでぼくにぴったりでした!

 

蕎麦湯でわっためんつゆがこれまた美味しかった!

 

ごちそうさまでしたー!

 

ErgoDox EZを買ってしまった(まだ来てないけど)

事の発端

どうも!としゆきです!

ErgoDox EZをいま流行りのビットコイン決済でポチってしまいましたよ!

ErgoDox?なんじゃそれ?的な感じかと思われるひともいるかと思いますが、要するにキーボード、むしろキーボードなわけですね。

それはもうかなり前の話になるけど、このブログを読んでからErgoDoxが気になって気になって夜も眠れないわけですよ。

nippondanji.blogspot.jp

でも自作はさすがにキツイなぁと思っていたら、製品化しているErgoDox EZというプロジェクトがあるじゃないってことでさらに気になって夜も眠れないわけですよ。

ergodox-ez.com

でもでもキーボードに4万弱というのはさすがにないわぁって思ってたし、なんか設定とか最適化もちょっと面倒くさそうだし一年近く悩んだところでなんとビットコイン決済に対応しやがっただと!??

というわけでポチってしまいましたよ

仮想通貨バブルにあやかり購入したはいいけど、ちゃんと使いこなせるかしら?w

でも自分好みにカスタマイズできるし、レイヤーという概念があって、レイヤー毎のキーマップもセットできて、マウス操作もトレースできるということなので使うのが楽しみ~!

早くこいこい~!

メモ

カスタマイズはこの記事が参考になりそうなのでメモ~

www.k4750.net