数学パズル
Pythonの勉強を再開という事で、Checkioをやるかなも思ったけど、「プログラマ脳を鍛える数学パズル」という本を買ってみた。もともとはCodeIQで出題された問題らしく、それをまとめて70問掲載した本らしい。とりあえず、いろいろな書き方を学習するのに、写経以外に調べたり考えたりする要素が必要なので、これをやってみることに。この本は、ほとんどのコードがRubyで書かれているので、RubyをPythonに直す感じ。
と、最初の数問は余裕だろうと思っていましたが・・・結構難しい。最初の問題は、数字の回文だったけど、RubyのreverseをPythonでするにはどうすればいいのだ・・・と改めて基本的なとこを知らないなと思いました。
調べた結果、数字を一旦文字列にstrで変換して、以下のようにすれば逆のならびになることを確認。2進数はこれでうまくいったけど、8進数がうまくいかない。
8進数はhex(number)で表示されるけど、どうも本の解答と答えが違う。hex(585)とすると'0x249'となる。0xを取り除いても、249が8進数の585ではなくて1111のはずなんだけど、ここでむーとなって、いろいろ調べたけどあまりよくわからないので次の問題に行く事にした(弱)。今度Pythonに詳しい友達に会うから、聞いてみよう。
翌日談:すっごいかっこ悪くて、本をちゃんと見てなかったため、16進数のhexを8進数と勘違いしていて、8進数はoct(585)で1111になることが分かりました。あーすっきりした!
rvest
Pythonではないけど、Rのライブラリ、rvest使ってみたので、簡単に備忘録。
rvestはWebのスクレイピング。
もっといろいろ出来そうだけど、簡単にWebのテーブルを抜き出すときは
topmedal <- read_html("http://www.sports-reference.com/olympics/") topmedal_table <- html_table(topmedal)[[1]] colnames(topmedal_table) = topmedal_table[1,] topmedal_table <- topmedal_table[-1,] topmedal_df <- data.frame(topmedal_table[-1,]) head(topmedal_df) head(topmedal_table)
てな感じになる。ページに複数のテーブルがあるときは、html_tableで抜き出すと、リストになって入っているので、1個目のテーブルを指定するときは、上のコードのように1としているという訳。
そして、何気にこのテーブル、セルの結合がヘッダーのところでしてあるんだけど、とりあえずそれでも読んでくれる。ただしヘッダーは結合されたセルがヘッダーになってるので、そこを修正している。
とりあえず、これはちょこちょこ使いそうなので、メモ。
ここ2ヶ月ほど、Pythonの学習が止まってしまった。またぼちぼち始めなくては・・・
最近勉強してること。
Pythonista への道
ここ最近忙しくて、あまりコードを書けなかったけれど、ようやくまたコーディングできる日々が始まった。よかったよかった。とりあえずCheckIOをやりながら、基礎的なことの復習。CheckIOは問題も面白く、ジャンルの違う問題があるので、面白い。Numpyとか使えないのが、ちょっと残念だけど。
Pythonistaへの道のりは遠いが、ちょっとずつでも継続してやっていこう。
エラーと調べ物の1日
今日はがっつりコードをいろいろ書いて勉強するぞーとおもったのに、本のコードがうごかなかったり、データがダウンロード出来なかったり、動いたと思ったら時間がすっごくかかったり。。。
まぁでも、とりあえず少しは進んだと思いたい。。。
今日やったことは、またここにアップしといた。後から何かの役に立つ事もあるだろう。Elastic Netのパラメータ選択もCVでやれる関数があるんだなというのは、勉強になった。いいなと思ったけど、やっぱり時間はかかった。でも今ひとつ、どういう時にElastic Net で、どういう時にはLassoがいいとかの判断が微妙だけど、データによりけりなんだろうな。
実践機械学習システムの本の7章の後半で使われているデータは、サポートページからもはっきりとダウンロード方法が分からず、8章も、それをつかった解析なので、この後をどうするか、考えるところ。問い合わせだけしてみるかな。
なんか、ちょっと疲れたけど、pandasとか復習しておくかな。あとjavaもちょこっとずつやっておくか。
はやくスラスラコーディング出来ますように。でもコツコツやってくしかないんだろうな。そんな事を言ってる間に一行でも書けってね、はい、がんばります。