読者です 読者をやめる 読者になる 読者になる

サイエンティストとマーケターのはざま

Pythonとか広告とかデータ分析とかとか


XGBoostのハイパーパラメータをチューニングする

前回、XGBoostで予測モデルを作成しました。 ukichang.hatenablog.com 精度を上げるためにはパラメーターチューニングが必要です。しかし、こちらのアルゴリズムは設定すべきパラメータが多く、手動で探索すると手間がかかります。 そこでscikit-kearnのgrid…

XGBoostで予測モデル作成

前回まででXGBoostのインストールが終わりました。 ukichang.hatenablog.com ここからは実際にXGBoostによる予測モデルを作成していきます。 1. 必要なライブラリのimport 以下で事足ります。 import pandas as pdimport numpy as npimport seaborn as snsim…

MacにXGBoostをインストールして予測モデルを作成する - インストール編

XGBoostで予測モデルを作成していきます。 XGBoostとは 近年KaggleやKDDなどの機械学習界隈で予測精度がよいと評判のアルゴリズム、Gradient Boosting(勾配ブースティング、GBDTと呼ぶことが多い)をc++で実装したもので、計算が速いことが知られています。 G…

Python scikit-learnで決定木での分類結果をROC曲線とAUCで評価する

前回モデルの性能検証に関して、クロスバリデーションについて書きました。 ukichang.hatenablog.com サンプリングデータにバラツキがある際にクロスバリデーションしてから性能評価を行います。モデル自体の性能評価はROC曲線下面積(AUC)で行います。ROCと…

Python3にアップデートしたらmatplotlibのpyplotがインポートできない

Anacondaを使っていますが、Python3にアップデートしたらmatplotlibのpyplotがインポートできなくなりました。ちなみにmatplotlibの他のクラスは読み込めます。 %matplotlib inlinefrom matplotlib import pyplot as plt ImportError: libSM.so.6: cannot op…

Python scikit-learnで決定木モデルの性能検証

前回決定木で予測モデルを作成しましたが、機械学習におけるモデルの性能検証について書きたいと思います。 ukichang.hatenablog.com まず、基本的な考え方としてモデル作成に使う訓練データと検証用のテストデータに分け、 性能検証をします。 いつものiris…

Python scikit-learnで決定木分析

データマイニングで定番の決定木分析をやってみたいと思います。 決定木の説明に関しては他に譲るとして、ここではpythonの機械学習ライブラリである、scikit-learnを利用して決定木分析を行い、graphvizという可視化ライブラリでグラフを描画します。 その…

PythonでAzureのIPアドレスの範囲を取得し、CSVで出力する

前回に引き続き、 Microsoft Azureで公開されているxml形式のIPアドレスの範囲を取得し、CSVファイルとして出力します。 やるべきこととしては、 (1) AzureのWebサイト(※1)をスクレイピングし、データを取得。 (2)取得したxml形式のデータをcsv形式で書き込…

PythonでAWSのIPアドレスの範囲を取得し、CSVで出力する

目的については別途書きますが、AWSで公開されているJSON形式のIPアドレスの範囲を取得し、CSVファイルとして出力します。 やるべきこととしては、 (1) AWSのWebサイト(※1)をスクレイピングし、データを取得。 (2)取得したJSON形式のデータをcsv形式で書き込…

Pythonチュートリアル③-ディクショナリ

引き続き。 今回はディクショナリについて。 Pythonチュートリアル 第2版 作者: Guido van Rossum,鴨澤眞夫 出版社/メーカー: オライリージャパン 発売日: 2010/02/22 メディア: 単行本(ソフトカバー) 購入: 4人 クリック: 136回 この商品を含むブログ (23…

Pythonチュートリアル②-リスト内包

前回の続きです。 今回はリスト内包について。 Pythonチュートリアル 第2版 作者: Guido van Rossum,鴨澤眞夫 出版社/メーカー: オライリージャパン 発売日: 2010/02/22 メディア: 単行本(ソフトカバー) 購入: 4人 クリック: 136回 この商品を含むブログ (…

Pythonチュートリアル①-リストメソッド

意外と初歩的なことを知らずにPythonを使っているなと思っていたので、振り返りの意味を込めて以下の本を買いました。 Pythonチュートリアル 第2版 作者: Guido van Rossum,鴨澤眞夫 出版社/メーカー: オライリージャパン 発売日: 2010/02/22 メディア: 単行…

Numpyで配列の結合・分割

作成した配列の結合や分割もNumpyでよく利用します。 >>>import numpy as np #2×3行列 >>>a = np.array([[1,2,3], [4,5,6]]) >>>b = np.array([[7, 8, 9], [10, 11, 12]]) #2×3行列と2×3行列を行方向に結合して4×3に >>>np.r_[a,b] array([[ 1, 2, 3], [ 4, …

matplotlibで2軸グラフを描画する

縦軸が左右にある 2 軸グラフを作成するにはsubplotを定義したaxisともう一方の軸をtwinします。 Yahoo!より取得した電通の2015年9月の株価終値と出来高の加工済みデータをプロットしてみましょう。 import numpy as npimport pandas as pdimport matplotlib…

ヒストグラムを描く

Pythonのmatplotlibライブラリにおけるhist関数でヒストグラムを描画できます。 #インポート import numpy as npimport scipy as sp import matplotlib.pyplot as plt# データセットの読み込みscore = np.loadtxt('score.txt', skiprows=1)X = score[:,0] #…

SciPyでデータの標準化

データの分布が正規分布でなかったり、説明変数の単位が異なったり、値のスケールが違ったりする場合にデータを標準化する必要があります。 標準化とは、個々のデータから元のデータの平均値を引き、元のデータの標準偏差で割ることで平均0、分散1となります…

Numpyのdtypeを変更する

Numpyではdtypeオプションを指定しなければ自動的に設定されます。しかし、ファイルを読み込むときに以下のように(例えばstring)でtypeを指定することもできます。 #read file$data = np.loadtxt('score.txt', dtype=np.string0)$data array([['contemporary…

numpyでデータを取り込み、matplotlibで散布図に描画する

配列の扱いがあまり得意でなかったため、pandasばかり使ってnumpyを敬遠していました。 残念ながら仕事で触れる機会が頻繁にありそうなので、このタイミングでおさえていきたいと思います。 今回は簡単に、データを取り込みscatterにプロットしたいと思いま…

データの欠損値を埋める

ドル円のTTMレートが必要で三菱東京UFJ銀行公表の対顧客外国為替相場をエクセルファイルで取得(※)しました。データを読み込んでみます。 >import pandas as pd >URL="murc_2014.xls" # Set a path >EXL=pd.ExcelFile(URL) # Open>Data=EXL.parse("data") # P…

時間足ごとの始値と終値の傾向からトレード手法を検討する

前回の記事で仲値時間前はドル買い傾向があると書きました。 <a href="http://ukichang.hatenablog.com/entry/2015/01/08/222949" data-mce-href="http://ukichang.hatenablog.com/entry/2015/01/08/222949">仲値時間にかけて円安ドル高になるのか検証…

仲値時間にかけて円安ドル高になるのか検証してみた

東京時間の午前10時頃に向けて円安ドル高になると言われています。これは企業や個人が外貨を売買するレートである仲値が午前9時55分頃に決定されるためです。東京時間では日本企業が外国企業への支払いのためドルの需要が高まります。実需に対応するため金融…

PostgreSQLからクエリでデータを呼び出してグラフにプロットする

前回PostgreSQLにInsertしたデータをクエリで呼び出してグラフにプロットしてみたいと思います。 まず、IPythonからPostgreSQLへのコネクションを作成します。 In [1]: import psycopg2 as pg In [2]: conn = pg.connect(dbname="forRDS", host="forrds.xxxx…

IPython notebookからRDSのテーブルを作成する

前回はEC2からRDSにコネクションを作成しました。 <a href="http://ukichang.hatenablog.com/entry/2014/12/12/235206" data-mce-href="http://ukichang.hatenablog.com/entry/2014/12/12/235206"&a…

EC2上のIPython notebookからRDSに接続する

前回はRDSにDataBaseを作成しました。 <a href="http://ukichang.hatenablog.com/entry/2014/12/06/132230" data-mce-href="http://ukichang.hatenablog.com/entry/2014/12/06/132230">Amazon RDS for PostgreSQLを使う - メモ代わりにブログ</a&gt…

ヒストリカルデータから特定の為替ペアを抽出する

以前ダウンロードしたヒストリカルデータには複数の為替ペアが混ざっています。 まずヒストリカルデータに含まれる為替ペアをみてみましょう。 pandasを使って重複行を除去します。 In [12]: data['<TICKER>'].drop_duplicates() Out[12]: 0 AUDUSD 5864 AUDJPY 1171</ticker>…

Dataframeを扱う

pandasの扱うデータ構造にDataFrameがあります。DataFrameはテーブル形式のスプレッドシート風のデータ構造を持ち、順序付けられた列を持っています。 このDataFrame型での読み書きをやってみましょう。 In [2]: import pandas as pd In [3]: ls combine2.cs…

datetime型に変換する

前々回入手したヒストリカルデータは日付と時刻のカラムが分かれています。 In [10]: df=pd.read_csv('hourly2001.txt') In [11]: df Out[11]: <TICKER><DTYYYYMMDD><TIME><OPEN><HIGH><LOW><CLOSE> 0 AUDUSD 20010103 20000 0.5624 0.5636 0.5620 0.5634 1 AUDUSD 20010103 30000 0.5633 0.5643 0.5620 0.5631 </close></low></high></open></time></dtyyyymmdd></ticker>…

取得したヒストリカルデータを結合する

前回取得したヒストリカルデータは各年ごとに分断されています。そこでPythonを使って取得したヒストリカルデータを結合します。 もちろんExcelでコピペをすれば可能ですが、データ加工から分析まで一貫して行えるのがPythonの強みですから、とりあえず使っ…

IPython notebookをインストールする

ブラウザでIPython Notebookを起動してみましょう。 IPython Notebook を実行するにはIPython とその依存する ソフトウェアをインストールする必要があります。 インスタンスのAMIによってインストール方法が異なるかと思いますが、ここではubuntu(Linux)で…