サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
iPhone 16
www.mwsoft.jp
PandasのDataFrameのメモリ使用量を見る 概要 PandasのDataFrameを扱う際に、実際にどの程度メモリを消費しているかを確認したかった。疎行列についても。 pandas.DataFrame.info() メモリ使用量はpandas.DataFrame.info() で見れるらしい。 # 200個のnp.intが入ったDataFrameの作成 df = pd.DataFrame( np.zeros(200).reshape(100, 2), columns=['foo', 'bar'] ) df.info() #=> <class 'pandas.core.frame.DataFrame'> #=> Int64Index: 100 entries, 0 to 99 #=> Data columns (total 2 columns): #=> foo 100 non-n
概要 性別、都道府県、国などをコード化する際に何番を割り振っておくと一般的で、将来他のサービスと連携する時に幸せになれるかを考える。
scikit learnで特徴量生成に役立ちそうな処理 概要 scipyとかscikit-learnとかに機能があるのに気づかずに独自実装して無駄に時間を使ってたみたいなことをしなくて済むように、整形したデータを分類器とかに回す前段階でやる処理でお手頃そうなものをまとめておく。 LabelEncoder 文字列をIDに変換したい場合に利用できる。 from sklearn.preprocessing import LabelEncoder le = LabelEncoder() le.fit(['tokyo', 'osaka', 'nagoya', 'tokyo', 'yokohama', 'osaka']) le.classes_ #=> array(['nagoya', 'osaka', 'tokyo', 'yokohama'], dtype='<U8') le.transform([
scikit-learnでtf-idf 概要 tf-idfを出す用事があったので、scikit-learnで実行してみる。 例として宮沢賢治の作品から8作品ほどを青空文庫より取得し、それぞれの作品に対してtf-idf上位10件のワードを抽出する。 Pythonは3.5を利用。mecab-python3が入っていること。 @CretedDate 2016/08/04 @Versions python3.5, mecab0.996, scikit-learn0.17.1 MeCabで名詞だけ分かち書き 「オツベルと象」「風の又三郎」「銀河鉄道の夜」「グスコーブドリの伝記」「セロ弾きのゴーシュ」「注文の多い料理店」「よだかの星」「シグナルとシグナレス」の8作品を使う。 落としてきたファイルは事前に解凍してUTF-8に変換しておく。下記とかで。 $ find . -name '*.zip' -ex
Python3でクロールしようと思って調べたこと 概要 Python3でさらっとクロールする用事があったので、requests/beautifulsoup/reppyあたりを利用した処理について調べてみる。 requestsはPython3でHTTPリクエストする際の便利ツール。beautifulsoupはスクレイピング。reppyはrobots.txt周りを見てくれる機能。 @CretedDate 2016/08/13 @Versions python3.5, beautifulsoup4.5.1, reppy0.3.0, requests2.9.1 インストール pip利用。 $ pip install requests $ pip install beautifulsoup4 $ pip install reppy requestsでリスクエスト まずは適当なサイトにリクエストをして
FlaskとElasticsearchとPandasを使った簡易なWebアプリ 概要 PythonとElasticsearchを連携させてPandasに入れて、Scipyに食わせて分析結果を返すような簡易アプリケーションが必要になったので、フレームワークにFlask、ストレージにElasticsearchを利用して作ってみる。 本資料は導入から簡易なアプリケーションを作成するまでの手順をメモしたもの。 Flaskの導入 Pythonは3系が入っている前提で話を進める。 FlaskはBottleあたりと比較される軽量なフレームワーク。Bottleは1枚っぺらのPythonファイルで実行できるポータビリティが売りだけど、対するFlaskはWerkzeugやJinja2などの既存ライブラリの組み合わせで成り立っている。 Jinja2はAnsibleとかでも使われているのでわりと馴染みがある。 F
DockerでPythonの実行環境を作ったメモ 概要 自分が書いた統計方面のコードをあちこちに持ち回して動かす必要が出てきたので、Dockerを利用する。 本稿はUbuntu(開発機)でDockerをインストールして必要な環境を整え、CentOS(検証機)上で動かした際の手順とその他調べたことをメモしたもの。 インストール(Ubuntu) Ubuntuへのインストール。apt-getでそのまま入ることは入るけど、既にサポート切れのバージョンが入ってしまうらしい。なのでレポジトリを追加して入れる。 インストール方法はこちらを参照した。 $ sudo apt-get update $ sudo apt-get install apt-transport-https ca-certificates $ sudo apt-key adv --keyserver hkp://p80.pool.sk
TensorFlowのチュートリアルをやってみる(1) 概要 TensorFlowがだいぶ落ち着いてきてる感(Python3系に対応したり、GeForceとかの推奨に入ってないGPUでの情報もそこそこ出てきていたり)があるので、公式サイトのチュートリアルをちょこちょこ寄り道しながらやってみる。 本ページはやりながら調べたこととかをメモしたもの。書いている人はNN初心者の文系プログラマなので、記述には怪しいところがあると思われる。注意されたし。 Python3.4, TensofFlow0.7, OSはUbuntu系を利用。今回はMNIST For ML Beginnersのところをこなす。 @CretedDate 2016/03/19 @Versions python3.4.0 tensorflow0.7.0, numpy1.10.1 インストール Tensorflowはpipからインスト
TensorFlowのチュートリアルをやってみる(2) 概要 NN初心者がTensorFlowのチュートリアルの内容を寄り道しながらこなす企画のパート2。 今回はDeep MNIST for Expertsのところ。前回は単純なモデルで91%程度の精度だったけど、今回は畳み込みニューラルネットワーク(convolutional neural network)で99%以上の精度を達成するらしい。 バージョンは0.7.1でPython3.4、GPU版を利用。OSはUbuntu系。 @CretedDate 2016/03/21 @Versions python3.4.3 tensorflow0.7.1, CudaToolkit7.5 前回の復習 まずは前回の復習からスタートしている。 import tensorflow as tf # MNISTのデータ読み込み from tensorflow.
basemapやcartopyで地図上でplot 概要 地図と絡むことが増えてきたのでGoogleMapのAPI使おうかと思ったのだけど、今ひとつ要件を満たせないことがあったので、mpl_toolkits.basemapを使って緯度経度指定で地図にあれこれplotする方法を確認する。 インストール(Ubuntu) matplotlib/basementのgithubのページからソースを落としてきてインストールする。 $ wget https://github.com/matplotlib/basemap/archive/v1.0.7rel.tar.gz $ tar xvf v1.0.7rel.tar.gz $ cd basemap-1.0.7rel/geos-3.3.3 $ configure $ make $ sudo make install 1つ上の階層にsetup.pyが置かれてる
TensorBoardで処理を可視化する 概要 TensorFlowのTensorBoardを使って単純な処理を可視化してみる。 公式サイトのTensorBoard: Visualizing Learningを参考に。 1 + 2を可視化する 定数で1 + 2をするだけの処理でグラフを書いてみる。 import tensorflow as tf # 定数で1 + 2 x = tf.constant(1, name='x') y = tf.constant(2, name='y') z = x + y with tf.Session() as sess: sess.run(tf.initialize_all_variables()) sess.run(z) # SummaryWriterでグラフを書く summary_writer = tf.train.SummaryWriter('data
概要 Juliaのファイル操作系の機能を使ってみる。 cd, pwd, mv, cp, touchといった馴染みの名前が関数名になっているので、非常に覚えやすい。 バージョンは0.3.4を使用。ソースコードを見るとまだ定まってない感が醸しだされているので、バージョンが変わるといろいろ変更は出そう。 機能の一覧は下記参照 http://julia.readthedocs.org/en/latest/stdlib/file/ ファイルの書き込み writeで書き込める。戻り値は書き込んだバイト数。 # openしてブロック内で書き込み open( "a.txt", "w" ) do fp write( fp, "日本語を書き込んでみる\n" ) end # 追記 open( "a.txt", "a" ) do fp write( fp, "追記してみる\n" ) println( fp, "p
TensorFlowのGPU版のインストール(GT730) 概要 TensorFlowのGPU版をインストールして動かしてみる。OSはUbuntu系のものを使用。Pythonは3.4。 GPUはGT730を利用。TITANとかK20とかそんな高いもの買えるわけないだろ。 @CretedDate 2016/03/19 @UpdatedDate 2016/04/17(tensorflow0.8に対応) @Versions python3.4.3 tensorflow0.8.0, numpy1.10.1 Xubuntu14.04 TensorFlowのGPU要件 これを書いている時点では、TensorFlowが対応しているGPUは下記のようになっている。 NVIDIA's Cuda Toolkit (>= 7.0) NVidia Compute Capability >= 3.0 推奨されるGP
Cythonの導入とPandasでapplyする方法の調査 概要 CythonはPythonに型指定を書き足すことでコンパイルできるようにして、実行速度を何倍にも速くできるような言語。Pythonユーザーであればそれほど困ることなく使え、且つ実行速度の問題を解決できる、大変ありがたい言語である。 個人的にPandas使っている時に、ちょっとPythonのコードをapplyで噛ませると処理速度が急に遅くなってしまう問題を、Cythonで関数を記述することで解決したいというモチベーションの元に手を出した。 今回は導入からapplyに渡す方法の検討までを行う。 @CretedDate 2016/03/19 @Versions python 3.4, pandas0.17.1, cython0.23.4 インストール pipでいける。 $ sudo pip install cython 簡易サンプ
scala-loggingを使ってみる 概要 例外の取り扱いをする場合にどれを使うのが適切なのかわからなくなったので、scala.util.control.Exceptionとscala.util.Try、両クラスの各機能をざっと使ってみる。 前半はscala.util.control.Exception, 後半はscala.util.Try。 allCatch optでOptionを戻り値に とりあえずallCatchですべての例外をcatchする処理を書く。 最も手軽に使えそうなのがopt。例外だったらNone、成功すればSome(x)を返す。 import scala.util.control.Exception._ def divide(x: Int, y: Int) = allCatch opt { x / y } var result = divide(0, 0) printl
Jupyterをサーバ上で起動する 概要 Jupyterを真っ当にサーバ上で運用しようと思ったので、それ関連の情報を調べる。 OSはCentOS7を利用。せっかくなのでPythonのインストールから手順を残す。 Pythonのインストール CentOS7ならyumでそれほど面倒なく入れられる。 $ sudo yum install zlib-devel bzip2-devel openssl-devel sqlite-devel readline-devel gcc-gfortran atlas atlas-devel blas blas-devel lapack lapack-devel libpng-devel freetype-devel tk-devel CentOS7だとEPELでyumから入れられるらしい。 $ sudo yum install epel-release $ s
Matplotlibで画像の表示 概要 実践 コンピュータビジョンを読んで、出てきたサンプルコードを試したりいじったりする企画、その1-2。 Maplotlibを使ってあれこれ画像を操作してみる。Matplotlibは既にインストールされているものとする。 Pillow利用。利用方法については1-1 PILを参照。 画像の表示 まずはPillowで読み込んだ画像をそのまま表示してみる。 foo.jpgに適当な画像を保存しておく。 from PIL import Image from matplotlib import pylab as plt # 画像の読み込み img = np.array( Image.open('foo.jpg') ) # 画像の表示 plt.imshow( img ) これで画像が表示される。iPythonで動かしている場合で画像が表示されなければ、%pylabして
@CretedDate 2014/09/25 @Versions python 2.7.6, statsmodels 0.6.1, pandas 0.16 サンプルデータについて 国勢調査から、1953〜1973年の労働力人口をに関する数値を取得して利用してみる。(単位は万人) http://www.stat.go.jp/data/roudou/longtime/03roudou.htm これを適当にコピペして数値の部分だけテキストファイルに貼り付ける。ついでに適当なヘッダも書き加える。 population 3788 3698 3935 3982 4076 4105 4086 3996 ・ ・ ・ これをplotすると下記のようになる。 import statsmodels.api as sm import pandas as pd df = pd.read_csv( 'foo.txt'
概要 軽くクラスタリングをする用事があったので、scikit-learnで記述した。 それをサンプルコードに落としたものを貼っておく。 テストデータの生成 位置をずらしつつrandomでデータを生成してみる。 import numpy as np import pylab as pl from sklearn.cluster import KMeans # 傾向の違う3つの点を描画 n0 = np.random.normal(loc=0.0, scale=0.5, size=(50, 2)) n1 = np.random.normal(loc=-2.0, scale=0.5, size=(50, 2)) n2 = np.random.normal(loc=2.0, scale=0.5, size=(50, 2)) # plotして確認 pl.scatter( n0[:, 0], n0[:,
Scalaのslick3.1を使ったメモ 概要 Scalaでpostgresqlを使う用事があったのでslickを利用して書いてみる。 これを書いてる時点の最新版である3.1.0-M2を使ってみたら、以前試したバージョン(1.0.1)とはだいぶ書き方が変わっていたので、基本的な使い方を実践してメモを残しておく。 利用バージョンは下記。相変わらずsbtではなくtypsafe activator + eclipseで開発している。 @createdAt: 2015/08/18 @versions scala 2.11, slick 3.1.0-M2, typesafe activator 1.3.5-minimal, postgresql 9.3.9 準備 build.sbtにdepencencyを設定。 libraryDependencies ++= Seq( "org.scalatest"
pandasでいろいろplot 概要 pandasとmatplotlibの機能演習のログ。 可視化にはあまり凝りたくはないから、pandasの機能お任せでさらっとできると楽で良いよね。人に説明する為にラベルとか色とか見やすく出す作業とか面倒。 @CretedDate 2014/09/25 @Versions python 2.7.6, pandas0.14, matplotlib1.4.2 DataFrameをplot DataFrameに対してplot()と書くだけで概ね描画できる。 とりあえずimport。 %pylab import pandas as pd import numpy as np from matplotlib import pylab as plt 3つのカラムを持つDataFrameをplotしてみる。 df = pd.DataFrame( [ [0, 1, 2]
Scala.jsの導入から簡易なサンプルの作成まで Scala.jsを使ってみたので、開発環境の構築から、簡単なスクリプトをブラウザ上で動かすところまでやった履歴を残しておく。 個人的にScalaを使う時はTypeSafe Activatorでパッケージ管理してEclipseで開発することにしているので、今回もその流れに沿って導入する。Scala.jsの開発はvimとsbtで十分なように思うが、個人的にこれに慣れているの。 OSはUbuntuを利用している。Windowsでもだいたい同じように動くはず。 created_at:2015/03/22 Scala 2.11.5, Scala.js 0.6.2, scalajs-dom 0.8.0, scalatest 0.8.0, Typesafe Activator 1.3.2, Scala IDE for Eclipse 4.0.0 Ecl
NumPyで画像処理 概要 実践 コンピュータビジョンを読んで、出てきたサンプルコードを試したりいじったりする企画、その1-3。 NumPyを利用した画像処理。画像の表示にはMatplotlibを利用。配列に対して効果を加えることで画像にどういう変化が出るかを見るのは、やっていてけっこう楽しい作業。 NumPy, Matplotlib, Pillowは既に利用可能になっているものとする。 画像の読み込みと表示 foo.jpgという名前で適当な画像ファイルを置いておく。 # 必要なものをimport from PIL import Image import numpy as np from matplotlib import pylab as plt # 画像の読み込み img = np.array( Image.open('foo.jpg') ) # 画像の表示 plt.imshow( i
Pillow(Python Imaging Library)のインストールと簡単なサンプルコード 概要 実践 コンピュータビジョンを読んで、出てきたサンプルコードを試したりいじったりする企画、その1-1。 書籍内ではPILを使っているけど現在はそのForkのPillowを使った方が良いよ的な話を見かけたので、そっちを利用。 Pillowのインストール pipで入れられる。 $ sudo pip install Pillow ドキュメントとかは下記にある。 http://pillow.readthedocs.org/ グレースケールに変換する まず、適当な画像を用意する。free imageから拝借。 これをグレースケールに変換するコード。 from PIL import Image # 画像を読み込む img = Image.open( 'foo.jpg' ) # グレースケールに変換 g
概要 logistic regressionを使ってみる。classifyとprobabilityを出すあたりまで。 分類する内容 野球で7回までの得点を入れると、勝敗の確率が出るようなものでも作ってみる。 こちらのMLBのデータを利用 http://www.retrosheet.org/gamelogs/index.html 上記ページの2013年データを利用した。MLBはデータが落とせるサイトがいろいろあってありがたい。 コードの説明 sklearnは、データ入れて、fitして、出来上がった分類器でpredictするだけで動く。簡単で便利。 落としてきたファイルを適当に変換して、下記のような形式にする。 0,7,2 0,1,0 1,2,3 1,2,5 1,0,2 左から、勝ち負け(0がホーム勝ち、1がビジター勝ち), ホームチームの7回までの得点, ビジターチームの7回までの得点。使う
参考資料 mysqlやsqliteについてはstackoverflowの下記記事参照 http://stackoverflow.com/questions/10065051/python-pandas-and-databases-like-mysql 尚、上記で使っているframe_queryはdeprecatedになっていて、現在ではread_queryを使うらしい。 postgresqlとの接続 psycopg2を使う pip install psycopg2 SELECTする際の適当なサンプルコード import psycopg2 as pg with pg.connect(database='db_name', user='user_name', host='host_name', port=5432) as conn, conn.cursor() as cur: cur.exec
前書き Juliaという言語をご存知ですか? Pythonと同じ動的型付け言語ですが、実行時にコンパイルされることでC並の速度で動くこともあるとかないとか言われている話題のプログラミング言語です。比較される言語としてよくRやPythonが挙げられることからもわかる通り、統計や機械学習などの分野で力を発揮します。 2012年生まれとまだ若く、RやPythonが持つ多様なライブラリの力には及ばないところはありますが、CやPythonのコードを手軽に呼べる機能が用意されていたり、iPython NotebookやPyLabを呼ぶ為のインターフェースが用意されていたりと、既存の資産へのアクセス方法を用意することでその弱点をカバーしようとしています。 本記事では、Juliaのサンプルコードを紹介しながら、PythonユーザがJuliaに移った際に得られるメリットを紹介していきます。 Pythonの実
概要 RやPythonでデータ分析をしている人がパフォーマンスの問題に悩まされた時に、救いを求めて手を出すことがあると言われているプログラミング言語、Julia。 歴史ある両言語と比べるとまだまだ至らないところは多々あるものの、現在の発展の仕方を見ると将来的には主流な言語の1つになるのではという期待感が漂う一品である。 今回はJuliaのインストール、コンソールの立ち上げ、パッケージの追加、そして簡単なグラフのplotまでを実行してみる。 Juliaの特徴 en.wikipedia.orgに書いてあるところによると、Juliaの特徴は下記あたりらしい。 動的型付け言語だけどCみたいに速い PyCallを使ってPythonのコードを実行することができる Cのfunctionを直接呼び出せる 並列処理とかも考慮されてる という感じで速度と連携面が売りにされていることが多い。Juliaが速い理由
概要 loadtxtとgenfromtxtでファイルからデータを読み込む。 個人的に他の言語で出力し他ファイルと連携して使うことが多いので、このあたりの処理はよく使う。 csv/tsvの読み込み csv読み込み。 import numpy as np data = np.loadtxt("foo.csv",delimiter=",") ヘッダ行を飛ばす。skiprowsを指定。 data = np.loadtxt("foo.csv",delimiter=",", skiprows=1) tsvの読み込み。 data = np.loadtxt("foo.tsv",delimiter="\t") 列を指定して読み込み。usecols指定。下記は1,2,4列目を読む。 data = np.loadtxt("bar.csv",delimiter="\t", usecols=(0,1,3)) loa
次のページ
このページを最初にブックマークしてみませんか?
『Top Page | mwSoft』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く