静かなる名辞

pythonとプログラミングのこと

2019/03/22:TechAcademyがteratailの質問・回答を盗用していた件
2019/03/26:TechAcademy盗用事件 公式発表と深まる疑念


【python】collections.ChainMapの使い方を理解する

pythonで複数の辞書をマージするにはどうしたらいいのでしょうか。forループ? 辞書内包表記を使う? updateメソッド? 実は、ChainMapというものもあります。実は、ChainMapというものもあります。実は、ChainMapというものもあります。その使い方について…

【python】外部プロセスと標準入出力で通信する

pythonで外部プロセス(subprocess)と、標準入出力を介したやりとりをしたいときがある。 目次 やってみること 簡単な方法 とりあえずやる 解説 応用:複数回入出力を送りつけたい まとめ やってみること 今回は問題例として、形態素解析器MeCabをpythonか…

【python】nltkで英語のStemmingとLemmatization

Stemming(ステミング)は単語の語幹を取り出したいとき、Lemmatization(レンマ化、敢えてカタカナ表記するとレンマタイゼーション)はカテゴリごとにグルーピングしたりしたいときに使う。 公式ドキュメントはここ。 nltk.stem package — NLTK 3.4 documen…

【python】matplotlibで3次元データを描画し、回転アニメーションにする

3次元くらいのデータを描画したいときがある。簡単に散布図にできると便利。 データの用意 sklearnのload_irisなどで取得できるデータセットを入力にする前提の次のような関数を作った。 from sklearn.decomposition import PCA def gen_3d_data(dataset): p…

【python】flymakeのエラー

次のようなエラーを吐かれた。 Flymake: Configuration error has occurred while running(***/flymakes ***.py).Flymake will be switched OFF 原因 色々あるらしいけど、今回は文字コード指定をタイポした瞬間エラーが出た。 # coding: UTF-9 たぶん、これ…

【python】関数オブジェクトは辞書のキーに使える!

「まさかできねーだろw」と思ってやったらできたのでびっくりしたよ! >>> def hoge(): ... return None ... >>> {hoge:1} {<function hoge at 0x7f025f18cf28>: 1} ||< えぇ…。 lambdaでもできる。 >|python| >>> fuga = lambda:None >>> {fuga:2} {<function <lambda> at 0x7f0243880510>: 2} hogeとfugaは関</function></function>…

【python】cabochaのpythonバインディングの変な挙動

環境 ubuntu 14.04 cabocha 0.69 cabocha-python 0.69 問題の概要 変な挙動だった。というか率直に言ってバグなのでは? >>> import CaboCha >>> cparser = CaboCha.Parser() >>> tree1 = cparser.parse("吾輩は猫である。") >>> print(tree1.toString(CaboC…

【python】区切り文字を含めてsplitする

正規表現によるsplitで区切り文字(あるいは区切り文字列)を含めたいときがある。デフォルトでは区切り文字は消える。 たとえば、文を句点で分割する場合。 >>> import re >>> string = "吾輩は猫である。名前はまだない。" >>> re.split("。", string) ['…

日本語モダリティ解析器 Zundaを試す

日本語のモダリティを解析できるらしい。「文中のイベント(動詞や形容詞など)に対して、その真偽判断(イベントが起こったかどうか)、仮想性(仮定の話かどうか)などを解析します」とのこと。 公式ページはたぶんここ。jmizuno.github.io 環境 ubuntu14.…

【python】nltkで英語の形態素解析

形態素解析、いわゆるPOS taggingと呼ばれるようなタスクをnltkを使うと簡単に行なえます。日本語の解析ではmecabやjumanを使うと思いますが、英語だとnltkに入っているものが使えるので(インストールとかが)楽です。

【python】文字列を一文字ずつのリストにする

文字列はそもそもiterableなので、これが必要なことは滅多にないんだけど・・・。 >>> for c in "hogehoge": # そのままfor文に渡してオッケー。 ... print(c) ... h o g e h o g e この前必要になったので(ライブラリの引数でlist型を要求された)考えてみ…

【python】scipy.statsのzscoreで警告が出るときの対策

概要 z得点を計算しようとしたとき、このような警告を見かけることがあります。 RuntimeWarning: invalid value encountered in true_divide これが出た場合、結果にはnanが含まれています。なので後段の分析で落ちたりします。 >>> import numpy as np >>> …

【python】numpyでデータをランダムサンプリング

機械学習に使うデータをランダムサンプリングしたいときがある。簡単そうなのにやり方が見つからないから自分で書く。 目次 実装方針 重複ありランダムサンプリング 重複なしランダムサンプリング 実装と結果 そもそもなにに使いたかったの? 裏技 ※追記(参…

【python】LDA(線形判別分析)で次元削減

一般によく使われる次元削減手法としてはPCA(主成分分析)がありますが、他にLDA(Linear Discriminant Analysis:線形判別分析)を使う方法もあります。 これは本来は分類に使われる判別分析という古典的なアルゴリズムで、データが一番分離しやすくなる軸…

【python】sklearnのPCAでsvd_solverによる速度差を比較

sklearnのPCA(主成分分析)がやたら遅くて腹が立ちました。計算コストを下げるために次元削減してるのに、次元削減で計算コスト食ったら意味がありません。 とにかくこのPCAを高速化したかったので、svd_solverを変えてどうなるか試しました。なお、腹が立…