
Outline
はじめに
機械学習コンペサイト”Kaggle”にて話題に上がるLightGBMであるが,Microsoftが関わるGradient Boostingライブラリの一つである.Gradient Boostingというと真っ先にXGBoostが思い浮かぶと思うが,LightGBMは間違いなくXGBoostの対抗位置をねらっているように見える.理論の詳細についてはドキュメントを参照いただくとして,本記事では「ハンズオン」ということで新しいツールの使い方を紹介したい.
まず,ドキュメント冒頭から引用させていただく.
LightGBM is a gradient boosting framework that uses tree based learning algorithms.
It is designed to be distributed and efficient with the following advantages:
- Faster training speed and higher efficiency
- Lower memory usage
- Better accuracy
- Parallel learning supported
- Capable of handling large-scale data
LightGBM の売り文句であるが,かい摘んで言うと「速くで正確!」ということ.XGBoostの特長とダブって聞こえるが,ライブラリの構成もとても似ている.
- ソースコードのコア部分は,C++.それをCLI(Command Line Inteface)で実行可能.
- Pythonプログラマには,Python-Packageがサポートされる.
- Rプログラマには,R-Package(本稿執筆時でbetaバージョン)がサポートされている.
今回は,Pythonにてコード確認をしてみた.(プログラミング環境は,Ubuntu 16.04LTS, Python 3.5.2, miniconda3, LightGBM 0.1 になります.)
(追記,2017/1/14, R-Packageについても試してみました.)
LightGBMの特徴 ー XGBoostとの違い
簡単にBoostingのコンセプトを下の図で確認する.
(「はじめてのパターン認識」の第11章からの引用(体裁を少し変更)になります.)
Fig. Boosting concept
決定木の弱識別器を直列に複数並べ,これらに訓練データをサンプリングし重み($w^1$, $w^2$,.. $w^M$)をつけたものを入力する.各識別器の学習はシーケンシャルに行い,入力データの重みはこの学習結果を反映させる.アンサンブル識別器の予測値として,$Y_M$は,弱識別器の予測値を線形結合した値を得る.
次に,”LightGBM” の特徴をドキュメントにて確認しておく.
(参考)Optimization in speed and memory usage
“XGBoost”を含む多くのツールでは,決定木学習のに”pre-sorted”ベースで行うが,”LightGBM”では”histogram based algorithms”を用いるとのこと.この手法の特長としては,
- Reduce calculation cost of split gain
- Use histogram subtraction for further speed-up
- Reduce Memory usage
- Reduce communication cost for parallel learning
が挙げられるが,要は「軽く」て「効率がいい」ということらしい.
(アルゴリズムの違い詳細を理解するためには,論文をいくつか読み込む必要があります.参考文献リストのリンクは こちら になります. ネットで検索してみましたが,内容は難しそうです…)
また,学習の過程で,多くのツールがlevel(depth)-wiseで木を成長させていくのに対し,LightGBMではleaf-wiseで成長させるとのこと.
Fig. Leaf-wise tree growth
(ドキュメントに分かりやすい 説明図 がありますので,参照ください.)
このleaf-wiseのやり方に対応して,”overfit”に関するパラメータ設定で注意が必要となるが,これについては後で触れる.
以上,XGBoostとLightGBMは同じ決定木(Decision Tree)ベースのアンサンブルモデルであるが,アルゴリズム詳細に違いがあるということを確認した.
インストールと最初のコード
私の環境(Ubuntu 16.04 + miniconda)において,ソースコードのコンパイルはドキュメントの手順で問題なく完了した.その後,Python-Packageのインストール処理で少し手間取った.Python-Packageのインストールでは,以下を実施するが,
cd python-package; python setup.py install
ここで次のエラーが発生するケースがある.
error: Error: setup script specifies an absolute path:
/Users/Microsoft/LightGBM/python-package/lightgbm/../../lib_lightgbm.so
setup() arguments must always be /-separated paths relative to the setup.py directory, never absolute paths.
(この「絶対パスを使うな」のエラーについてはドキュメントでも触れられているが,現象/再現性がはっきりしていない.実際,私も2台のPC(Ubuntu)にLightGBMをインストールしてみたが,1台で上記エラーが発生し,もう1台ではエラーの発生はなかった.)
エラーの原因は,Pythonの”setuptools”バッケージ周りにありそうので,(あまり推奨される方法ではないのかもしれないが)以下のようにsetup.py
の一部を修正してエラー回避をすることができた.
修正箇所: 関数で`LIB_PATH`を生成しているところをマスクし,所定のパスをベタ書き.
libpath = {'__file__': libpath_py}
exec(compile(open(libpath_py, "rb").read(), libpath_py, 'exec'), libpath, libpath)
-LIB_PATH = libpath['find_lib_path']()
+# LIB_PATH = libpath['find_lib_path']()
+LIB_PATH = ['../lib_lightgbm.so']
print("Install lib_lightgbm from: %s" % LIB_PATH)
さてコード作成にとりかかるが,ライブラリが若いからかリポジトリ内の例題コードが少ない.以下,少し試行錯誤しながら,各例題を扱ってみた.
分類問題(Classification)
まず,”iris”データセットの分類である.
import numpy as np
import lightgbm as lgb
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
iris = load_iris()
X = iris.data
y = iris.target
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=0)
lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)
# LightGBM parameters
params = {
'task': 'train',
'boosting_type': 'gbdt',
'objective': 'multiclass',
'metric': {'multi_logloss'},
'num_class': 3,
'learning_rate': 0.1,
'num_leaves': 23,
'min_data_in_leaf': 1,
'num_iteration': 100,
'verbose': 0
}
# train
gbm = lgb.train(params,
lgb_train,
num_boost_round=50,
valid_sets=lgb_eval,
early_stopping_rounds=10)
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
y_pred = np.argmax(y_pred, axis=1)
使い方は,”XGBoost” とかなり似ている.まず,lightgbm.Datasetオブジェクトを生成して,入力データをセットする.所定のパラメータを用意して,分類器(Classifier)モデルを作成し,Trainデータにfitさせて分類器モデルを得る.パラメータについては,”XGBoost”と類似するところもあるが,異なるところもあるのでそこは覚える必要がある.
関連情報(ドキュメント)へのリンク
一つ覚えておきたいのが,決定木の数量に関するパラメータで,これは前述した”level(depth)-wise”から”leaf-wise”に変わることを考慮しなければならない.以下パラメータ変換について,ドキュメントから引用する.
Convert parameters from XGBoostLightGBM uses leaf-wise tree growth algorithm. But other popular tools, e.g. XGBoost, use depth-wise tree growth. So LightGBM use
num_leaves
to control complexity of tree model, and other tools usually usemax_depth
. Following table is the correspond between leaves and depths. The relation isnum_leaves = 2^(max_depth)
.max_depth
num_leaves1
22
43
87
12810
1024
このルールを覚えてしまえば,特に問題なさそうである.例えば”XGBoost”の max_depth=6 の設定と同等にするには,num_leaves=64 と設定すればよい.
回帰問題(Regression)
次に回帰(Regression)を試してみる.扱ったデータセットは,”boston” (housing data set)である.(最近のScikit-learnには “boston”も付属しており,load_boston()
でデータを入力することができる.)
import numpy as np
import lightgbm as lgb
from sklearn.datasets import load_boston
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import KFold, train_test_split
print("Boston Housing: regression")
boston = load_boston()
y = boston['target']
X = boston['data']
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.33, random_state=201612
)
# create dataset for lightgbm
lgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)
# LightGBM parameters
params = {
'task' : 'train',
'boosting_type' : 'gbdt',
'objective' : 'regression',
'metric' : {'l2'},
'num_leaves' : 31,
'learning_rate' : 0.1,
'feature_fraction' : 0.9,
'bagging_fraction' : 0.8,
'bagging_freq': 5,
'verbose' : 0
}
# train
gbm = lgb.train(params,
lgb_train,
num_boost_round=100,
valid_sets=lgb_eval,
early_stopping_rounds=10)
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
大部分,分類問題(Classification)と同じだが,LightGBMモデルに渡すパラメータで,’objective’ を ‘regression’に(分類(多クラス分類)では ‘multiclass’),’metric’ を ‘l2’ (分類では ‘multi_logloss’) に変更する必要がある.
Scikit-learnインターフェース
これも先行ツール同様に,Scikit-learn のインターフェースが用意されている.ネイティブに近いインターフェースの方が,細かい操作ができたり,新しい機能のサポートが早かったりするケースもあるが,個人的にはScikit-learnインターフェースの方を使っていきたい.(次々と新規ライブラリが登場している中で,できるだけ覚える事を少なくしたい,というのが第一の理由である.)
gbm = lgb.LGBMClassifier(objective='multiclass',
num_leaves = 31,
learning_rate=0.1,
min_child_samples=10,
n_estimators=100)
gbm.fit(X_train, y_train,
eval_set=[(X_test, y_test)],
eval_metric='multi_logloss',
early_stopping_rounds=10)
y_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
おなじみのインターフェース,分類器のインスタンスを生成して,その後,fit()
するという流れである.
early stopping も上記コードで問題なく動いている.
主に使うクラスは,次の2つになる.
- LGBMClassifier
- LGBMRegressor
アンサンブルのベースモデルとして
前述の通り,Gradient Boosting自体,決定木識別器のアンサンブル手法であるが,ここでは,”LightGBM”, “XGBoost”をベースモデルとして用いた,メタモデリングという意味でのアンサンブルを取り上げる.
アンサンブルをする際に「Bias-Variance について異なる出力をする複数のモデルを用いるとよい」というアドバイスがあるが,異なる結果をもらたらすモデル自体の予測性能がある程度確保されていないと,アンサンブルをやっても全体の精度が上がらなくて悩むことが多い.例えば,Logistic Regressionと(チューニングされていない)Neural NetworkモデルとXGBoost モデルを,時間をかけてアンサンブルしたにも関わらず,その精度が(一番高性能な)XGBoost単体の結果と変わらないという状況を経験したことがある.「粒が揃ったベースモデル」を用意する目的で,”LightGBM” を “XGboost” と併用するオプションが思いつく.(kaggleでもそんなコード,フォーラム意見がありました.)以下,それぞれのベースモデルを実装したコード例を挙げる.
LightGBM のベースモデル
def lgb_analysis(X_train, X_test, y_train, y_test, n_folds=5):
'''
Base analysis process by LightGBM
'''
kf = KFold(n_splits=n_folds, random_state=1)
y_preds_train = []
y_preds_test = []
for k, (train, test) in enumerate(kf.split(X_train, y_train)):
gbm = lgb.LGBMClassifier(objective='multiclass',
num_leaves = 23,
learning_rate=0.1,
n_estimators=100)
gbm.fit(X_train[train], y_train[train],
eval_set=[(X_train[test], y_train[test])],
eval_metric='multi_logloss',
verbose=False,
early_stopping_rounds=10)
y_pred_train = gbm.predict_proba(X_train[test],
num_iteration=gbm.best_iteration)
y_pred_test = gbm.predict_proba(X_test,
num_iteration=gbm.best_iteration)
y_pred_k = np.argmax(y_pred_test, axis=1)
accu = accuracy_score(y_test, y_pred_k)
print('fold[{:>3d}]: accuracy = {:>.4f}'.format(k, accu))
y_preds_train.append(y_pred_train)
y_preds_test.append(y_pred_test)
return y_preds_train, y_preds_test
XGBoost のベースモデル
def xgb_analysis(X_train, X_test, y_train, y_test, n_folds=5):
'''
Base analysis process by XGBoost
'''
kf = KFold(n_splits=n_folds, random_state=1)
y_preds_train = []
y_preds_test = []
for k, (train, test) in enumerate(kf.split(X_train, y_train)):
xgbclf = xgb.XGBClassifier(objective='multi:softmax',
max_depth=5,
learning_rate=0.1,
n_estimators=100)
xgbclf.fit(X_train[train], y_train[train],
eval_set=[(X_train[test], y_train[test])],
eval_metric='mlogloss',
verbose=False,
early_stopping_rounds=10)
y_pred_train = xgbclf.predict_proba(X_train[test])
y_pred_test = xgbclf.predict_proba(X_test)
y_pred_k = np.argmax(y_pred_test, axis=1)
accu = accuracy_score(y_test, y_pred_k)
print('fold[{:>3d}]: accuracy = {:>.4f}'.format(k, accu))
y_preds_train.append(y_pred_train)
y_preds_test.append(y_pred_test)
return y_preds_train, y_preds_test
これらの関数を使ってアンサンブルし,scikit-learnの”digit dataset”を分類した実行状況が以下である.
LightGBM process:
[LightGBM] [Warning] Ignoring Column_0 , only has one value
[LightGBM] [Warning] Ignoring Column_32 , only has one value
[LightGBM] [Warning] Ignoring Column_39 , only has one value
fold[ 0]: accuracy = 0.9360
[LightGBM] [Warning] Ignoring Column_0 , only has one value
[LightGBM] [Warning] Ignoring Column_32 , only has one value
[LightGBM] [Warning] Ignoring Column_39 , only has one value
fold[ 1]: accuracy = 0.9394
[LightGBM] [Warning] Ignoring Column_0 , only has one value
[LightGBM] [Warning] Ignoring Column_32 , only has one value
[LightGBM] [Warning] Ignoring Column_39 , only has one value
fold[ 2]: accuracy = 0.9394
[LightGBM] [Warning] Ignoring Column_0 , only has one value
[LightGBM] [Warning] Ignoring Column_32 , only has one value
[LightGBM] [Warning] Ignoring Column_39 , only has one value
[LightGBM] [Warning] Ignoring Column_56 , only has one value
fold[ 3]: accuracy = 0.9276
[LightGBM] [Warning] Ignoring Column_0 , only has one value
[LightGBM] [Warning] Ignoring Column_24 , only has one value
[LightGBM] [Warning] Ignoring Column_32 , only has one value
[LightGBM] [Warning] Ignoring Column_39 , only has one value
fold[ 4]: accuracy = 0.9310
XGBoost process:
fold[ 0]: accuracy = 0.9377
fold[ 1]: accuracy = 0.9411
fold[ 2]: accuracy = 0.9444
fold[ 3]: accuracy = 0.9343
fold[ 4]: accuracy = 0.9310
Stacked model:
accuracy = 0.9512
confusion matrix:
[[49 0 0 0 0 0 0 0 0 0]
[ 1 57 1 0 1 0 0 0 0 1]
[ 2 0 57 0 0 0 1 0 2 0]
[ 0 0 0 54 0 0 0 0 0 1]
[ 0 0 0 0 49 0 0 1 0 0]
[ 0 0 0 1 0 61 1 0 0 2]
[ 0 0 1 0 0 0 66 0 0 0]
[ 0 0 0 0 1 0 0 55 0 0]
[ 0 4 0 2 0 0 0 0 60 1]
[ 1 0 0 2 0 2 0 0 0 57]]
アンサンブルで若干の精度(正答率)upを実現できている.(Warningが発生していますが.)
いかがだろうか? ここではアンサンブル(stacking)についての説明は省くが,上の2つのコードで雰囲気は感じていただけるかと思う.”LightGBM”, “XGBoost” 共にScikit-learn APIを用いることにより,大部分同じでいくつかのキーワードを変えるだけで,2つのモデルを実装できた.
また,欲しい性能についても,細かいアルゴリズムの違い(”histogram based algorithms”や “leaf-wise growth”の特徴)により,「似て非なる」ベースモデルの結果が期待できるのではないだろうか? (まだ,性能確認中ですが…)
以上,簡単に “LightGBM” について紹介させていただいた.まだ ver.0.1 であるが,かなり完成度が高い印象をもった.RプログラマにもR-Packageがあるので,この”LightGBM”を推奨したい.
(追記)R-Packageについても試した
R-Packageも先日,サポートされたので試してみた.まず,R-Packageの入れ方は,次の通り.
方法1:(ソースコードのコンパイル後,)
cd R-package
R CMD INSTALL --build .
方法2:({devtools}でリポジトリから直接インストール)
devtools::install_github("Microsoft/LightGBM", subdir = "R-package")
こちらも “iris” の分類を行った.
library(lightgbm)
data(iris)
# split data to train / test
set.seed(2017)
train_size = 100 # test_size is 50
train_ind <- sample(seq_len(nrow(iris)), size = train_size)
train <- iris[train_ind, ]
test <- iris[-train_ind, ]
x_train <- train[, -5]
y_train <- as.numeric(train[, 5]) - 1 # need zero start labelling, [0, 1, 2]
x_test <- test[, -5]
y_test <- as.numeric(test[, 5]) - 1 # need zero start labelling, [0, 1, 2]
# model definition and training
bst <- lightgbm(data = as.matrix(x_train), label = y_train,
num_leaves = 4, learning_rate = 0.1, nrounds = 20,
min_data = 20, min_hess = 20,
objective = "multiclass", metric="multi_error",
num_class = 3, verbose = 0)
# make prediction
y_pred_proba <- matrix(predict(bst, as.matrix(x_test)), byrow=T, ncol=3)
y_pred <- apply(y_pred_proba, 1, which.max) - 1
# confusion matrix
cat("\n confusion matrix:\n")
table(y_test, y_pred)
少しはまったのが,”iris” の数値化したクラスラベルが [1, 2, 3] では”LightGBM”の関数が受け付けず,[0, 1, 2] にシフトする必要があった点である.(初見のエラーでしたので,少し戸惑いました.)
参考文献,web site
- Miscrosoft/LightGBM – GitHub
- LightGBMのPythonパッケージ触ってみた – marugari2さんブログ
- はじめてのパターン認識,平井氏著,森北出版
- JuliaでPyPlot.jl (matplotlib) を使ったヒストグラムのアニメーションを効率的に作成する
- 栄養素多次元ベクトル間の類似度を計算する
- Kerasのbackendが、思い通りならない時のメモ
- scikit-learnでSVMのパラメータを調節してみた話
- matplotlibでよく使う手続き
- Djangoのモジュールをインタープリタで読み込む
- PythonでRandom Forestを使う
- 文字と濁点・半濁点が分かれていて,それらを結合したい時
- NLTKを使って情報利得を計算
- PythonとTkinterを使ってプログラミング
- pythonのunix-time <-> datetime の変換
- Pythonの-mオプションを使えばフィルターの管理が楽
- doctest.testfile()を使ってドキュメント兼テストコードを作成
- カレントディレクトリをwebサーバで公開
- ニコニコ生放送のコメントを取得する
- tkinterを使ったアプリケーションをcx_freezeで実行ファイルにする
- ネスト解消のためのポリモーフィズムについて
- Google+で見かけたコメントに,「Pythonでリストの何番目の要素が最大/最小か求める簡単な方法は?」というのがあった.真っ先に思いついたのが1行目のコードなのだけれど,2行目の方がより良いかな?
- 日本語を含むUnicodeのJSON文字列を得る.
- Pythonでテストする際には何を使っているか?
- JSON変換するクラス
- FlaskでBlueprintを使ってControllerを別に分けてみる
- Pyramidで遊ぶ
- Pythonでconstant
- プログラミングの師匠募集
- ドミニオン圧縮プレイをモンテカルロ法で分析
- Pythonでテストを書いてプロファイル取ったりカバレッジ調べたり
- Pythonにおける例外のメッセージ
- 使ってないポートを取得する Python版
- 文字から Unicode を算出する
- どうやって情報収集してますか?
- Google App Engineのwebapp.RequestHandlerはputとdeleteを受けるときパラメータを取得できない
- 空のディレクトリに.gitkeepを配置するコマンドラインツール
- php でも ruby でも python でも perl でも動く Hello World
- amazon linux上で、python2.7用にMySQL-pythonをコンパイル・インストール
- # 文字列の文字コードを返す関数
- ImportError: cannot import nameを解消する
- JSON の整形
- pythonインタプリタ起動時に良く使うmoduleをimportする
- IPython起動時にスクリプトを自動的に読み込む
- UNIXでPython,Ruby,Perl,Node.jsのバージョン管理環境構築
- unicodeとdecodeとencodeについて実験した
- エロ動画フォルダからサムネイルをopencvで楽に作る
- appcfg.pyでデプロイしたファイルをダウンロードする
- OS X LionでPython開発環境を作成
- Django+MongoDB開発環境整備 (書き途中)
- List 操作メモ書き
- 引数のデフォルト値はimmutableなものにする
- すっと頭に再帰が浮かぶようになりたい
- Google App Engineのpythonのバージョンが噛み合わない問題について
- Pythonで数値計算
- 辞書のキーにタプルを使って、複数キー項目
- Pythonでflatten
- Xcode用自動ビルドバージョンインクリメントスクリプト
- Pythonでtest.pyを作るな!
- ファイル監視にwatchdogがかなり便利な件
- Flask on dotCloud でハマったところ
- easy_installでインストールしたパッケージを削除する方法
- pythonbrewでの複数バージョン&ライブラリ管理メモ
- Python de BDD (Lettuceで)
- CentOS 5.4 に Python 2.7.3 を install
- pip のコマンド/オプションのタブ補完を有効にする
- boto で S3 アップローダー
- 「オープンソースで学ぶ社会ネットワーク分析」におけるpythonコマンド
- 一度だけ評価するプロパティ
- SQLAlchemy ORM でクエリ生成の高速化
- Django の django-admin.py でパスを通しても command not found の時
- Django でデコレータを使って View への preprocess を実装してみる
- Pythonで関数合成
- Sublime Text で pythonbrew
- Paver を使ったスクリプティング – コマンド定義編
- Paver 応用編 – プロジェクトに組み込む
- Paver を使ったスクリプティング – ファイル操作編
- Paver を使ったスクリプティング – 外部コマンド編
- VPC with a Single Public Subnet Only を boto で自作
- 指定時間内に関数が終了しなかったら何かするデコレータ
- はじめてのDjangoで躓いた箇所まとめ
- BitbucketのOAuth:access token取得まで
- python でモック – mox の使い方
- Djangoのコマンド補完設定
- Python の Singleton
- すごく簡単なアルゴリズムがphpで書けなくてつらい
- Unix Domain Socket サーバーを作る
- プログラミングの学習に役立つウェブサイト
- DMMのAPIを叩くクラス
- letを作ってLet’s 1行プログラミング
- Setup modern Python environment with Homebrew
- Pygments.rb を使う
- Mailmanのwithlistコマンドによる一括設定変更
- ハイフン区切り形式の MAC アドレスを取得する -1 liner 編-
- Zsh上で使用頻度の高いコマンド一覧を表示する
- Python で複素数を扱う
- PyQt4導入
- 重み付け乱択
- Pythonのキーワード引数も含めてmemoizeしたい
- Ubuntuで個人環境にpythonパッケージをインストール
- pythonでUTF8のテキスト処理
- NLTKを使って文書分類用データをサクッと作る
- 最速最強Webサーバーアーキテクチャ
- 「Sublime Text 2で全角スペースをハイライト表示するプラグインを作る」に設定でオンオフ出来るようにしてみた。
- SublimeLinterにD言語(他の任意の言語)を追加してハイライト出来るようにする
- pythonの文法チェック
- defaultdictを使って,ネストされた辞書を作る
- SQLAlchemy BaseModel
- Python で Amazon CloudFront の Signed URL を発行する
- PyOpenCL Version 2012.2の話 第1弾
- TortoiseHgのファイルビューをもう少し改造してみる
- Docutils と Ruby で快適ドキュメント生活
- numpyの練習1
- スクリプト言語で実行可能なファイルを作る
- パラメトリックとノンパラメトリックの狭間
- bing search apiの使い方
- Flaskのカスタマイズについて
- PyOpenCLでアプリケーション(PIL & PyOpenGL)
- pytestを実戦投入してみた
- いとも簡単にMac OS XにSciPyをインストールする
- 実務でRandomForestを使ったときに聞かれたこと
- gaffer + fabric で簡単デプロイ環境
- Theano の 基本メモ
- 実行スクリプトからの相対パスでファイルにアクセスする.
- CoffeeScriptとJavaScriptやPythonやRubyの文法の比較
- これ知らないプログラマって損してんなって思う汎用的なツール
- 【まとめ】これ知らないプログラマって損してんなって思う汎用的なツール 100超
- Python での shift_jis と shift_jis_2004 について
- リストの中のインスタンスのもつ値で検索
- 日時 ⇔ 文字列
- ファイルの更新を検知して、自動的にCoffeeやSassをコンパイルしたり、ブラウザをリロードしたりするスクリプト
- curlを捨ててhttpieを使おう
- 都道府県のリストをサクッと出力するだけのCLIツール
- Python でホスト名を取得する
- MinGWでVimをビルド。(+lua,+python)
- 複数の辞書のマージ方法いろいろ
- LinuxでPythonをビルドするときの –enable-shared オプションについて
- pythonで二分探索
- Qiita API の Python ラッパーを作った
- Haskellソース編集後、保存と同時にghciにロードするSublime Text 2プラグイン
- botの一部の機能として自動フォローやランダムツイート
- kobitonote.py – Kobitoで編集したアイテムをEvernoteに同期保存
- Command Line で使用しているツールまとめ vol.5
- Flaskを1ヶ月間使ってみた感想
- Pythonのfeedparserをつかってみる。
- Pythonで文字列 <-> 日付(date, datetime) の変換
- Qiitaの投稿をGitHubにバックアップ
- Pythonプログラムのプロセス名を設定する
- Xcodeプロジェクト内のクラスの依存関係を図示する
- Python スクリプト実行中にシェルを起動する
- SQLAlchemyでINNER JOINする方法
- pymongoで正規表現
- Windows + Python 3.3 で watchdog をインストールする
- プログレスバー表示させたいなぁ
- Pythonでconfig.iniを使う
- Twistedを利用してお手軽にDNSサーバーを構築する
- 今流行りのエディタSublimeText2を使って、AOJで競技プログラミングを楽しもう
- PythonでN-Gram
- Parse.com REST APIを使ったAPN(remote notification)を試した
- Apache + mod_wsgi で複数の WSGIPythonPath を設定する
- クラスにバインディングしてYAMLの読み書き
- SublimeText2とSublimeLinter – Python3の構文チェック –
- Pinaxの概要について簡単なまとめ #djangoja
- アクセサを一つのメソッドにまとめる
- PythonのPILで書き出したGIF画像をつなげて動画GIFを作る
- Pythonで画像をWavelet変換するサンプル
- TheanoをMac OS Xにhomebrewでinstallする方法
- BitbucketのPrivate repositoryをタダでCIする
- Python3.3 + mod_wsgi3.4 をさくらVPS(CentOS)にインストールした時に少しハマったので振り返りメモ
- [Python2]日付文字列→UnixTime→日付文字列
- Install Theano on Ubuntu 12.04
- Vim (with python) で json を整形
- tweepy2導入
- PyramidのテンプレートをMakoに切り替える
- propertyを使うときはobjectを継承したクラス (new-style class) を使う
- redis-pyの使い方 辞書とか
- コマンドラインからtwitter投稿
- 標準入力の受け取りのその1
- Python – MP3ファイルにタグづけ
- ファイルを保存した瞬間ユニットテストを実行
- Python – Django css・jsをコンプレス
- requestsが便利
- リスト内に特定の要素があるかでif分岐
- Pythonの辞書 初心者向けガイド
- fabricのお役立ちコンテキストマネージャ
- FlaskでLast-Modifiedを設定する最も簡単な方法
- Flaskのrequest.argsでパラメータの処理について
- ブラウザでPython:Brythonのすすめ
- MeCab解析済みの結果を読み取るcorpus readerを書いた
- PythonでCIDR表記を変換
- multiprocessingで並列処理
- ログ監視スクリプト
- Ubuntu12.04にPython3.3をインストール
- 今更 virtualenv を使ってみる
- lxmlでブロークンなXMLをパースする
- 永続性が必要な時は hash() を使うな!
- Fabricタスクの途中で実行ユーザーを切り替えたいときはsettingsコンテキストマネージャ
- pythonからfluentdを使う
- Vimのpython3で日本語表示するの面倒くさすぎワロタwww
- MochaでブラウザテストをするためのWebサーバ
- 行数あたりの価値が高いコード
- Python で日付の計算
- コマンドラインで XLSX を CSV に変換する
- ファイルの中身を簡単な暗号化(Python)
- Pythonで文字列からさくっと文字の出現頻度を数えるには?
- GAE/Pyのdev_appserver.pyで外部(localhost以外)から接続可能にするには
- RubyとPythonじゃデフォルト引数の値が評価されるタイミングが違うんだぜ
- Python 3の print() で UnicodeEncodeError を回避するデコレータ
- Google Calendar から日報を生成する
- MeCab 使ってよみがなを取ってくる
- PyCharm での type hinting を使いこなす
- Django – Apache mod_wsgi virtualhost デプロイ
- ブラウザで保存したファイルをダウンロード元サイト別にフォルダ分け
- BitBucket に Sphinx ドキュメントを push したら自動的にウェブサーバーに反映するようにしてみた
- Sublime Text 2でPythonの開発環境を整える
- SciPyとmatplotlibのインストール(Python)
- Twistedを利用してメールサーバーを立てる
- SciPy+matplotlibで3D散布図を作成(Python)
- CentOS 6.x x86_64 Python-2.7.4 rpmパッケージ作成
- pythonの例外でstack traceを表示する
- lambdaでif-elifを楽に書く
- Python, SciPy, matplotlibのインストール(Windows)
- Python 3の正規表現で \d を使うな!
- CentOS6.4でPython2.7.3でApacheでmod_wsgiでDjango
- f2pyを使ってfortranでpythonのモジュールを書く
- ネットワークインタフェースに振られた IPv4 アドレスをコードで取得する (Linux)
- sphinx+mathjaxでマクロをusepackageみたいに読み込む
- iPythonでオートフォーマットされた出力の改行場所を変える
- Python3.3.1 in BottleでGoogle Custom Search APIを使って検索するだけのアプリケーションを作る
- Pythonでリフレクション
- pythonでhtml中の相対リンクを絶対リンクに書き換える(lxml)
- Pythonスクリプトからjarファイル中のクラスを直接importする
- class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)のメモ
- pythonの軽量framework, Bottle
- GAE上でのTwilio
- リプ爆撃
- Twilogから過去ツイートを取ってきてbotを作り、昔の自分をTLに再現させるでござるの巻(その1)
- Macを使うにあたっての落とし穴回避(Linuxユーザ向け?)
- PyQCheckというPythonでQuickCheckが行えるライブラリをPyPIに登録した。
- multiprocessing vs threading
- MacにPythonをインストールするときのメモ
- Webアプリケーションのパフォーマンス測定ツールFunkload…
- python データーを圧縮してsqliteへ書き込む
- Zabbix APIをたたく (1.8, 2.0)
- emacs-jediのinstall
- Twilogから過去ツイートを取ってきてbotを作り、昔の自分をTLに再現させるでござるの巻(その2)
- テストデータはsetUpで宣言するべき幾つかの理由
- pythonをはじめるためのリンク
- a()とa.__call__()は等価ではない
- Python で簡易 SMTP サーバを立てる
- ログを色つけて見やすくする君
- 【LDAP環境構築:7】 Pythonでユーザー追加・検索・変更・削除まで
- classの__str__を、lambdaを使ってもっと簡単に書こう!
- MacにDjangoをインストール
- ChaSenのインストール
- CPythonからJavaのクラスを呼び出す(Py4J)
- テキストファイルのエンコーディングを自動判定して処理する
- pythonのsqlite3 に日本語(マルチバイト文字列)を格納する
- pythonのsqlite3でインメモリDBをセーブ/ロードする
- Python+FlaskなwebアプリをJenkinsでウイーン
- pyramidチュートリアル メモ (bankaccount)
- ローカルのipアドレスを取得
- macbook air Mid2013 にインストールしたアプリや開発環境のメモ(php,ruby,node.js,python など)
- PySideのスロットを定義する際の注意
- はてなブックマークのお気に入りユーザーで、既にアクティヴではないユーザーを調べる
- フォーマット文字列内での波括弧のエスケープ
- Pythonの数値計算ライブラリ NumPy入門
- PySideのスロットを定義する際の注意(2)
- vim7.3(+python2.4)をソースからインストール(Gundo.vimに対応)
- PythonからMySQLを使う
- コンソールへの出力を上書きしてゆく方法
- Pythonzとvirtualenvでクリーンなpython環境
- WEBブラウザからコマンドを実行する君作った
- ATND APIをPythonで叩くときのtips
- pytestを使ってカバレージとか取りながら分割実行してテスト実行時間を短縮する
- Pythonのクラス定義のファイルの場所を知る。
- encodeするのがめんどくさい
- はじめてのpython① pythonbrewで環境構築&HelloWorld!!
- Google Cloud Messaging for Chrome を使ってサーバからChrome拡張にメッセージを送る
- Pythonでコマンドライン引数にサブコマンドを指定する
- WEBブラウザから検索やコマンド実行をする君2
- 多重ループを一気に抜ける
- Pythonでgitのコミットログをパースしてみよう!
- Pythonで再帰的にファイル・ディレクトリを探して出力する
- 『Macで日本語ファイルをgitにコミットするのやめて><』とりあずMacとLinuxで互換性のない日本語ファイルを探すスクリプト書いた
- Flaskで大きいアプリケーションを作るときのTips
- 1分でVim+Pythonのテスト環境をつくる
- 深イイ意味など全くない並列処理 in Python
- 電波状況が悪い時にiPadにファイルを転送する
- matplotlibでstacked histogram (積み上げヒストグラム) を書く
- pipでtweepyをインストールしてAPI1.1に対応させて使う
- python2.7.3のcsvモジュールを使う時の文字エンコード
- Pythonで”coding: utf-8″ 書くの面倒くさいのでShellscriptでなんとかする
- Pythonで関数合成と適用的な
- pythonでフォルダ内のファイル名をrenameして整理したメモ
- 【作業メモ】Amazon Linuxにmatplotlibとnumpy入れるまで
- Appiumを使ってスマートフォンアプリのテストを自動化する – Python編
- matplotlibで欲しいグラフの書き方がわからない時はgalleryを見ると便利
- web2pyのadminのpassword
- PIL(Python Imaging Library)で、点を描画するサンプル。
- Mac OS Marvericks にHomebrewを使ってpyenv,pythonの環境設定を行うメモ
- PIL(Python Imaging Library)で、画像をセピア調に変換する
- PySide – モードレスダイアログを表示中にバックグラウンドで何らかの処理を行う
- Python用ケムインフォマティクスツールRDKitのインストール
- バックアップにBakthatいいんじゃね?
- Pythonのreduceを使うとちょうはかどる話
- Pythonにおける継承の基本的なお話(初心者向け)
- Pythonの古いクラスと新しいクラスの話
- unittest.mock
- MySQL Workbench の mwb ファイルから sql ファイルに自動変換
- ipythonの便利な使い方
- Propertyデコレータを使う?
- MySQLの全DBに対してmysqldumpするスクリプト
- pyramidチュートリアル メモ (single_file_tasks)
- Sublime Text 2で任意のテキストを常にハイライト表示するプラグインを作る
- 時間計測
- [python] lassieでWebページのメタデータをサクっととってくる
- オブジェクトの属性を取得
- classをクロージャーっぽく動的に宣言する
- MySQLdbの優雅な使い方
- PythonのiteratorとRubyのEnumeratorを比較してみた
- ImportError: No module named と言われた時の対応方法
- LXCをブラウザで操作できるLXC Web Panelが素晴らしかった件
- 非エンジニア向けのMercurial入門
- blogの更新を監視して結果をtwitterに投げたり、interviewsの回答を催促したり
- Pythonのモジュール例外の表示を分かりやすくする
- CentOS 6.4 で python から MySQL につなぐ
- EmacsのPython開発環境構築メモ
- Pythonでオブジェクトの内部構造を知る方法
- HMAC 方式を使用してハッシュ値を生成する。
- MySQLdbでイテレータ
- Bottle を使用したウェブアプリケーション(1)
- IPythonのデバッガー(ipdb)の使い方
- Pythonの例外クラスのインスタンスを直接、例外クラスの引数にするな!
- lambdaを使う例
- ベータ分布をPythonで書く
- Python 3のsorted関数と比較関数
- Pythonでバイナリファイルを作成する
- AKBメンバーのGoogle+ IDを一気に取得する
- サクラエディタでスクリプトをデバッグする
- Python3.3.1 + Bottle でWebアプリケーション(1) – テンプレートエンジンをjinja2に変更する
- botで天気予報をtweet
- 値が空だったら初期化したい(python)
- 【失敗】Stack OverflowのClone AskbotをCentOS6.4にインストール
- redis.pyのConnectionPoolの実装よんだ
- リスト内包表記でifの判定
- Gmailの件名をtwitterに投稿
- 標準入力で受け取ったりとかコマンドライン操作からGmailの送信
- python 現在時刻取得
- scikit-learnのParallelで並列処理
- 時系列顧客ロイヤリティの算出
- matplotlibでグラフを動的に生成して、reporlabでPDFに埋め込む
- Pythonで逆アセンブラする
- OpenCV2.4(+python)を手っ取り早くOS Xにインストールしてサンプルを試してみる
- AKB48 Google+投稿をゲットする
- eggパッケージのインストールとアンインストール
- すぐにできるページランク計算(全行コメント解説つき)
- MeCabをPython3上から使えるようにする
- matplotlibやpylabで論文向きの白黒のグラフをプロットする
- pythonモジュールの一覧表示
- djangoコマンドの二重起動を防止する
- Scipyでの疎行列の扱い
- OptParserの使い方
- pycharmのショートカット
- Pythonで単語の数え上げとかするならCounterを使うと便利なはなし
- 1分でPython&CSSセレクタによるスクレイピングを実現する
- web アプリケーションで matplotlib の図を表示する
- MacでPython環境構築メモ
- pythonのfluentdではまりどこ??
- pythonのSimpleHTTPServer
- fabric でエラー時のロールバック処理をする
- RubyとPythonとPerlで正規表現の速さを比べてみた(2013年版)
- ランダム文字列生成(Python)
- Python for Data Analysis Chapter 2
- Python for Data Analysis Chapter 3
- Python for Data Analysis Chapter 4
- virtualenvごとにPYTHONPATHを切り替える
- Mac(Mountain Lion)にPython環境を構築
- matplotlibのインストール(Python 3.3.2)
- py2exeとsetuptoolsの連携
- Mountain Lion環境への「virtualenv」と「pythonz」のインストール手順 + 利用方法
- urllib.parse.quote関数使用時の注意
- GoogleAppEngine/PythonでDjangoを使う方法
- 三角関数とか使ったメモ
- OSXでのCython実行方法メモ
- 今どきのPythonのライブラリ自作からPyPIへの登録
- 実行時間とかメモリ使用量とか気にしてみようと思ったから
- pythonbrewでPythonインストールしてFlaskをWSGIサーバで動かすまで
- Python で画像フォーマット
- Pythonのクラスで__eq__などを汎用的に実装する
- Mac に matplotlib をインストールする手順
- Python3をさくらサーバー(FreeBSD)にインストール
- ファイルの削除にrmコマンドは使わないようにした
- ruby は インスタンス変数の確認に instance_variable_defined? を使う
- twitter利用時間をを基準にざっくりと推定睡眠時間を計算する
- Djangoのモデルでchoice属性で値を限定しているフィールドの「名前」を取得する方法
- watchmedo(watchdog)を使ってエディタでファイルを保存する度にテストを実行する時の設定
- Celeryの非同期処理中に起きたエラーをメールで通知
- Pythonライブラリのダウンロード数表示バッジを生成
- virtualenvでpython
- randintに気をつけよう
- Pythonで日本語メールを送る方法をいろいろ試した
- MarvericksにしてPILのインストールがコケる件
- Django管理サイトのチューニング
- AnacondaでPython3.3
- MacOSX Mavericks(10.9)にhomebrewを使ってDjangoの開発環境を整える
- Python 3.3でmatplitlibとpylabを使おうとしたら RuntimeError: Python is not installed as a frameworkというエラーが発生したときの解決方法
- GensimPy3を使って小説家になろうのトピックモデルを解析
- `return self`でメソッドチェーン
- Python3.3.1でcChardetとpython3-chardetを使ったメモ
- pythonのデフォルトエンコーディングをutf-8に変更する
- utf-8を含む文字列を含む配列をprintしたときに文字化けする問題
- importについて
- TOPIX の時系列を表示する
- zip関数の挙動を少し試した
- django の dumpdata コマンドの代替
- scikit-learnでCross Validation
- TOPIXの時系列を pickle, csv, Excel形式で保存する
- 機械学習ライブラリ SHOGUN入門
- Python初歩からの学習メモ1
- Python初歩からの学習メモ2
- #python pythonの日本語のシンタックスエラー回避
- python-sphinxで表を書く時は csv-table を使った方が便利
- リスト操作とか競技プログラミングで使ったりした私用メモ
- Python3.4からpipが標準インストーラに!?
- rauthでTwitterAPIにアクセスするのが簡単すぎて、僕にも彼女が…
- ダミーデータファイルを作る
- Mac OS Xで複数バージョンのPythonを利用する(1)複数Verインストール編
- Mac OS Xで複数バージョンのPythonを利用する(2)利用編
- 不均衡データにおけるsampling
- “__slots__“を使ってメモリを節約
- pythonで日時の差分を秒単位で出す方法
- PythonでStateモナド
- 【募集】プログラミングのスキル交換をしませんか
- Supervisorで簡単にデーモン化
- Pythonでlet式を使う
- AWS コマンドラインインターフェイス(Python/awscli)をMac OS Xで利用する手順
- Pythonのパッケージ管理ツールez_setupの覚書
- sitecustomize.py を使わず usercustomize.py を使おうね
- ローカルのGAEを同一LAN内のiPhoneのブラウザから確認する方法
- はじめてのPython 素数に0, 1をくっつけて返すスクリプト
- PythonでCSVの読み書き
- easy_installのインストール
- Pelican ブログのインストール方法
- PythonでNetCDFの読み書き
- テキストファイルから指定した文字列を含む行を出力する
- pythonメモ:easy_installが使えないとき
- ベイズ線形回帰(PRML§3.3)の図版再現
- ラテン語文解析プログラムを書くことを目的としたラテン語学習(前編)
- MongoEngineでMongoDBを触ってみる基礎編
- Translate Toolkitで翻訳ツールを作る
- Pythonでカバレッジを調べる
- たぶん1分くらいでできる形態素解析とtfidf(テストコードつき)
- ChatWork API を叩く PHP と Python のサンプル
- LXCをPythonから操作する
- sympyで運動方程式
- APSchedulerで少し進んだジョブスケジューリング
- IntelliJ IDEAのPythonプラグインからもvirtualenvが使える
- Pythonのクラスメンバのスコープまとめ
- Keynoteに美しくスニペットを貼る
- ラテン語文を合成音声で読み上げる技術
- SphinxでPythonドキュメントを自動的にビルド
- b-Bit MinHashを使ったサイトのカテゴリ分類
- とにかく簡単に JSON データを確認したい
- 第16回オフラインリアルタイムどう書くの問題をPythonで解いてみた
- DJangoメモ:はじめから(準備編)
- Pythonでニュース速報(嫌儲)のスレッド一覧を取得してみる。
- scipyとか使ってみる
- scipyでフィルタ作成
- numpyでハミング符号
- ὑμήνπτερόν
- feedparserで自動的にねこ画像を拾ってくる
- pyOpenGLでシェーダープログラミング
- DJangoメモ:はじめから(モデル設定編)
- DJangoメモ:はじめから(管理画面を使う編) myハマりポイント
- pythonのunittestのassertXXX一覧
- 秒速でねこ画像を集めてネコヒルズ族を目指す
- ScipyでICA
- Docker で Google AppEngine 開発
- 最小お釣問題について考える
- DJangoメモ:はじめから(管理画面をもっと編集編)
- Python でテスト
- AnsibleのPython APIを試す。
- Pythonのインストール(Windows)
- DJangoメモ:はじめから(ビューを作る編)
- ConfigParserモジュールの使い方
- [Python] virtualenvとは何か
- Python の subprocess で出力を受け取るときは communicate() を使おう
- はてブのホッテントリのタイトルを要約してWebの今を見つめる
- DJangoメモ:はじめから(テンプレートからビューを作る編)
- Python3.3でナイーブベイズを実装する
- Python3.3でナイーブベイズを実装する
- 犬派と猫派の勢力図をGoogleChartAPIでグラフ化して決着をつける
- Python3.3で実装したナイーブベイズをBing APIで取得したWebページで学習。文章を分類させる
- 【cocos2d-x 3.0】binding-generatorでScript Bindingを自動化する方法
- iOS実機のSSL通信をプロキシによって傍受したり改ざんする方法
- DJangoメモ:はじめから(エラー画面設定編)
- 少しのコードでWebPayを導入する Python Ver.
- カレントディレクトリをドキュメントルートとしてHTTPサーバを立てる
- DJangoメモ:はじめから(URLConfの単純化と分割)
- AnsibleでPython(正確にはJinja2)の文法を生かしたスマートな条件文の書き方集
- MacOSXにSphinxをインストール
- Ansibleを導入したい人の為のくどきポイント
- DJangoメモ:はじめから(フォーム処理)
- DJangoメモ:はじめから(汎用ビューの使用)
- FlaskとPILImageを使ってリサイズした画像をResponseする
- Python3.3で実装したナイーブベイズ分類器を利用して、文章と文字列中の語の共起頻度から、類似度を計算する
- herokuでDJangoページを公開:準備編 myハマりポイント
- Pythonライブラリ・Botoで素敵にAWSを管理する
- Pythonメモ:pipコマンドが使えないとき
- FlaskからWebPayを導入する
- SublimeTextに実績機能をつけた
- pythonでもっとも簡単に音声合成する方法
- Python Jinja2
- PythonでLeapMotionを使ってみる
- 今週のアルゴリズム:最短経路の計算!(Ruby/Python/C#/VB/Goでpermutation iterator)
- 今週のアルゴリズム:最短経路の計算!(PHP/Python/Ruby/HSPでnext_permutation、Perlでpermutation iterator)
- scikit-learnでtf-idfを計算する
- CMake+SWIGで簡単にC/C++の多言語バインディングを実現する
- JavaScriptでもジェネレーター関数
- Mac OS X 開発環境構築メモ
- pandasメモ
- herokuでDJangoページを公開:実践編
- 30C3 CTF オンライン予選大会の PyExec 問題紹介
- wxPythonをMacOSXにインストールする際に「”〜.pkg”は壊れているため開けません。」のメッセージが出たときの対処法
- python3でtwitter
- Twitterでつぶやく
- Twitter-Pythonの使い方
- numpyで行列の斜めのやつを取得する
- python の map オブジェクトを list にした後は何も残らない
- PythonとPHPで文字列分割をして配列の最後の要素を取得
- Google App Engine for PythonでTweet(API1.1)
- pythonでmarkdownを扱う
- Matplotlibによるヒストグラム透明重ね書き
- Pythonで標準出力をnon-blockingにする
- 1分で実現できる!関数の実行結果をmemcachedにキャッシュするデコレータ
- pythonクイズ
- ワンライナーWebサーバを集めてみた
- X-SendFileを用いて静的ファイルをサーブ
- herokuでDjangoブログ:ログイン実装
- Command Line で使用しているツールまとめ vol.8
- APIでできること vol.1
- 変数の変数名を文字列で取得する。
- pyrtm と RTM CLI を使う
- スコープでリソースを破棄するいろいろなやりかた
- Django:参考資料
- どうやってコードを書けばいいのかな? というときに役立つかもしれない howdoi
- SQLAlchemy で独自の Composite Value を作る
- networkxでグラフを描く
- Twitter の OAuth ログインを自動化するスクリプト
- ファイルをzip圧縮して別のサーバにバックアップする
- boto を使って Amason S3 に指定のフォルダをアップロードするスクリプト
- argparseの使い方とoptparseとの違い
- Coverallsで “coverage unknown” になった時の対処法
- pythonでflatten
- Python 再帰の上限の参照と変更
- pythonでホームディレクトリの取得
- Pythonのスタイルを自動で整形させるVimプラグイン
- Tornado + nginx の時のIPの取得方法
- Python3でImportError: No module named ‘xxxxx’
- ScraperWikiを使ってWEBサイトからデータを定期的に取得する
- Scikit-learnでPCA
- Scikit-learnでIsomap
- メモ:Vagrant環境でCGI(試行錯誤中)
- Python 3.4 から標準ライブラリに入る Enum 型が今からでも便利
- SQLAlchemy で Enum を使う
- Django Templateのif-elseを短く書く
- Macでpyenv+virtualenv
- LINQのPython実装 “linqish”の紹介
- Numpyで行列の連結
- Scipyでデータをnormarizeする
- reportlabで画像追加メモ
- django-celery で Amazon SQS を使ってみた
- 環境構築手順書: Ubuntu + Apache2 + Python + Pyramid
- Path API を叩く PHP / Python / Ruby のサンプル
- Pythonメモ(自分用):配列
- 【python】web開発準備(仮想環境の構築)
- Python版のConfluence API用モジュールを使ってみます。
- PythonでYouTubeの動画を自動的に検索&ダウンロードする
- Pythonメモ:現在の月を取得
- sqlalchemyでgroup_byしてsum
- 僕とcpとSubprocessと
- Pythonの進化計算ライブラリDeap
- Scikit-learnでハイパーパラメータのグリッドサーチ
- 泥沼の記憶(CSV)をワンライナーで処理する
- pipで既にインストールされているパッケージをuser環境(非su)でアップデートする
- 2D plot in matplotlib
- 今日の株式取引は?
- 東証1部上場銘柄の名前と証券コードを取得する
- python で redmine の更新を hipchat へ流す
- Bottle0.13+jPlayer2.5で自分だけのミュージックプレイヤーを作ろう!
- Ruby と Python の仮想環境操作を統一する
- CentOS に Python2.7, Python3を入れたメモ
- anyenvで開発環境を整える
- pythonで文字列ゼロ埋め、文字列からある文字をカウントする
- Pythonで正規表現使うとき
- pythonにおける相対urlの処理
- pythonで文字列が数字かどうかを確認する
- pythonにswitchはないけれど
- Python と node.js のテストライブラリを簡単に比較してみた
- Webアプリ開発実践:Djangoでシフト作成ページを作ろう!(はじめに)
- numpyで作成した行列の可視化
- Pythonメモ:オブジェクトの持つ属性を知りたいとき
- supervisorでulimitを設定する

Androidに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Pythonに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Swiftに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。

Unityに関する現役のエンジニアのノウハウ・トレンドのトピックなど技術的な情報を提供しています。コード・プログラムの丁寧な解説をはじめ、初心者にもわかりやすいように写真や動画を多く使用しています。