ご注文は何ですか?

Welcome to DayDream Cafe(´・ω・`)

PythonでR言語のデータセットを用いる方法

経緯

※この記事は書き途中です

R言語でプログラム書きたくない.
Pythonで1からデータセットは用意したくない.
R言語は初めからデータセットが用意されている.
PythonでどうにかR言語のデータセットを用いることは出来ないか.
検索してみると,同じこと考えている人がいたので参考にした.

実行

Python 2.7.8 + Anaconda 2.1.0 (x86_64)

1
$pip install rpy2 #
1
2
import pandas.rpy.common as prc  #Library
print prc.load_data("iris")


これでオッケー☆⌒d(´∀`)ノ
試しにはじめてのパターン認識 実行例4.1   アヤメデータを用いた標準化をPythonでやってみます.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#!/usr/bin/python
# -*- coding: utf-8 -*-
import pandas.rpy.common as prc
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt

#各種毎に違うMarkerをつけるための関数を作りたかった
#(上手くできず挫折)

if __name__ == '__main__':

  x=prc.load_data("iris")
  print x
  x = np.array(x)
  #print x 
  print "--"
  #0.Sepal.Length 
  #1.Sepal.Width 
  #2.Petal.Length(花弁の長さ)
  #3.Petal.Width(花弁の幅)
  #4.Species

  #平均値
  pl = np.array(x[:,2],dtype=float)
  print "Petal.Length Average "+ str(np.average(pl))
  pw = np.array(x[:,3],dtype=float)
  print "Petal.Width Average " + str(np.average(pw))
  word = np.array(x[:,4],dtype=object)
  #共分散行列
  conv = np.cov(x[:,2:4],rowvar=0)
  print "Convariance matrix\n" + str(conv)


  plt.axis('scaled')
  #標準化前
  
  plt.subplot(211)
  plt.title("before")
  plt.scatter(x[:,2],x[:,3],marker='s',color='b')

  #標準化後
  z = np.array(x[:,2:4],dtype=float)
  z = stats.zscore(z, axis=0) #標準化
  plt.subplot(212)
  plt.title("after")
  plt.scatter(z[:,0],z[:,1],marker='s',color='r')
  plt.savefig("iris_43.png") #画像保存
  plt.show()

実行結果
本当はsetosa,versicolor,virginicaを区別したかった
おそらくもっと良い方法があると思うので勉強します

結論

これでR言語のデータセットが使えるようになった.
けれどscikit-learnにデータセットが用意されてるから単純にサンプルを実行したいだけなら無理にRのデータセットを用いる必要性はなかった. おそらく二度とR言語のデータセットを使う機会は無さそうだ.

参考にしたサイト