ラベル python の投稿を表示しています。 すべての投稿を表示
ラベル python の投稿を表示しています。 すべての投稿を表示

2016年2月20日土曜日

pythonのスクリプトファイルとの相対パス

import os

this_dir = os.path.dirname(os.path.realpath(__file__))
filename = os.path.join(this_dir, 'lib')
print filename

2016年2月19日金曜日

python によるPID のロック

import time
import os
import sys

pid = str(os.getpid())
pidfile = "/tmp/scripy.pid"

if os.path.isfile(pidfile):
    print "exit"
    sys.exit(0)
file(pidfile, 'w').write(pid)
try:
    f = open('workfile', 'a')
    f.write("1")
    f.close
    time.sleep(10)

finally:
    os.unlink(pidfile)

2015年8月30日日曜日

PyCharm, RubyMineでのデバック時の変数の表示をprint文(p文)で

デバッカーはGUIのほうがずっと便利。PyCharmでgdbのprintに相当するような、変数の中身を表示させる機能を探していたらあった。

こちら

もちろん、ブレイクポイントを作れば、停止時に変数の中身は全て見えるが、複雑なクラスの場合、みたい部分がどこにあるかわからなかったりするので、print文の方が便利。
同じJetBrain製のIDEのRubyMineも似たような感じでできるでしょう。(多分)

2015年8月15日土曜日

one hot encoding (python scikit-learn)

会員情報の職業や性別のようなカテゴリ値を用いて、機械学習をする際には、何らかの形で数値にする必要がある。 通常は、「会社員」や「学生」のようなカテゴリ情報は、取り得る値の種類と等しいサイズの配列のその値のみを1にした物を使う。 倒えば、会社員=[1,0]、学生=[0,1]のような形式になる。この表現形式をone-hot encodingまたは1 of K encodingと呼ぶ。
pythonのscikit-learnで以下のように、この変換ができる。

次のような、accounts.csvがあると仮定する。
name,occupation
sato,adventurer
ito,engineer
inoue,student
tanaka,engineer
oda,adventurer
基本的にはDictVectorizerに入れるだけだが、その前に[(occupation=adventurer),(occupation=engineer)]のようなディクショナリの配列にする必要がある。

# -*- coding: utf-8 -*-
import pandas as pd
from sklearn.feature_extraction import DictVectorizer

accounts=pd.read_csv('./accounts.csv', encoding='utf-8')

occupation_vectorizer = DictVectorizer(sparse=False)

i = [ dict(occupation=occupation) for occupation in accounts[u"occupation"] ]

X = occupation_vectorizer.fit_transform(i)
names = occupation_vectorizer.get_feature_names()

# original table
print accounts
# label names
print names
# transformed one-hot encoding
print X
結果
     name  occupation
0    sato  adventurer
1     ito    engineer
2   inoue     student
3  tanaka    engineer
4     oda  adventurer
[u'occupation=adventurer', u'occupation=engineer', u'occupation=student']
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]
 [ 0.  1.  0.]
 [ 1.  0.  0.]]

2015年1月1日木曜日

Python2.6からMecab

Mecab from python

rubyから使おうとしたときは苦労したし、python3から使おうとするとかなり面倒なようだが
python2.6(CentOS標準)からならかなり楽に使える。
Mecabが既にインストールされていることが前提

ダウンロード

wget https://mecab.googlecode.com/files/mecab-python-0.994.tar.gz
tar zxf mecab-python-0.994.tar.gz
cd mecab-python-0.994
su
python setup.py install

テストプログラム

test.py

# coding: UTF-8
import sys
import MeCab
tagger = MeCab.Tagger ()
print tagger.parse ("吾輩は猫である")

結果

[sato@localhost python_training]$ python test.py 
吾輩  名詞,代名詞,一般,*,*,*,吾輩,ワガハイ,ワガハイ
は   助詞,係助詞,*,*,*,*,は,ハ,ワ
猫   名詞,一般,*,*,*,*,猫,ネコ,ネコ
で   助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
ある  助動詞,*,*,*,五段・ラ行アル,基本形,ある,アル,アル
EOS

2014年11月23日日曜日

機械学習のためのpythonの設定(CentOS6.5)

機械学習のプログラムはRとpythonの2強のようなので、pythonも使かわないと

python2.7のインストール(centOS6.5はデフォルトで2.6)

yum install python27

easy_install およびpipのインストール

wget https://bootstrap.pypa.io/ez_setup.py -O - | python
easy_install pip

各種ライブラリに必要なライブラリのインストール

yum -y install gcc gcc-c++ kernel-devel
yum -y install python-devel
wget http://pypi.python.org/packages/source/d/distribute/distribute-0.6.27.tar.gz
cd  distribute-0.6.27
python2.7 setup.py install
yum install libpng-devel -y

各種機械学習系ライブラリのインストール

pip install numpy
pip install scipy
pip install matplotlib
pip install gensim