Rでのデータ前処理:究極のチュートリアル[2022]
公開: 2021-03-01次のRチュートリアルでのデータ前処理では、データ前処理を実行する方法の基本を学びます。 このチュートリアルでは、Rとプログラミングの基本に精通している必要があります。
目次
1.ステップ:問題の発見と修正
最初にデータセットをインポートすることにより、Rチュートリアルでデータの前処理を開始します。 結局のところ、そもそもデータがないと、データを前処理することはできません。
この場合、データは作業ディレクトリのdata.csvファイルに保存されます。 コマンドsetwd( "desired location")を使用して、作業ディレクトリを設定できます。
プロセスを開始する方法は次のとおりです。
データセット<-read.csv(“ Data.csv”)
データセットは次のとおりです。
## | 国 | 年 | 給料 | 購入した | |
## | 1 | フランス | 44 | 72000 | 番号 |
## | 2 | スペイン | 27 | 48000 | はい |
## | 3 | ドイツ | 30 | 54000 | 番号 |
## | 4 | スペイン | 38 | 61000 | 番号 |
## | 5 | ドイツ | 40 | NA | はい |
## | 6 | フランス | 35 | 58000 | はい |
## | 7 | スペイン | NA | 52000 | 番号 |
## | 8 | フランス | 48 | 79000 | はい |
## | 9 | ドイツ | 50 | 83000 | 番号 |
## | 10 | フランス | 37 | 67000 | はい |
ご覧のとおり、データセットの[給与]列と[年齢]列に欠落している値があります。 データセットに存在する問題を特定したので、同じ問題の修正を開始できます。
データセットには他の問題は存在しないようであるため、欠落している値を処理するだけで済みます。 NA値をそれぞれの列の平均値に置き換えることで、この問題を修正できます。 方法は次のとおりです。
dataset $ Age <-ifelse(is.na(dataset $ Age)、
ave(dataset $ Age、FUN = function(x)
mean(x、na.rm = TRUE))、
データセット$年齢)
dataset $ Salary <-ifelse(is.na(dataset $ Salary)、
ave(dataset $ Salary、FUN = function(x)
mean(x、na.rm = TRUE))、
データセット$給与)
ここでave()関数をどのように使用したかに注目してください。 入力した特定の列の平均を取ります。ここで、FUNは、NA値を除いた平均を計算するxの関数です(na.rm = TRUE)。
そうしないと、
データセット$Ageに存在するものは何でも取得します
ここで、mean()関数を使用します。
#defining x = 1 2 3
x <-1:3
#不足している値の紹介
x [1] <-NA
#平均= NA
mean(x)
## [1] NA
#平均=NA値を除いた平均
mean(x、na.rm = T)
## [1] 2.5
問題を特定して修正すると、データセットは次のようになります。
## | 国 | 年 | 給料 | 購入した | |
## | 1 | フランス | 44 | 72000.00 | 番号 |
## | 2 | スペイン | 27 | 48000.00 | はい |
## | 3 | ドイツ | 30 | 54000.00 | 番号 |
## | 4 | スペイン | 38 | 61000.00 | 番号 |
## | 5 | ドイツ | 40 | 63777.78 | はい |
## | 6 | フランス | 35 | 58000.00 | はい |
## | 7 | スペイン | 38 | 52000.00 | 番号 |
## | 8 | フランス | 48 | 79000.00 | はい |
## | 9 | ドイツ | 50 | 83000.00 | 番号 |
## | 10 | フランス | 37 | 67000.00 | はい |
また読む: Rプログラミング言語でのキャリアの機会

2.ステップ:カテゴリデータ
カテゴリデータは、特定のカテゴリに属する非数値データです。 データセットの[国]列はカテゴリデータです。 Rのread.csv()関数は、すべての文字列変数をカテゴリ変数として作成します。 ただし、すべての場合に使用できるわけではありません。
因子変数として特定の変数を作成する方法は次のとおりです。
dataset $ Country = factor(dataset $ Country、
レベル=c('フランス'、'スペイン'、'ドイツ')、
ラベル=c(1、2、3))
dataset $ Purchased = factor(dataset $ Purchased、
レベル=c('いいえ'、'はい')、
ラベル=c(0、1))
3.ステップ:データの分割
次に、データセットを2つの別々のデータセットに分割する必要があります。 1つは機械学習モデルのトレーニング用で、もう1つは同じものをテストするためのものです。
そのためには、最初にcaToolsパッケージ(利用できない場合)をインストールして、ライブラリに追加します。 その後、set.seed()関数を使用して、分割がランダムに行われるようにします。 次のコードを使用します。
ライブラリ(caTools)
set.seed(123)
split = sample.split(dataset $ Purchased、SplitRatio = 0.8)
training_set = subset(dataset、split == TRUE)
test_set =サブセット(データセット、分割== FALSE)
分割比率を80:20に維持していることに気付いたはずです。 これは、トレーニングセットとテストセットの最も一般的な分割比率であるためです。 sample.split()メソッドは列を取得し、分割率に従ってランダム化されたtrue値とfalse値を持つ数値配列を作成しました。
4.ステップ:機能のスケーリングまたは過剰適合
データセット内のさまざまな機能の範囲が異なる場合は、機能のスケーリングが必要です。 この場合、Age列とSalary列の範囲が異なるため、MLモデルのトレーニングで問題が発生する可能性があります。
他のフィーチャよりも範囲が大幅に広いフィーチャがある場合、ユークリッド距離が大幅に増加し、モデルの結果が正しくなくなります。
Rのほとんどのライブラリはこの問題を自動的に修正しますが、これを修正する方法を知ることは重要です。 以下をせよ:
training_set [、2:3] = scale(training_set [、2:3])
test_set [、2:3] = scale(test_set [、2:3])
これで問題が修正され、トレーニングセットの機能の範囲が同じになり、機械学習の実装中にエラーが発生する可能性が最小限に抑えられます。
世界のトップ大学からデータサイエンス認定を取得します。 エグゼクティブPGプログラム、高度な証明書プログラム、または修士プログラムを学び、キャリアを早急に進めましょう。
結論
Rチュートリアルのデータ前処理がお役に立てば幸いです。 チュートリアルを自分でテストする前に、チュートリアルを理解しておくことをお勧めします。 概念を理解することは、それらを使用することよりもはるかに重要です。
Rチュートリアルでのデータ前処理についてどう思いますか? 以下のコメントでそれらを共有してください。
R、データサイエンスについて知りたい場合は、データサイエンスのエグゼクティブPGをチェックしてください。これは、働く専門家向けに作成され、10以上のケーススタディとプロジェクト、実践的なハンズオンワークショップ、業界の専門家とのメンターシップ、1対1を提供します。 1業界のメンター、400時間以上の学習、トップ企業との仕事の支援。
Pythonでは、ポリモーフィズムとは、さまざまな目的に使用できる総称関数名を指します。 このアイデアは、オブジェクト指向のPythonプログラミングの概念で一般的に使用されています。 ダックタイピングはポリモーフィズムの概念です。 ダックタイピングというフレーズは、アヒルのように歩いたり、いんちきをしたり、泳いだりするものはすべて、それが何であるかに関係なく、アヒルと呼ばれるということわざに由来しています。 簡単に言えば、何かがその動作を他の何かと一致させる場合、それはそのカテゴリのメンバーと見なされることを示します。 派生クラスと基本クラスまたはスーパークラスの両方で同じ名前と引数を持つメソッドが使用されている場合、派生クラスメソッドは基本クラスで提供されているメソッドをオーバーライドすると言われます。 オーバーライドされたメソッドが呼び出されると、派生クラスのメソッドが常に呼び出されます。 基本クラスで使用されていたメソッドが非表示になりました。Pythonには何種類のポリモーフィズムがありますか?
ポリモーフィズムは、JavaやC ++などの他のプログラミング言語と同様に、ダックタイピング、演算子のオーバーロード、メソッドのオーバーロード、メソッドのオーバーライドなど、いくつかの目的でPythonに実装されています。 オーバーロードとオーバーライドは、ポリモーフィズムを実現するための2つの主要な方法です。
同じ名前で引数が異なる多くのメソッドを持つクラスは、メソッドのオーバーロードと呼ばれます。 Pythonでは、メソッドのオーバーロードはデフォルトではサポートされていませんが、それを行うためのテクニックは数多くあります。 ダックタイピングとは何ですか?
オーバーロードとオーバーライドとは何ですか?
一方、Pythonは、メソッドパラメータのタイプ、数量、または順序に基づくメソッドのオーバーロードを提供しません。 メソッドのオーバーロードは、複数の方法で呼び出すことができるようにメソッドを定義するためのPythonアプローチです。 他のプログラミング言語とは異なり、これはユニークです。