R基礎と機械学習の初探

3393 ワード

一.R言語の基礎
1.1 Rのデータ構造
ベクトル、データボックス、行列は最も一般的なRデータ構造に属しています.
ベクトルは、単純に1次元配列です.
行列とは、二次元配列のことです.
データボックスは、簡単な理解はexcelテーブル、または関係データベースのテーブルとして理解されます.
1.2データ読みだし
  csv  :
read.csv(file="",header=TURE,sep="",stringAsFactors=FALSE)

      :read.table()

            

install.packages("RODBC")                  : sudo apt-get install unixODBC;   sudo apt-get install unixODBC-dev

library(RODBC)

mydb 
二.データ探索
2.1データ構造の探索
簡単な画像認識データを例にとって
df 
'data.frame': 42000 obs. of 785 variables:
$ label : int 1 0 1 4 0 0 7 3 5 3 ...
$ pixel0 : int 0 0 0 0 0 0 0 0 0 0 ...
$ pixel1 : int 0 0 0 0 0 0 0 0 0 0 ...
$ pixel2 : int 0 0 0 0 0 0 0 0 0 0 ...
$ pixel3 : int 0 0 0 0 0 0 0 0 0 0 ...
$ pixel4 : int 0 0 0 0 0 0 0 0 0 0 ...
$ pixel5 : int 0 0 0 0 0 0 0 0 0 0 ...
$ pixel6 : int 0 0 0 0 0 0 0 0 0 0 ...
dim(df)

[1] 42000   785

head(df)
2.2数値型変数と変数の関係を探索する
私たちはまだこのデータの特徴をよく知らないとしたら、これらのデータをさらに理解するにはどうすればいいですか?まずsummary(df)を見に行きます.
summary(df$label)
Min. 1st Qu. Median Mean 3rd Qu. Max. 
0.000 2.000 4.000 4.457 7.000 9.000
それぞれの特徴の最大、最小、平均、中央、25%、75%が見られます.
df$labelは0から9までの数字で、つまり目標値です.
as.factor(df[,1])は、labelを因子に変換する.
他の列は全部0-255の数字で、全部で784列です.
ここでのデータは、手書きの数字0-9の画像を二次元マトリックスに変換して格納するもので、784=28*28となり、最初の列は数字ラベルとなる.
diff(range(df$pixel358))           

 IQR(df$pixel668)   Q3-Q1

quantile(df$pixel771,probs = c(0.01,0.99))           
可視化:
boxplot()

cov()

cor()

aggregate()

pairs()

plot()

CrossTable()
様々な統計モデルとビューは、3 D散布図、熱図、等々の高図など、分散、クロステーブル、分布モデルなどを含みます.
2.3分類変数の探索
table(df$label)      

prop.table(table(df$label))         
2.4処理データ
ここのデータを手書きでデジタルの画像に変換してみます.
40枚の低い数字を見に来ました.
im 
画像は逆さまの数字です.そのマシンはどうやって識別されますか?
アルゴリズムの試みのランダム森林
分類アルゴリズムは様々で、分類するために多くの種類の分類器を選ぶことができます.ここではランダム森林アルゴリズムを試してみます.
Rの中にはランドムフォースがあります.簡単なランダム森林アルゴリズムを試してみてください.パーティーバッグにもcforest関数があります.
df 
このような簡単な流れで、自分で何かの最適化案やモデリングを書いていません.テスト分類の正確性は96%以上に達することができます.新たに与えられたtest.csv(大体50 Mテストデータに対して、モデルの表現は96%の正確度に達することができます.)もちろん、選択できるアルゴリズムと最適化方案が多く、上記に書いてあるのはただ一つの探求模索の流れです.実際には、いくつかの最適化を行うと、精度は99%に達することができます.
四.アルゴリズム試行のkNN
乳がんの予測データについて
データの探索は簡単に省略しました.データの第一列は役に立たないので、wbcdを削除します.
第二列は因子(B,M)で、癌の陰性と陽性を表します.
残りの30個の特徴は細胞のいくつかの物理的特徴であり、アルゴリズムの目的は細胞の特徴によって癌の陰性と陽性を判断することである.
4.1データ処理
wbcd 
KNNアルゴリズムは距離によって計算されるので、一般的にヨーロッパ式の距離を使った方が分かりやすいです.したがって、ここではデータの変換に関する.
min-max   :(x-min(x))/(max(x)-min(x))  #         0-1  ,         

z-score   :(x-mean(x))/StdDev(x)   
4.2データ準備
library(class)

wbcd 
| wbcd_pred 
wbcd[ind == 2, 1] | B | M | Row Total | 
------------------|-----------|-----------|-----------|
B | 74 | 0 | 74 | 
| 1.000 | 0.000 | 0.632 | 
| 0.961 | 0.000 | | 
| 0.632 | 0.000 | | 
------------------|-----------|-----------|-----------|
M | 3 | 40 | 43 | 
| 0.070 | 0.930 | 0.368 | 
| 0.039 | 1.000 | | 
| 0.026 | 0.342 | | 
------------------|-----------|-----------|-----------|
Column Total | 77 | 40 | 117 | 
| 0.658 | 0.342 | | 
------------------|-----------|-----------|-----------|
k値,異なるデータ標準化,異なるアルゴリズム,異なる特徴を選択することによって正確さを最適化することもできる.