2018-01-01から1年間の記事一覧
はじめに 関数の呼び出し回数を数える、というのは割とよくあるサンプルプログラムです。 C言語で言うstaticなローカル変数を使うやつです。 #include <stdio.h> void f(void) { static int i = 0; i++; printf("%d\n", i); } int main(void) { f(); f(); f(); } /* r</stdio.h>…
本日、本ブログを独自ドメイン化しました。それに伴い、アドレスが変更になりました。 旧URL https://hayataka2049.hatenablog.jp/ 新URL https://www.haya-programming.com/ 旧URLからも301リダイレクトされますが、ブックマーク登録等はお早めの更新をおね…
はじめに matplotlibでは図(figure)の背景色と枠線(エッジ)の色を自由に設定できる。その方法についてメモしておく。 目次 はじめに 設定方法 plt.savefig()で反映されない まとめ スポンサーリンク (adsbygoogle = window.adsbygoogle || []).push({});…
matplotlibで図を描画するとき、余白に納得がいかないことがある。 調整方法を自分用にメモ。 余白の大きさを変える plt.subplots_adjust()を使うと余白を調整できる。 ドキュメントによると、デフォルト値は以下の通り。 left = 0.125 # the left side of t…
前置き この辺りの話、以前からちょっとモヤモヤしていたので、この際実験してすっきりさせておきます。 はじめに そもそも、pythonのメソッドは関数オブジェクト(もどき)のはずです。 ということは、クラス定義構文を使わなくても生成する手段があるはず…
はじめに numpy配列を連結したいとき、通常np.vstackやnp.hstack、np.concatenateなどを使うと思います。 しかし、これらでは一度で表せないような連結をしたいときがあります。たとえば、2次元配列を平面的に連結するような場合です。 >>> import numpy as…
はじめに pythonに不慣れな方は、よくタイトルのようなエラーを見かけると思います。 実際には、このエラーはTypeErrorで、全体は以下のようなものです。 TypeError: メソッドの名前 missing 1 required positional argument: 'self' では、どうしてこのエラ…
はじめに 最近回帰モデルで遊んでいるのですが、決定木系の回帰に好印象が持てなくなりました。 だって、決定木ってオーバーフィット番長ですよ? 回帰とは名ばかりのカクカクの回帰曲線が出てくることは目に見えています。 「そんなあなたのためにランダム…
はじめに 変数の入れ替えは、C言語の教科書などにも書いてある古典的な話題です。 一番古典的な方法では、こうやります。 >>> a = 10 >>> b = 20 >>> a 10 >>> b 20 >>> tmp = a >>> a = b >>> b = tmp >>> a 20 >>> b 10 ただ、このコードは……あまり書きた…
はじめに 「百発百中の砲一門は百発一中の砲百門に勝る」という東郷平八郎のものとされる発言があります。 発言の真偽や是非、ましてや東郷や旧日本海軍について何か述べようという訳ではありません。確率論的にどんな感じになるのかを考えてみようという試…
はじめに Rdige、Lassoといえば割と定番の正則化アルゴリズムです。 特にLassoはスパースな解を得てくれるという触れ込みです。なんだかカッコいいので、昔から触ってみたいと思っていました。 そこで簡単な関数で回帰を行い、どれくらい効果的か試してみま…
はじめに 線形な分類器は癒やし やれ、RBFカーネルだ、決定木だ、ニューラルネットだ、深層学習だ、と流行り物に乗っかって、言うことを聞かない非線形な分類器をなんとかねじ伏せている私たちは、きっと心が荒んでいるのでしょう。 そんな私たちに、線形分…
はじめに ライブラリをインストールして、いざ使おうと思ったら「ImportError: No module named '***'」が出ちゃった、という経験をされる方は多いと思います。 その対処法、トラブルシューティング手順についてまとめておきます。 なお、この記事はpipでイ…
pandasのgroupbyを使って、平均や標準偏差を計算する方法は検索するとすぐ出てきます。 ただ、「そういうの良いから、項目ごとに使いやすいイテレータにしてまとめてくれよ!」と思うときがありますよね。 >>> import pandas as pd >>> df = pd.DataFrame({"…
こんな辞書を考える。 d = {1:"a", 2:{"b":"hoge"}, 3:{"c":"fuga", "piyo":["foo", "bar"], "buzz":{"d":"hogehoge"}}} 次のような結果を得るにはどうすれば良いか。 {(1,): 'a', (2, 'b'): 'hoge', (3, 'c'): 'fuga', (3, 'piyo'): ['foo', 'bar'], (3, 'b…
はじめに 実行しているpythonインタプリタはどこにあるの? という疑問が生まれたときは、標準モジュールのsysを使って調べることができます。 見るものの選択肢は幾つかあります。なお、この記事の内容はすべて公式ドキュメントに基づきます。29.1. sys — …
はじめに numpy配列を分割したくなることがたまにありますよね。 当然というか、それ用の関数が用意されています。でも使い方をよく忘れるので覚書として書いておくことにします。 目次 はじめに np.split np.array_split vsplit, hsplit, dsplit まとめ ス…
わかっている人には当たり前のことですが、他の言語から来た人だと「んんん?」かもしれません。 こうなる >>> def f(): ... def g(): ... pass ... return g ... >>> a = f() >>> b = f() >>> a is b False >>> id(a) 139834257176640 >>> id(b) 1398342317…
リスト内包表記や辞書内包表記、ジェネレータ式などの内包表記は便利ですが、途中で止めたいときがあったとして(あるかどうかは知りませんが)どうしたら良いのでしょう? カウンタを使う こういう方法を真っ先に思いつきます。 >>> [x for x in range(20) …
はじめに pythonでどうしても変数名を動的に変えたい場合、execを使うことになる。 実用的には無意味というかやるべきではないのだけど(他の方法でもっと合理的なコードが書ける)、やった場合の挙動でちょっと気になる点があったので、検証して記事にまと…
はじめに RandomForestではOOBエラー(Out-of-bag error、OOB estimate、OOB誤り率)を見ることができます。交差検証と同様に汎化性能を見れます。 原理の説明とかは他に譲るのですが、これはちゃんと交差検証のように使えるのでしょうか? もちろん原理的に…
はじめに MeCabの辞書といえばipadicが定番ですが、unidicという辞書もあります。 ちょっとこれを使いたくなったので、使ってみることにしました。 なお、MeCabおよびmecab-pythonはすでにipadic等で使える状況になっているものとします。 目次 はじめに uni…
pythonでは多重リストのソートは次のように書ける。 import random from pprint import pprint data = [[random.randint(0, 20), random.randint(0, 20)] for _ in range(10)] print("data") pprint(data) print("\nsorted data") pprint(sorted(data, key=l…
概要 すでに語り尽くされた感のあるネタですが、TF-IDFで文書の重要な単語(重要語、あるいは特徴語)を抽出してみます。 numpyとsklearnを使うと、10行程度のコードで実現できるので簡単です。スポンサーリンク (adsbygoogle = window.adsbygoogle || []).p…
はじめに io.StringIOというものがあります。標準モジュールのioに属します。io --- ストリームを扱うコアツール — Python 3.7.1 ドキュメント これがどう便利かというと、「ファイルオブジェクトのように見えるオブジェクト」を作れます。スポンサーリンク …
はじめに オブジェクト指向は今となっては常識である。 常識であるがゆえに、いかに初心者にわかりやすく教えるかが課題になる。 世の中でオブジェクト指向の「教材」として使われている言語は、 Java Ruby の二択くらいだと思う。が、あえて僕はPythonを推…
はじめに 関数やメソッドに引数を渡す方法は、一般的には 値渡し 参照渡し の2通りがあると認知されている。 ところで、『参照の値渡し』という言葉も(ほぼ日本語Web圏限定で)存在する。これは「いわゆる『参照渡し』は参照自体を書き換えるんじゃなくて、…
たまに誤解している人がいるので、書いておく。 pythonのオブジェクトにはimmutableという概念がある。これはオブジェクトが変更不可能であるということを示す。intやstr, tupleなどが代表的なimmutableなオブジェクトである。 オブジェクトがimmutableであ…
はじめに 機械学習でパラメータ・チューニングをしたい場合、グリッドサーチを行うのが定石とされています。sklearnではグリッドサーチはGridSearchCVで行うことができます。sklearn.model_selection.GridSearchCV — scikit-learn 0.21.2 documentation それ…
はじめに VarianceThresholdは名前の通り、分散がしきい値以下の特徴量を捨てます。sklearn.feature_selection.VarianceThreshold — scikit-learn 0.20.2 documentation これといってすごいところはありませんが、気楽に使えそうなので試してみました。 目次…