唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

python

MessagePackとcPickleの速度を比べてみた

MessagePackとcPickleはデータのシリアライズに使われるライブラリです。 DSAS開発者の部屋:MessagePackのPython Bindingをリリースしました MessagePackとcPickleの速度比較は↑の記事にありますが、cPickleは↓の記事のようにプロトコルバージョンによる速度…

Project Euler Problem 61

Problem 61 - Project Euler 3,4,5,6,7,8角数を計算して、それぞれのn角数から1つずつを使って、最初の2桁と最後の2桁が一致していくようなループ(3つだけの場合の例、8128, 2882, 8281)を見つける。2桁が限定される時点でかなり制限されるので、あらかじめn…

天下一プログラマーコンテスト2012 予選Bに参加 #klabtenka1 #AtCoder

Welcome to 天下一プログラマーコンテスト2012 予選B - 天下一プログラマーコンテスト2012 予選B | AtCoder A問題しか解けなかった。 B問題で爆死して、C問題は部分点のみで85位orzあまりにもアレだったのでC問題は制限時間後に解いた。 A: 孫子算経 - 天下…

AtCoder Regular Contest #006に参加しました

Welcome to AtCoder Regular Contest #006 - AtCoder Regular Contest #006 | AtCoder 実は初参加. 3問目まで解けて62位でした A: 宝くじ - AtCoder Regular Contest #006 | AtCoder 宝くじが何等になっているか計算. そのまま書くだけ. 途中まで数字の重…

Google Code Jam 2012 Qualification Round問題B, C

二時間ぐらいかけてBとCだけ解けた. B 値がp+2*(p-1)以上の個数と,あるいは値がp+2*(p-2)以上の個数(S個まで)を足せばよい. C 数値の前半と後半を入れ替えた時に以下をチェックすればよい. 先頭が0でない 元の数値と等しくない 値が範囲内 すでに出てい…

cProfileでpythonスクリプトのボトルネックを調べる

Pythonのスクリプトの遅い部分を調べるためにcProfileという標準のプロファイラを使ってみました.プロファイラというのはプログラムの実行効率を調べるツールです. cProfileを使うと関数が呼び出された回数(再帰の有無含む)や,どれぐらいの時間を処理に使…

シリアライズ用のライブラリMessagePackを使ってみた

Pythonでシリアライズに使えるライブラリは標準でもpickleやjsonなどがありますが,研究室でMessagePackというものを使っている人がいたので試してみました. MessagePackはバイナリ形式に保存するタイプのもので高速かつ軽量とのこと. Python以外にも様々…

日本語WordNetのフロントエンドを弄る

日本語Wordnetという単語の関係や意味を示した辞書があり自然言語処理ではよく使われています. Python用フロントエンドとしてはy_yanbeさんによるものが知られています. 日本語WordNetの最新バージョンではファイル名が変わっていたり,試してみるとsyns(…

CODE VS用のPythonテンプレート

というわけでCODE VSにmugenenって名前で参加してます. Pythonでクライアントとの入出力に苦しんだので,同じ苦しみを味わう人が減るようにテンプレートを晒しときます. もっと効率の良い書き方があったら教えてくれると嬉しいです. Windows,Python 2.7.…

Pythonでlistとsetを探索するときの速度比較

timeitモジュールを使って経過時間を計測します. 研究室の後輩がlistからsetにしたら速くなった!と喜んでいたのでどれぐらい早くなるか検証. 参考 http://www.python.jp/doc/release/library/timeit.html http://morchin.sakura.ne.jp/effective_python/t…

matplotlibを使おう

Python用のグラフ描画ライブラリのmatplotlibを使って見ました. 使いこなせるようになればRからPythonに完全に移行できそうです. 以前書いたソフトマージンSVMのコードを用いて可視化して見ました. http://d.hatena.ne.jp/sucrose/20111015/p1 結果は以下…

Pythonで日本語関係のイライラ

Pythonを使い始めたときに,一番よく見るのはUnicode系のエラー(UnicodeEncodeErrorとかUnicodeDecodeErrorとか)だと思います. 日本語を扱ってると非常にイライラしてきます. 基本的な対策をメモしておきます. 対策 ソースコードの文字コードを指定 ソ…

ソフトマージンSVMを書いてみた

numpyの練習を兼ねてソフトマージンSVMを書きました. 行列演算に関してはRと比べても大きな不自由は感じないですね. 最適化部分は二次計画法のソルバー(openopt, cvxopt)に丸投げ. openoptから呼べるソルバーのうちデフォルトで含まれているqlcpではデー…

株式会社アイリッジのクイズに挑戦

採用テスト トレーディングカードコンプリート問題100万種類のトレーディングカードがあり、15枚1セット525円で販売されています。全ての種類をコンプリートするまで買い続けるとき、かかる費用の期待値はいくらになるでしょうか。ただし、1セットには全て重…

Pythonで組み合わせ(Combination)を計算

Pythonで組み合わせの総数を計算する関数がなかったので調べてみた. itertools.combinationsは総数を計算するときには使えません. 再帰で計算すると大きな数の時にスタックの最大数を超えてしまってダメ. scipy.misc.comb scipyにscipy.misc.combがあるの…

64bitのWindowsでPythonの環境づくり

新しいPCにPythonの環境構築をした時のメモ. Pythonのインストール Python標準リリース どのバージョンをインストールするか悩んだけど2.7.2をインストール. .amd64と付いているインストーラが64bit用なので注意. インストール後にパスを通す. distribut…

テキスト中の漢字の数を調べる

import unicodedata def countKanji(text): s = 0 for c in text: if (unicodedata.name(c)[0:3]) == 'CJK': s += 1 return s

while/else,for/else

Pythonではwhileやforループにelseが使えると知ってびっくり. elseはbreakなどで抜けずに通常の方法でループが終了したときに実行されるらしい. 今までは途中でbreakしたときと最後まで実行したときを区別するために,わざわざフラグ変数を作っていたので…

contextlibモジュール

urllib2で開いたものを自動的にcloseしたかったんですが,調べたらcontextlib.closing()を使えばwith文で対応できるみたいです. import contextlib import urllib2 with contextlib.closing(urllib2.urlopen('http://www.python.org')) as page: for line i…

PythonでファイルのMD5を計算

hashlib を使えば簡単. ファイルをバイナリモードで開かないといけない. ファイルサイズが大きい場合は,少しずつファイルを読み込んで update 関数を利用することが必要? import hashlib def md5(filename): with open(filename, "rb") as f: data = f.r…

Pythonでsubprocessを使って複数のコマンドをパイプでつなぐ

おそらく以下の記事の方法のほうが簡単です(追記、2013年11月9日) 続Pythonでsubprocessを使って複数のコマンドをパイプでつなぐ - 唯物是真 @Scaled_Wurm knpを使ってみようと思ったのですが,呼び出すときにknpとjumanをパイプでつながないといけません. …

波ダッシュと全角チルダに苦しめられる

Windows上でPythonスクリプトを書いてファイルを処理しようと思ったら上手くいかなくて困ってます.具体的には「〜」がファイル名に含まれているときに失敗します. 調べてみたところ全角チルダ「〜」と波ダッシュ「〜」には色々と問題があるみたいですね. …

電撃文庫の作家の筆の速さ

上で作ったクラスを使って2010年に出版された本を作者ごとにカウントしてみた. やっぱり複数シリーズ書かれている方はたくさん出してますね. 出力 入間人間, 6 川原 礫, 6 水瀬葉月, 5 鎌池和馬, 5 鴨志田一, 4 成田良悟, 4 深沢美潮, 4 折口良乃, 4 ソー…

電撃文庫の新刊情報を取ってくる

最近Pythonに触り始めました. 練習も兼ねて,誰得ですが,電撃文庫の新刊情報を取ってくるスクリプトを書きました. 外部ライブラリのBeautifulSoupがないと動きません. 公式サイトのソースを見てると時期によってHTMLの構造が違うので,他の年月日でもち…