静かなる名辞

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


2019-03-01から1ヶ月間の記事一覧

TechAcademy盗用事件 公式発表と深まる疑念

TechAcademyマガジンで、teratailの質問・回答の盗用疑惑があり、前回の記事で取り上げました。私が書いたその記事はTwitterやはてブ経由で拡散して多くの方に見ていただき、TechAcademyマガジンの運営上の問題が多くのインターネットユーザに共有されました…

TechAcademyがteratailの質問・回答を盗用していた件

はじめに 私はteratailというQAサイトで回答をしていて、pythonカテゴリ総合一位だったりします。あちこちのサイトを見ていたら、TechAcademyというサイトがteratailの質問と回答を盗用しているという話を見つけました。図々しいと思いながらも情報をまとめ…

【python】複数のlist(など)を対象にmapを使う

あまり知られていませんが、組み込みのmapは実は複数のiterableを引数に取れるように定義されています。 追加の iterable 引数が渡されたなら、 function はその数だけの引数を取らなければならず、全てのイテラブルから並行して取られた要素に適用されます…

【python】__slots__は速度的にどうなのか

概要 __slots__を使うとメモリをケチれるという話はよく見かけますが、属性アクセスの速度については話を聞かないので調べてみました。 実験コード import timeit class A_slots: __slots__ = ["a"] def __init__(self): self.a = 42 class A_attr: def __in…

【python】辞書で複数の値を一つのキーにする

概要 複数の値を一つのキーにまとめて、結果と対応させたいというケースがあります。 >>> d = {1,2:"hoge", 3,4:"fuga"} # こんな感じ? 残念ながらこれはエラーになります。 File "<stdin>", line 1 d = {1,2:"hoge", 3,4:"fuga"} ^ SyntaxError: invalid syntax </stdin>…

【python】sklearn 0.20でclassification_reportの仕様が変わっていた

はじめに 遅まきながら、sklearn 0.20でclassification_reportの仕様が変わったことに気づきました。 基本的な使い方は変わりませんが、それなりに大きな変化になります。 変更点 まず0.19の引数と出力のフォーマット。 sklearn.metrics.classification_repo…

【python】print関数を使いこなそう

ぼくたちは本当のprintを知らない pythonのprint関数については、たかがprintと思っている人も多いと思いますが、しかしオプションをすべて言える人はあまりいないと思います。把握しておくと出力の細かい制御をしたいとき役立ちます。 そこで、printの使い…

【python】sklearnのRandomizedSearchCVを使ってみる

はじめに RandomizedSearchCVなるものがあるということを知ったので、使ってみます。うまく使うとグリッドサーチよりよい結果を生むかもしれないということです。sklearn.model_selection.RandomizedSearchCV — scikit-learn 0.21.3 documentation グリッド…

numpyやpandasでThe truth value of ... is ambiguous.のようなエラーが出たときの対処

numpyやpandasでThe truth value of ... is ambiguous.のようなエラーが出たときの対処 条件式を使って生成したようなboolのnumpy配列を使っていると、次のようなエラーが出ることがあります。また、pandasのSeriesやDataFrameでも同様のエラーが発生する場…

ファイルオブジェクトのcloseはflushも行う。確実にしたければfsync

以前、「ファイルオブジェクトのcloseメソッドは同時にflushも行う」ことを知りました。 どうやらcloseするときは内部でflushメソッドが呼ばれるようです。 このストリームをフラッシュして閉じます。 io --- ストリームを扱うコアツール — Python 3.7.3rc1 …

scipy.optimize.curve_fitを使っていろいろな関数にフィットさせてみる

はじめに scipy.optimize.curve_fitを使うと曲線あてはめができます。いろいろな関数にフィッティングさせてみて、うまくいくかどうか試してみます。scipy.optimize.curve_fit — SciPy v1.3.0 Reference Guide f(x) = x + a ただの足し算。 import numpy as …

【python】numpyで任意の底でlog

任意の底でlogを計算したいときがあります。 結論から言うと、そういう関数は用意されていません。ただし、簡単な処理で実現することは可能です。 ちなみに、デフォルトで用意されているのはlog(eが底), log10, log2のみです。Mathematical functions — Nu…

【python】scipyで線形最小二乗法

概要 scipyのscipy.optimize.lsq_linearで最小二乗法が使えます。 使い方 最低限必要な引数は、 A いわゆる説明変数です。基本的には(データ数, 次元数)のshapeでいいのですが、バイアス項を入れたければすべて1にした列が要ります。 b いわゆる目的変数です…

【python】ジェネレータ式の使い所

概要 ジェネレータ式を使っているコードを見かける機会は少ないですが、ケースによっては有用なので使い所を紹介します。 この記事を読むと、漫然と使われたリスト内包表記に対して「ジェネレータ式の方が良くない?」と言えるようになったりします。 ジェネ…

【python】windowsではopenの引数にフォルダを指定するとPermissionErrorになる

最近はじめて知った仕様なのですが、windowsではタイトルの通りになります。 Linuxの場合。 $ mkdir hoge $ python >>> open("hoge") Traceback (most recent call last): File "<stdin>", line 1, in <module> IsADirectoryError: [Errno 21] Is a directory: 'hoge' 大変</module></stdin>…

【python】組み込み関数all・anyの引数はできるだけジェネレータ式などで書く

概要 組み込み関数all・anyはiterableの真理値すべてに対してand・orを計算します。 >>> all([True, True, False]) False >>> any([True, True, False]) True このall, anyは引数を短絡評価してくれます。ただし、条件式をリスト内包表記などで書くと台無し…