デバッカーはGUIのほうがずっと便利。PyCharmでgdbのprintに相当するような、変数の中身を表示させる機能を探していたらあった。
こちら
もちろん、ブレイクポイントを作れば、停止時に変数の中身は全て見えるが、複雑なクラスの場合、みたい部分がどこにあるかわからなかったりするので、print文の方が便利。
同じJetBrain製のIDEのRubyMineも似たような感じでできるでしょう。(多分)
2015年8月30日日曜日
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があると仮定する。
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年8月7日金曜日
Rails runnerの簡単な使い方
RailsのrunnerはRailsの環境の上で任意の処理を書くことができる。
Active Record経由でバッチ処理をするのには最適な機能。
実行の方法は2つある。
個人的には、Webアプリと独立したバッチ処理を長々とWebアプリにメソッドとして追加するのは違和感があるので(2)の方が良い気がする。 それに、autoload_pathsを変更しなくていいので簡単。
runner/runner.rb
実行の方法は2つある。
- Railsで作成したアプリのメソッドを直に指定してやる
- ファイルを読み込ませる
個人的には、Webアプリと独立したバッチ処理を長々とWebアプリにメソッドとして追加するのは違和感があるので(2)の方が良い気がする。 それに、autoload_pathsを変更しなくていいので簡単。
例:
予めRailsルートはいかにrunner/を作っておく。mkdir runner
あとは適当なファイルを作って呼び出すだけ。runner/runner.rb
# Railsでつくったアプリが読み込まれてから実行されるので、何もrequireしなくてもActive Record経由でモデルにアクセスできる
# この場合はTagという名前のモデルが存在する環境
p Tag.count
成功。
$ rails runner runner/runner.rb
21931
2015年8月4日火曜日
AmazonAPIとruby gem asin
Amazonの商品情報の問い合わせにはrubyのgemのasinが便利。
https://github.com/phoet/asin
上記ではcurbを使ってアクセスしているが何故かうまくいかなかった。
かわりにhttpiを使うと動いた。
直接、ハッシュを返してくれるので楽。
https://github.com/phoet/asin
上記ではcurbを使ってアクセスしているが何故かうまくいかなかった。
かわりにhttpiを使うと動いた。
直接、ハッシュを返してくれるので楽。
require 'asin'
require 'httpi'
# Setting for amazon API
include ASIN::Client
ASIN::Configuration.configure do |config|
config.secret = 'SECRET'
config.key = 'SECRET'
config.associate_tag = 'SECRET'
config.host = 'ecs.amazonaws.jp'
end
HTTPI.adapter = :net_http
client = ASIN::Client.instance
# Define amazon api response group
RESPONSE_GROUP = [:Medium,:Reviews]
# Search!!
api_responses = client.search({:Title => "我輩は猫である", :SearchIndex => :Books, :ResponseGroup => RESPONSE_GROUP})
p api_responses
アマゾンAPIの仕様
2015年8月1日土曜日
IEではhttp://user:pass@example.com/みたいなリンクが開けない
http basic authenticationでパスワードが設定されたURLではhttp://user:pass@example.com/みたいな形のURLでユーザーにパスワードを入力させることなく
アクセスできるが、IEではHTMLのリンクとして、この手のURLを開くことができない。。。。。
クロームとかはできる
https://support.microsoft.com/ja-jp/kb/834489
クロームとかはできる
https://support.microsoft.com/ja-jp/kb/834489
おすすめなgitのエイリアスの設定
git のエイリアスはこんなのがいいんじゃない?
git config --global user.name "sato"
git config --global user.email sato@example.com
git config --global alias.st 'status'
git config --global alias.llog 'log --graph --decorate --color --stat'
git config --global alias.slog 'log --oneline --color'
git config --global alias.ch 'checkout'
git config --global alias.d 'diff --color'
git config --global alias.diff 'diff --color'
登録:
投稿 (Atom)