サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
大谷翔平
hayataka2049.hatenablog.jp
概要 pythonの環境構築に悩む人たちのために、環境構築についてまとめておきます。 目次 概要 はじめに 覚えておいてほしい大切なこと pythonをやるのに向いたOS windows Mac OS linux系 その他のOS Web上実行環境 結論 生のシステムのpythonを使う(システムに直接インストールしてそのまま使う) パッケージマネージャについて 仮想環境編 定石 venv virtualenv pyenv anaconda その他の仮想環境 virtualenvwrapper pyenv-virtualenv pyvenv conda pipenv 結論 まとめ スポンサーリンク はじめに pythonは最近よく流行っているスクリプト言語ですが、残念ながら環境構築のとっつきづらさは他の言語の比ではないと思います*1。初心者が変な環境を作ってトラブルの元になる・・・というのも
はじめに io.StringIOというものがあります。標準モジュールのioに属します。 io --- ストリームを扱うコアツール — Python 3.7.1 ドキュメント これがどう便利かというと、「ファイルオブジェクトのように見えるオブジェクト」を作れます。 スポンサーリンク 読み込みに使ってみる こんな感じですかね。 import io txt = """hoge fuga piyo """ f = io.StringIO(txt) for line in f: print(line, end="") """ => hoge fuga piyo """ 何が嬉しいかって? たとえば、これを見てください。 import io import pandas as pd txt = """ number,name,score 1,hoge,100 2,fuga,200 3,piyo,300
はじめに クラスタリング結果の良し悪しを評価したいことがあります。 正解ラベルがないデータに対してクラスタリングを行った場合(つまり本当に教師なし学習でやる場合)、基本的にクラスタ内距離二乗和やクラスタ中心間の距離などを使ってやる以外の方法はありません*1。 しかし、正解ラベルがあるデータに対してクラスタリングをかける、というシチュエーションもあります。たとえばクラスタリング手法の性能評価だとか、相手にするデータセットが教師なしでやってどれくらいまとまる性質があるか調べるとか、そんな感じのときです。 こういうとき、評価指標がないと困ります。そこで、評価指標を考えます。何通りかあるようですが、簡単に計算できるのはエントロピーです。 説明 エントロピー(厳密にはシャノン情報量)は次式で定義されます。 は対象とする事象を表します。 厳密な理論や定義などはwikipediaでも読んでいただくとして
はじめに ランダムフォレスト(RandomForest)とSVM(Support Vector Machine)はよく比較される分類器です。でも、様々なシチュエーションで、けっきょくどちらを使うべきなのか、という指針はあまり見かけません。 私は研究などで*1両者を使ってきて、それなりに両者のクセもわかるようになってきたので、「こんな感じで使い分ければ良いんじゃない?」という情報を簡単にまとめておきます。 結論を先に言うと、 次元数とデータ数が多いか? Yesならばランダムフォレスト NoならばSVM データの軸に明確な意味があるか? Yesならば(どちらかといえば)ランダムフォレスト Noならば(どちらかといえば)SVM 最後は両方試して選ぼう ランダムフォレストは多芸だけどSVMはそうでもないよ こんな感じです。一つずつ説明していきます。 目次 はじめに 次元数とデータ数 軸の意味 最後
はじめに 分類結果の評価指標として、混同行列(confusion matrix)、適合率(precision)、再現率(recall)、F1値(F1-measure)*1などがあります。 分類の評価をやるときはとりあえずこれらを出せば良い、ということで日常的に用いられるものですが、意外とまとまった解説をネット上で見かけません。私もこれまでなんとなく使っていましたが、それじゃいかんなぁ、とずっと思っていました。 この記事はこれらの評価指標について解説します。ついでにsklearnでの計算方法も書いておきます。 目次 はじめに 理論の解説編 基本編(二値分類) 混同行列の話 評価指標の概念の説明 評価指標を数式で書く どの指標を使えば良い? 多クラス分類編 多クラス分類の混同行列 クラスごとの適合率・再現率・F1値 マクロ平均 重み付き平均 マイクロ平均 どれを使うか 二値分類の取り扱いについ
最終更新:2018-04-02 はじめに スタッキング(stacking)といえば、複数の分類器を組み合わせて強い分類器を作る系の手法である。単なるvotingやsoft votingより強い。 誤解を恐れずにざっくり言ってしまうと、分類器の出力(複数)と真の出力の関係を機械学習する手法である。どうしてそれが強いのかというと、きっと分類器のクセや、出力の相関を機械学習していることが有効なのだろう、という気がする。 「この分類器は基本的にイケてねーんだけど、このラベルだけは正しく分類するんだよな」 「この分類器がこう言ってるときは、こっちのこいつの結果もそれなりに当てになるんだよな」 こういうシチュエーションは色々考えられるので、そういったものに対して効いているのだろう。 とはいえ、具体的にどんな実装になってるのかは割とよくわかってなかったので、実装してみることにした。実装にあたってはこちら
機械学習では、何段もの前処理をしてから最終的な分類や回帰のアルゴリズムに入力するということがよくあります。 前処理にはけっこう泥臭い処理も多く、leakageの問題なども絡んできます。はっきり言って自分で書こうとすると面倒くさいです。 こういう問題を(ある程度)解決できるのがsklearnのPipelineです。これについては、以前から「何かあるらしいな」というのは知っていましたが、実際に使ったことはありませんでした。でも、このたび使ってみたら「すげえ」となったので、こうして記事を書いている訳です。 この記事ではPipelineのコンセプトと使い方を簡単に説明します。雰囲気は伝わるかと思いますが、細かい使い方はライブラリの公式ドキュメントを参照してください。 sklearn公式 sklearn.pipeline.Pipeline — scikit-learn 0.21.3 document
最終更新:2018/11/26 はじめに pythonはLLですが、なぜかメモリを何十GBも消費するような(一般的なPCのリソースからすれば)大規模なデータ分析に広く使われています。このようなデータ分析では、往々にしてメモリ不足が生じ、それなりに配慮してプログラムを書かないとそもそもプログラムが走らない、MemoryErrorが出るといった事態が発生しがちです。 そういうときにやるべきことをつらつらと書いていきます。なお、下の方に行くほど邪悪度()が増していきます。 目次 はじめに 対策 メモリを増設する・システムのswap領域を増やす multiprocessingを使っているなら使うのをやめる、あるいはプロセス数を減らす 要らないデータはGCに回収させる リストは積極的にnumpy配列にする 疎行列型配列を使用する 32bitにする 配列処理は破壊的代入で行う numpyの機能に頼る
このページを最初にブックマークしてみませんか?
『hayataka2049.hatenablog.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く