So-net無料ブログ作成

Pythonでデータ解析[Pandas] -その2- 重回帰① [データマイニング]


Python for Data Analysis

Python for Data Analysis

  • 作者: Wes Mckinney
  • 出版社/メーカー: Oreilly & Associates Inc
  • 発売日: 2012/10/29
  • メディア: ペーパーバック



Pythonのマイニングパッケージをいじってみています。
とりあえず、PandasやScikit-learnを使って重回帰をやってみる。Pandas部分については↑などを参考にしています。Scikit-learnについてはもっぱらGoogle先生だのみ。専門に書かれている本はないのかな?

◆先ずは環境設定
####環境設定
import os
import sys
import pandas as pd
from sklearn import linear_model

####ディレクトリ設定
os.chdir('C:/*******(ワーキングディレクトリ)*****')


◆データ読み込みと状況確認
prs = pd.read_csv('prostate.csv')
##↓データは以下を使用
##http://www-stat.stanford.edu/~tibs/ElemStatLearn/datasets/prostate.data

####データ状況確認
prs.info()
#
#Int64Index: 97 entries, 0 to 96
#Data columns:
#lcavol 97 non-null values
#lweight 97 non-null values
#age 97 non-null values
#lbph 97 non-null values
#svi 97 non-null values
#lcp 97 non-null values
#gleason 97 non-null values
#pgg45 97 non-null values
#lpsa 97 non-null values
#train 97 non-null values
#dtypes: float64(5), int64(4), object(1)

prs.describe()
#Out[1]:
# lcavol lweight age lbph svi lcp gleason \
#count 97.000000 97.000000 97.000000 97.000000 97.000000 97.000000 97.000000
#mean 1.350010 3.628943 63.865979 0.100356 0.216495 -0.179366 6.752577
#std 1.178625 0.428411 7.445117 1.450807 0.413995 1.398250 0.722134
#min -1.347074 2.374906 41.000000 -1.386294 0.000000 -1.386294 6.000000
#25% 0.512824 3.375880 60.000000 -1.386294 0.000000 -1.386294 6.000000
#50% 1.446919 3.623007 65.000000 0.300105 0.000000 -0.798508 7.000000
#75% 2.127041 3.876396 68.000000 1.558145 0.000000 1.178655 7.000000
#max 3.821004 4.780383 79.000000 2.326302 1.000000 2.904165 9.000000
#
# pgg45 lpsa
#count 97.000000 97.000000
#mean 24.381443 2.478387
#std 28.204035 1.154329
#min 0.000000 -0.430783
#25% 0.000000 1.731656
#50% 15.000000 2.591516
#75% 40.000000 3.056357
#max 100.000000 5.582932 

★".describe()"でRのsummaryと類似出力

◆データ作成
###学習データ
train = prs[prs['train'] == 'T']
###テストデータ
test = prs[prs['train'] == 'F']

###学習データ準備
Y = train.pop('lpsa') #目的変数をセット
X = train.ix[:,:'pgg45'] #説明変数をセット

★列の選択がRとは異なる構文。どうやるのか分からずハマった。google先生に聞いてもそれらしいものを見つけるのに苦労した(^^;
★scikit-learnでは目的変数と説明変数を分けておく必要がある

◆いよいよモデリング
###通常の重回帰
prs_ols = linear_model.LinearRegression()
prs_ols.fit(X, Y)

#係数
prs_ols.coef_
#Out[1]:
#array([ 0.57654319, 0.61402 , -0.01900102, 0.14484808, 0.73720864,
# -0.20632423, -0.02950288, 0.00946516])

#切片
prs_ols.intercept_
#Out[1]: 0.42917013284910865

#列名を付与して表示
df1 = DataFrame(prs_ols.intercept_, index = ['(intercept)'], columns = ['Est Coeff-ols'])
df2 = DataFrame(prs_ols.coef_, index = X, columns = ['Est Coeff-ols'])
pd.concat([df1, df2]) # 縦結合(rbind)

#Out[1]: # Est Coeff-ols
# (intercept) 0.429170
#lcavol 0.564341
#lweight 0.622020
#age -0.021248
#lbph 0.096713
#svi 0.761673
#lcp -0.106051
#gleason 0.049228
#pgg45 0.004458

★RのようにP値や決定係数は出力されないのでしょうか。これだとちょっと使いにくい。Orangeパッケージの方がいいのかな。まだまだ勉強が足りないな~。
★RみたいなPredict関数はあるようだが、なんだかうまくいかなかった。これも宿題。

◆参考サイト
Python:リッジ回帰
http://blog.livedoor.jp/norikazu197768/archives/14995354.html

入門機械学習[O'Reilly]をさらっと読んでみた! [データマイニング]


入門 機械学習

入門 機械学習

  • 作者: Drew Conway
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2012/12/22
  • メディア: 大型本



新しい機械学習の本がオライリーから出版された。
"Machine Learning for Hackers"という洋書の邦訳である。

内容は機械学習の代表的なアルゴリズムをRで実行して試そうというもの。邦題にあるように「入門」という文字が適しているように思われる。初学者はサンプルコードを実行することで各アルゴリズムの特徴を掴むことができるだろう。リッジ回帰などの正則化についても言及されており、最近のトレンドが盛り込まれている。

そして、可視化に美麗なggplot2を使っているところも特徴である。ggplot2では多様なビジュアル表現が可能であり、筆者もデータの理解や結果の解釈をする際に重宝している。ただ、本書は白黒なのでカラーでその表現の美しさを実感できないのが残念。いくつものWebサイトでggplot2について紹介されているので適宜参照しながら読み進めるのがよいだろう。

本書ではRコードは示されているが、関数の中身(アルゴリズムの仕組み)についてはあまり詳しく言及されていない。当然、数式もない。アルゴリズムのコードを学習したい場合には「集合知プログラミング」(参考図書①)が参考になる。同書にはPythonのサンプルコードが記述されている。また、数式を追いたい場合には「パターン認識と機械学習」(参考図書②)や"The Elements of Statistical Learning"(参考図書③)を読み進めるとより理解が深まるのではないだろうか。

ちなみに、私はコツコツと③でLASSOについて勉強しているところである・・・。③はLASSOの考案者である"Robert Tibshirani"が著者の1人であるため、リッジ回帰やLASSOなどの正則化がらみの勉強には最適ではないかと思っている。


◆参考図書
①集合知プログラミング

集合知プログラミング

集合知プログラミング

  • 作者: Toby Segaran
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2008/07/25
  • メディア: 大型本



②パターン認識と機械学習

パターン認識と機械学習 上

パターン認識と機械学習 上

  • 作者: C.M. ビショップ
  • 出版社/メーカー: 丸善出版
  • 発売日: 2012/04/05
  • メディア: 単行本(ソフトカバー)



③The Elements of Statistical Learning

The Elements of Statistical Learning: Data Mining, Inference, and Prediction (Springer Series in Statistics)

The Elements of Statistical Learning: Data Mining, Inference, and Prediction (Springer Series in Statistics)

  • 作者: Trevor Hastie
  • 出版社/メーカー: Springer-Verlag
  • 発売日: 2009/03
  • メディア: ハードカバー








メッセージを送る

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。