唯物是真 @Scaled_Wurm

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

python

Twitterで特定のユーザー達が共通してフォローしているユーザーをリストアップする

前にこんなツイートをしたホクソエムからフォローをされている数で定義されるホクソエム数— 無限猿(id:sucrose)@29月病 (@Scaled_Wurm) 2016年4月1日 連休で時間があったのでTwitter APIに慣れるついでに計算してみた ホクソエムとは よくわからないけど、Tw…

はてなブックマーク件数取得APIをPythonで叩く

前回の記事ではてなブックマーク件数をPythonで収集したので方法をメモしておく sucrose.hatenablog.comAPIのドキュメントはここ はてなブックマーク件数取得API - Hatena Developer Center 下記のように、調べたいURLをURLエンコードして「url=調べたいURL…

Matplotlibでxkcd風にプロットをする

Matplotlibにxkcd風にグラフをプロットする機能があるらしいので試してみた xkcd - Wikipedia xkcdは英語のWebコミックサイトで本の虫とかのサイトで翻訳されてるのをたまに見かける 本の虫: xkcd 1526: プラシボ阻害薬 Matplotlib 1.3から以下の関数を実行…

最良優先探索で15パズルを解いてみた(paizaオンラインハッカソン5+)

paizaの問題で15パズルを解くプログラムを書きました 与えられた配置をできるだけ少ないスライド回数で解く問題です(実行時間時間制限あり) レナとミナミの国際プログラミング選手権 | paizaオンラインハッカソン5+ 15パズル 15パズル - Wikipedia 1から15の…

Pythonワンライナーでpaizaオンラインハッカソン5に挑戦してみた

paizaがイラスト付きでプログラミングの問題を出しているpaizaオンラインハッカソンも5回目になりました 前回ぐらいから難易度が下がった代わりに、イラストとかストーリーとかに力を注ぎ始めているみたいです(?) なんとストーリーの分岐がありますマンガ版…

じゃんけんが終わるまでの平均回数を求める

じゃんけんをするときに人数が多いとあいこが増えて、なかなか終わらなかった経験があると思います \(n\)人でじゃんけんした時に、ただ1人の勝者が決まるまでの回数の期待値(平均回数)を計算してみました また大人数でもすぐに勝負がつくゲーマーじゃんけん…

組み合わせの個数(二項係数)を計算する

Pythonで組み合わせ(Combination)を計算 - 唯物是真 @Scaled_Wurm 数年前に上のような記事を書きましたが、ライブラリを使わない場合の計算について書いてなかったので記事にしました 組み合わせとは いくつかの要素の中から、順番を区別せずにいくつかの要…

毎日が天皇誕生日になるには何回天皇が交代する必要があるか(シミュレーション版)

今日は天皇誕生日ですが、以前「あと何回天皇が交代すれば毎日が天皇誕生日になるか(不謹慎)」の期待値を求める記事を書きました 毎日が天皇誕生日になるには何回天皇が交代する必要があるか - 唯物是真 @Scaled_Wurm 毎日が天皇誕生日になるには何回天皇が…

ツイート時間の分布をクラスタリングしてみた

前にツイート時間の分布の類似度を求めるというのをやりました Twitterの投稿時間で類似度を計算してみた - 確率分布の類似度 - 唯物是真 @Scaled_Wurm Twitterの投稿時間で類似度を計算してみた - 確率分布の類似度 - 唯物是真 @Scaled_Wurm今回はツイート…

NumPyのブロードキャストのメモ

Pythonの行列演算ライブラリのNumPyはforループを使って計算すると遅いので、できるだけ行列演算やベクトル演算だけで計算を行いたいNumPyでは大きさの違うarray同士で計算するときのブロードキャストという仕組みがあります これを使うと複雑な計算が簡単な…

Advent Calendarの参加者は毎年どれぐらい入れ替わっているのか?

Machine Learning Advent Calendarの参加者を去年の参加者と比べると入れ替わりが激しいんだなーと思ったので他のも調べてみましたMachine Learning Advent Calendarの今年の分読んでたけど、2014年と2013年の共通の執筆者って4/25ぐらいしかいないんだなぁ …

Pythonで出力したCSV(UTF-8)がExcelで読み込めなくて困った話

Pythonで出力したUTF-8のCSVを渡したら「文字化けしてExcelで読めない」と言われて困りました原因は文字コードがUTF-8の時によく問題になるBOM(バイトオーダーマーク)です バイトオーダーマーク - Wikipedia UTF-8のファイルにはBOMが付いている場合と付いて…

Twitterに何時に投稿したらフォロワーに読まれやすいのか調べてみた

TwitterにはTwitterアナリティクスというアクセス解析があります インプレッション(見られた数)やふぁぼられた数、リツイートされた数、その他多くの情報がわかります 最近のデータをCSVでダウンロードできるようになっています(あまり長期のデータはダウン…

Pythonワンライナーでpaiza Online Hackathon 4 liteに挑戦してみた

paizaで新しいオンラインハッカソンが出題されていたので挑戦してみました エンジニアでも恋がしたい〜転職初日にぶつかった女の子が同僚だった件〜|paizaオンラインハッカソン4 Lite マンガ版「エンジニアでも恋がしたい!」〜転職初日にぶつかった女の子…

ニコニコ動画 『スナップショット検索API』 に触ってみた

一人アドベントカレンダーの一日目です(違10月にニコニコ動画から『スナップショット検索API』というのが出ていたので触ってみました 毎日朝5時の時点のデータのスナップショットから検索できるAPIでニコニコ動画のコンテンツを解析する目的で検索/取得する…

サザエさんのジャンケンの次の手を決定木で予測+可視化してみた

前に決定木の可視化をしようと思ってやってなかったのでやっておきます決定木のライブラリは例のごとくscikit-learnを使う pythonの機械学習ライブラリscikit-learnの紹介 - 唯物是真 @Scaled_Wurm pythonの機械学習ライブラリscikit-learnの紹介 - 唯物是真…

Derangement

Derangement - Wikipedia, the free encyclopedia 完全順列 - Wikipedia Derangementは\(1, 2, \dots, n - 1, n\)を要素とする順列のうち、すべての\(i\)番目の要素が\(i\)と等しくない順列のこと(不動点の個数が\(0\))たとえば\(1, 2, 3\)を要素とする順列…

素因数分解とかエラトステネスの篩(ふるい)とかのメモ

素数を求めたり素因数分解するのは競技プログラミングでたまに出てきます 計算量とか詳細をあまり知らなかったので基本的なアルゴリズムについて調べてみましたアルゴリズムや数学についてはあまり詳しくないので間違いがあったら指摘してください ランダウ…

PythonでpaizaオンラインハッカソンLiteに挑戦した

天才火消しエンジニア霧島「もしPMおじさんが丸投げを覚えたら」|paizaオンラインハッカソンLite 問題設定 \(n\)個の会社それぞれに、エンジニアの人数\(q\)と価格\(r\)が与えられる 会社をいくつか選んで契約した時に、エンジニアの人数の合計がある値\(m\…

Pythonの文字列中の変数展開(str.format)のメモ

Pythonで文字列中の変数展開をするときの書式について調べたのでメモ http://docs.python.jp/2/library/string.html#formatstrings 基本的に文字列中の{と}の間にいろいろと指定して、展開したい変数をformat関数に与えるようになっています ちなみにformat…

CodeIQ《結城浩のスペーストーキー問題》に挑戦した(Python)

今回のは簡単だった 挑戦者求む!【アルゴリズム】スペーストーキー社の危機を救え! by The Essence of Programming 結城 浩│CodeIQ https://codeiq.jp/achievement/135 概要 以下のURLで動いている文字列の変換の仕組みを推定する http://spacetalky.textf…

Pythonでシーザー暗号

シーザー暗号はすべてのアルファベットを\(n\)個ずつずらす暗号です。 シーザー暗号 - Wikipedia ABCDEFGHIJKLMNOPQRSTUVWXYZ ↓(+3) DEFGHIJKLMNOPQRSTUVWXYZABC暗号を元の文に復号化するときには逆に\(-n\)文字ずらさないといけないのですが、\(13\)文字ず…

AOJの問題を推薦――協調フィルタリングを試してみた

AIZU ONLINE JUDGE(AOJ)という競技プログラミングの問題を公開しているサイトがある。 AIZU ONLINE JUDGE: Programming Challenge 1年以上前にAOJを少しだけやっていた頃に、AOJの問題を推薦するスクリプトを書いたものの、特に公開も使用もせずに放置してい…

Pythonのcollectionsモジュールが地味に便利

PythonのcollectionsモジュールにはdefaultdictやCounterなどの便利なデータ構造があります。 いくつかメモ代わりに紹介しておきます defaultdict 辞書にキーが含まれない場合のデフォルト値を指定できます。 リストをデフォルトで持つ辞書などが作れます。 …

PythonでpaizaオンラインハッカソンVol.2に挑戦した

過去にVol.1にも挑戦しましたけど、今回も挑戦してみた 女子大生とペアプロするだけの簡単なお仕事です!|paizaオンラインハッカソンVol.2 とりあえず100点取れました mugenenさんの採点結果[100点] す、凄いなんて思ってるわけじゃないんだから!|paizaオ…

TopCoder SRM 612 Div2 oox 1097->1211

14th, 735.75pts, +2/0 challenge Volatility ?->394前回-25ptsを取ってDiv2に落ちたのですが、よい順位をとれたのでDiv1に復帰できました。 250: LeftAndRightHandedDiv2 右利きの人と左利きの人が連続した椅子に座っている。 右利きの人の左側に左利きの人…

pyqueryでHTMLからデータを抽出

pyqueryはjQueryと同様にHTMLの操作ができるPython用のライブラリです。 PythonでHTMLからのデータ抽出といえばBeautiful Soupの名前をよく見かけますが、jQueryを知っている人にはこっちの方が使いやすいと思います。内部的にはlxmlを使用しているので以下…

ニコニコ動画のコメントの投稿日時の分布

下の論文が最近はてなとかTwitterとかで話題になりました CiNii 論文 - マイクロブログの投稿時間に着目したユーザの職業推定に関する研究 「そういえば昔ニコニコ動画のコメントの投稿時間を調べて下書きに放り込んでおいたなー」と思い出したので公開例の…

大量のテキストからランダムに少数の行を抽出したい - Reservoir Sampling

前に以下のような記事を書きましたが、大量のテキストではうまくいかなかったので新たに書きました ファイルからランダムにN行取り出す(shufコマンド) - 唯物是真 @Scaled_Wurm 上の記事ではテキストをランダムに\(k\)行取り出したい時"shuf -n k"コマンドで…

Pythonの演算子オーバーロードに触ってみた

四則演算(+-*/)などの演算子について、クラスに独自の振る舞いを定義することができます これは演算子オーバーロードと呼ばれます Pythonではよくある演算子だけでなく"len()"や"del"などの様々な演算子(?)に対してもオーバーロードができます日本語だと以…