anacondaの再インストールの話

これにとんでもない落とし穴があったという話を記録のために残しておきます。

結果から言うと、これはダメでした。Pythonが3.6系になり安心していたのですが、後日データをいじり始めたら、とんでもないトラブルが待っていました。

いつものように、Numpyをインポートして、行列を作ろうとしたら・・・。

>>> import numpy as np
>>> x = np.array([1, 2, 3])

AttributeError: 'module' object has no attribute 'array'

「ファ!?」ってリアルで声上げてしまいました。NumPyにarrayがないってあり得ないでしょ。と思って、StackOverflowなどを調べて見ると、Numpy.pyのファイルが複数ある(認識されている)ということらしい。ということで、anacondaをアンインストールして再インストールすることに。

参考にさせていただいたのがこちらの記事。

ai-coordinator.jp

anaconda-clearnを実行するだけでも、いろいろ起動できるので、anacondaフォルダを削除することに。この記事ではHome直下とあるけど、自分のMacのフォルダを調べると、Home直下にanaconda3 というフォルダが1つ、さらにUsersの自ユーザの直下にanacondaとanaconda3というフォルダが存在しており、それら3つを全部消して再インストールしたことで、ようやく問題解決。なお、PATHの削除の部分は、後で再インストールするのでいじってません。

ようやく環境がきれいになり、当初の目的通りPython 3.6.5でゴニョゴニョ出来るようになりました。

めでたしめでたし。

オライリーのPython & 機械学習本が渋滞気味なので整理してみた

初めて目次を付けてみました。

新刊本絶賛渋滞中

オライリーPythonベースで機械学習を取り扱っている本の出版(日本語翻訳化)の勢いはすごいですね。これを書いている今日(2018/8/17)もこの本が発売になり、早速入手しました。

直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピ

直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピ

半ば反射的に買ってしまう自分も自分ですが、同じオライリーでも似たような本が立て続けに出ており、ブームが終わる前に出せるだけ出しておけという空気を感じなくもありません。

権利関係の話はよく分かりませんが、日本語版のオライリーの本を分類してみると、

  1. 英語版もオライリーレーベルで出しているもの
  2. 英語版では別レーベルだが日本語ではオライリーレーベルになっているもの
  3. 日本語版がオリジナル

これらが一緒くたになってオライリーを名乗って出版されるので、どの本を読めば良いのか分からなくなって、私みたいに全部買うバカも出てくる訳ですね(苦笑)。

ということで、自分なりに整理してみようというのがこの記事の意図です。一応、どっちが良いかというコメントを書いているものもありますが、本の合う合わないは個人差があるので、あくまで参考程度にとどめて下さい。

機械学習の王道部門

いわゆる「機械学習勉強したいんだけど、何か良い本ない?」と聞かれたときに、候補になりそうな本ですね。このブログでも何回か取り上げられているはず。ノミネートはこの2冊。

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

Pythonではじめる機械学習 ―scikit-learnで学ぶ特徴量エンジニアリングと機械学習の基礎

scikit-learnとTensorFlowによる実践機械学習

scikit-learnとTensorFlowによる実践機械学習

個人的には機械学習デビューのきっかけを作ってくれた前者も大好きなのですが、どちらか1冊を勧めてくれという話になるなら、前半はscikit-learn、後半はTensorflowという構成になっている後者の方が良いかなという気がします。あと、Githubリポジトリになるオマケが充実しているので、とりあえず触ってみたいという人にとっては、この1冊で十分だと思います。

Numpy, Pandas, Matplotlibなどの基本がやりたい部門

前段で取り上げたscikit-learnとTensorFlowによる実践機械学習のオマケも相当充実しているので、それでも十分事足りると思いますが、それでもNumpyとかPandasのデータ処理の基本を押さえておきたいという場合に候補になる本です。

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 第2版 ―NumPy、pandasを使ったデータ処理が2012年の第1版で止まっていたなら、Pythonデータサイエンスハンドブック ―Jupyter、NumPy、pandas、Matplotlib、scikit-learnを使ったデータ分析、機械学習の一択かなというところだったのですが、第2版が出てPython3.6対応になったところで、甲乙付けがたくなりました。前者はpandasの開発者の著作なので、pandasが重めですが、時系列データの扱い方とか、むしろ知りたかったところに手が届くという意味で前者を推したい。

日本オリジナル部門

オライリー本は英語からの翻訳だけではないよねということで、日本オリジナル本を上げてみたいと思います。これは甲乙付ける感じではありませんが。

ゼロから作るDeep Learning ? ―自然言語処理編

ゼロから作るDeep Learning ? ―自然言語処理編

この2冊は、ライブラリに頼らずにきちんと理論的な所を理解しようよという、エンジニアには嬉しいアプローチ。特に前者にはディープラーニング関連の本が日本語化されていない頃に、この本を見て意図を理解するという事を繰り返していたので、神棚に飾っておきたいぐらいの本です。(神棚じゃなくて普通に本棚に置いてありますが)
仕事ではじめる機械学習

仕事ではじめる機械学習

日本オリジナルという意味で、この本も忘れてはいけないですね。実務で機械学習に触れるという観点で書かれているPractioner(実務家)向けの本だと思います。

keras部門

オライリーには長らくkerasを扱った本が見当たらなかったので、比較という意味ではオライリー以外の本を持ってくるしかありません。

直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピ

直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピ

PythonとKerasによるディープラーニング

PythonとKerasによるディープラーニング

前者は読み始めたばかりですが、kerasという意味ではkerasの開発者が書いている後者の圧勝ですね。ただ、直感 Deep Learning ―Python×Kerasでアイデアを形にするレシピの比較対象という意味では、kerasは使っていないものの、内容の比較対象としてはこちらが近いかも。
実践 Deep Learning ―PythonとTensorFlowで学ぶ次世代の機械学習アルゴリズム (オライリー・ジャパン)

実践 Deep Learning ―PythonとTensorFlowで学ぶ次世代の機械学習アルゴリズム (オライリー・ジャパン)

Pythonの基本部門

最後に、Python自体を勉強したいんですけどという場合の本を2冊。Pythonの入門自体も本が多いものの、敢えて中級者向けの本を挙げてみました。

入門 Python 3

入門 Python 3

Fluent Python ―Pythonicな思考とコーディング手法

Fluent Python ―Pythonicな思考とコーディング手法

前者は、このブログで写経シリーズで完走しているので、そちらを見ていただいた方が早いかもしれません。後者はPythonにおけるバイブル。両者とも、内容的に少し古くなりつつあるというか、Python自体にアップデートがかかっているので、最新の情報はwebで追いついておいてねというコメントになるかと思います。とは言え両方とも、機械学習の基礎のためというのであれば、too muchな感じでしょうか。

長くなりましたが、機械学習を楽しみましょう。

ファイナンス、ファイナンス、ファイナンス

 

以前、CouseraでMachine Learning for FinanceというSpecializationを受講しているという話を書きましたが、プログラミング課題の自動採点機能に不具合があって、正しいものを書いてもエラーになるという問題が発生しています。これは解消したとのメールが来たものの、今度は課題の提出ボタンを押すとエラーになるという別の問題が。毎月受講料を払うという料金体系である以上、不具合解消待ちにお金を払い続けるのも違う気がして、サブスクリプションを一時的に解除しています。

 

コースの内容的には是非とも学んでおきたい内容なので、問題が解消したら復帰するつもりでいますが、復帰後にもう少し楽ができるように、もう少しファイナンスの知識をつけておきたいなと思うようになりました。というのも講義動画を見ていると、英語で小難しい数式が頻繁に出て来て、なんとか食らいつこうとするものの、時々意識が飛んでしまいます。機械学習などの多少見慣れた概念なり用語であれば英語でも何とかなりますが、ファイナンス英語で習った事がないので、自分の脳内辞書にはそのあたりのボキャブラリーがなく、やはり聞くだけでは苦しいですね。

 

機械学習 meets ファイナンスの瞬間

 

話はCourseraからの一時離脱をする直前に遡るのですが、自動採点機能のバグにぶち当たり、金払って苦行する意味があるのか、さっさと離脱した方がいいんじゃないかと自問自答しながら進めていた課題の中に、こんな課題がありました。S&P 500のインデックスと個別の株価が時系列で与えられていて、β(ベータ)を求めなさいと。もちろんβを求めるのがゴールではなく、計算の過程で算出して後続で使うのですが、このβという単語にピンと来たのです。

 

・・・これ、昔習ったな

 

今を遡る事16年前w。当時流行りだった社会人向けの会計大学院に通っていた自分は、「ファイナンス基礎I」という科目が必修科目であることを夏休み直前になって知り、慌てて1週間の夏期集中講座に申し込んだのでした。

 

当時はシステム屋で会計領域を担当していたこともあり、会計は学ばねばと思っていたものの、ファイナンス?なんだか数学が面倒臭そう。というイメージ先行で、見向きもしていなかったのです。とは言え、必修科目である以上、履修を避ける訳にはいきません。

 

しかし、実際に授業に出てみると、これが楽しい。今でも一線で活躍されている著名な先生による授業は分かりやすい。もちろん、丸一日の授業を1週間ぶっ続けで受ける体力的な厳しさはあったものの、なんか楽しい思い出が残っているのです。

 

あれ、結構覚えている

当時の教科書は、実家で眠っているはずですが、取りに戻る時間がなかったので、とりあえず書店で平積みになっているこの本を買ってきて読むことにしました。一気に読んでみると、あれも習ったな、これも習ったなみたいな感じで思い出していきます。

 

道具としてのファイナンス

道具としてのファイナンス

 

 

ファイナンスって、結構面白いじゃんという思いを新たにして、諸々の問題が解決したら、Courseraのコースに戻ろうというモチベーションが上がって来ました。

 

 

これを買ったのはやりすぎだったかもw

 

ちなみに

大学院生の頃のファイナンス楽しい!には後日談があります。持ち込み可の試験で比類なき強さを示す自分は、試験で結構な高得点を叩き出し、俺はファイナンスに向いているんだと勘違いして、夏休み明けに任意受講科目のファイナンスIIという科目のガイダンスを聞きに行きました。しかし、出てくる数学が高度過ぎたのとテキストが英語だったので尻込みして、ファイナンス熱は一気に下がったのでした。この時頑張っていたら、今頃違うキャリアを歩んでいたかもしれないですね。

 

とは言え、今勉強している機械学習というコンテンツと昔習ったファイナンスがポンと出会うのもなんかの縁だなと思って、冒頭のツイートに繋がったわけです。

 

企業価値評価もやったな…成績はイマイチだったけど。

企業価値評価 第6版[上]―――バリュエーションの理論と実践

企業価値評価 第6版[上]―――バリュエーションの理論と実践

 
企業価値評価 第6版[下]―――バリュエーションの理論と実践

企業価値評価 第6版[下]―――バリュエーションの理論と実践

 

 

企業価値評価 【実践編】

企業価値評価 【実践編】

 

 



 

機械学習ジャーニーのお供に

気になったことを書き溜めただけで一貫性のない弊ブログですが、「機械学習」というキーワードを入れた記事を出すと、アクセス数が増えるというのが最近の傾向です。それだけ機械学習熱が上がっていて、自分でも試してみようという人が増えているんでしょうね。

 

機械学習を進める上でのストレス要因

先日もCourseraの受講のことだったり、オススメ本の話を書いたりと、自分自身でも機械学習について学ぶという事は相変わらず続いているものの、いつもモヤっとした部分が残ります。

 

ライブラリの使い方とか、基本的なコンセプトは分かっても、その足元の部分、つまりデータを用意したり、そのデータを加工して大まかな傾向を掴むと言った機械学習の最初のステップのところの足元が弱いなあと思う今日この頃です。

 

仕事として機械学習を使っているプロの皆さんは置いておいて、私のように仕事とはあまり関係なく、機械学習に興味を持って飛び込んで、まずは機械学習の入門書から入った皆さんの場合、例えばPandasのデータフレームの使い方だったり、Matplotlibで自分の思うようにプロットしてみるという部分がうまく使いこなせていなくてストレスを感じているってことはないですかね?

 

私は結構ストレスになっていて、機械学習じゃなくて、データサイエンスのE-Learningでも受けようかと真剣に検討していたぐらいです。

 

こういうのを待っていた

そんな中、こんな本がつい最近出たのを見つけてしまいました。

 

この領域の本、これまでもあるにはあったのですが、日本語の本だと内容的に少し古くなったなと感じるものが多かったので、個人的には良いタイミングで出て来てくれました。

 

最終章のscikit-learnのところは手持ちの本でカバーできているものの、最初の4章分はまさにブラッシュアップしたかった内容でドンピシャです。結構分厚い本ですが、やりたい事がリファレンス的に参照できて重宝しそうです。

 

ちなみに英語版はテキスト含め全文Githubで公開されているので、中身をちょい見してから、日本語で深く読みたい!となれば購入してみるのはいかがでしょう?

 

お世話になった本たち

色褪せたみたいな事を書いてしまいましたが、自分の中ではいろいろなきっかけを与えてくれた名著です。

 

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

 

この本でNumpyとpandasの存在を知りました。

 

この本からJupyter Notebookにたどり着きました。



 

 

 

Coursera : Machine Learning with TensorFlow on Google Cloud Platform修了

4月の末から取り組んでいたCourseraのMachine Learning with TensorFlow on Google Cloud Platformの全5コースですが、週末や朝晩の通勤時間なんかも使いながら、約1ヶ月と少しで全5コース修了しました。一応、自腹でちゃんと受講したよという意味を込めて、修了証も晒しておきます。

f:id:deutschina:20180527111917p:plain
※ブログなので、一応名前のところはマスクしてあります。

自分なりにCourseraのこのコースを使って学んで良かったところ、そうでもなかったところを残しておきます。

良かったところ

講義形式の方がアタマに入る

やっぱり手を動かしながらとは言え、本を読むだけなのと、実際に講師の人が話しているのを聞きながらでは、後者の方がアタマに入りますね。どこが重要なのかだとか、しゃべり方のトーンとかでも伝わってくるので。色んなアクセントの英語が聞けて、聞き取りの強化にも役立ったかもしれません。

ちゃんと聞いていないとQuizは意外と難しい

演習形式には2つあって、1つは、Jupyter notebook的なDatalabを順に実行していきながら結果を確認するもの。もう1つはQuiz形式で、一定の割合の得点を取らないとコース終了出来ないというタイプのもの。Quizは時々すごい難しい(ちゃんと内容を理解して聞いていれば難しくないはず)ものがぶっ込まれてきて、8時間以内に3回トライできるところを3回失敗してというのが1カ所だけありました。つまり、そのぐらい真面目に聞いていないとダメなので、真面目に講義を聴くモチベーションが上がりました。

資料は結構充実

コードなどは、Githubのレポジトリから、自分用の使い捨てのDatalabへ毎回コピー(clone)して使う事になっているので、必要最低限の労力で、必要なところを学べるようになっているのは便利でした。ただ、githubにおいてあると言うことは、ファイル自体はコース受講しなくても手に入れることが出来r(以下省略)

改善して欲しいところ・難しいところ

裏では自転車操業だった?

今回のspecializationは全5コースで、例えば1週間という設定でコースが終わると、その次の週に次のコースが始まるというような流れになっているのですが、開始予定の日付にコースを始められるという事はほぼ皆無でした。例えば、5/11に開始するというコースに、日米の時差を考えて5/12にEnrollしよう思っても、Coming soonというお知らせが表示されて、コースがlaunchされたらメールで連絡するとのこと。実際にコースが始まったのは5/14、launchのお知らせは5/15に届くという感じ。自分は気が長い方だから良いですが(どこが?)、気の短い日本人のオジサンだと、1週間遅れじゃないか!とか因縁付けそうです。これは、コース立ち上げ直後にジャンプインしたいわゆる「1期生問題」だった可能性もありますね。

コースによって1週あたりの分量が結構違う

コースの長さが違うのは仕方ないと思うんですが、その量に応じて期間をもう少し柔軟に調整してくれた方が嬉しいかなと思います。例えば、Feature Engineeringは1週間で収めるには相当な分量だったのに対し、最後のArt and Science of Machine Learningは、3週間という期間にしては講義の長さも課題の多さも少なすぎたりというのは感じました。(これはフィードバック出しておきました)

これは、Feature Engineeringの真ん中ぐらいのタイミングで呟いたもので、1週間にしては分量が多すぎない?と心の叫びですね(笑)

ずぶの素人がいきなりこのコースは厳しいかも

今回、英語でコースを受講して、もちろん字幕が用意されている部分で助かっている部分もあったけど、これまでに英語での入門書を何冊か読んでいたおかげで、内容が理解できたという部分もかなり大きかったかと。自分の場合は、あまりアカデミックに行くつもりはなくて、使う方に興味が向いているので、アカデミックな日本語で書かれていて脳内変換が大変だった日本語版よりも、英語版の方がスーッと入ってく感じがしました。

scikit-learnとTensorFlowによる実践機械学習

scikit-learnとTensorFlowによる実践機械学習

Hands-On Machine Learning With Scikit-Learn and Tensorflow: Concepts, Tools, and Techniques to Build Intelligent Systems

Hands-On Machine Learning With Scikit-Learn and Tensorflow: Concepts, Tools, and Techniques to Build Intelligent Systems

ちなみにまだ続きがあるらしい

ネガティブっぽいことも書いていますが、結果的には投下したコストに見合う内容だったかなと、比較的満足度高かったです。一連のコースも最終盤になっても、そういえば自然言語だとか、画像解析とかあまり出て来ないなと思っていたら、「そこら辺は次のSpecializationでやるよ。See you around!」てなオチになってました。なので続編のspecializationが出たら、また受講しちゃうんだろうな。。。