Machine-learning-with-python-data-loading-for-ml-projects

提供:Dev Guides
移動先:案内検索

MLプロジェクトのデータ読み込み

MLプロジェクトを開始する場合、最初に必要な最も重要なことは何でしょうか? MLプロジェクトを開始するためにロードする必要があるデータです。 データに関して、MLプロジェクトのデータの最も一般的な形式はCSV(コンマ区切り値)です。

基本的に、CSVは、スプレッドシートなどの表形式のデータ(数値とテキスト)をプレーンテキストで保存するために使用される単純なファイル形式です。 Pythonでは、さまざまな方法でCSVデータを読み込むことができますが、CSVデータを読み込む前に、いくつかの考慮事項に注意する必要があります。

CSVデータの読み込み中の考慮事項

CSVデータ形式はMLデータの最も一般的な形式ですが、MLプロジェクトに同じデータを読み込む際には、次の主要な考慮事項に注意する必要があります。

ファイルヘッダー

CSVデータファイルでは、ヘッダーに各フィールドの情報が含まれています。 データフィールドの解釈方法を指定するのはヘッダーファイルであるため、ヘッダーファイルとデータファイルに同じ区切り文字を使用する必要があります。

以下は、考慮する必要があるCSVファイルヘッダーに関連する2つのケースです-

  • ケースI:データファイルにファイルヘッダーがある場合-データファイルにファイルヘッダーがある場合、データの各列に名前が自動的に割り当てられます。
  • ケースII:データファイルにファイルヘッダーがない場合-データファイルにファイルヘッダーがない場合、データの各列に名前を手動で割り当てる必要があります。

どちらの場合も、CSVファイルにヘッダーが含まれているかどうかを明示的に指定する必要があります。

コメント

データファイルのコメントには重要な意味があります。 CSVデータファイルでは、コメントは行の先頭にハッシュ(#)で示されます。 CSVデータをMLプロジェクトにロードする際にコメントを考慮する必要があります。ファイルにコメントがある場合、ロードするために選択した方法、それらのコメントを期待するかどうかを示す必要があるためです。

デリミタ

CSVデータファイルでは、コンマ(、)文字が標準の区切り文字です。 区切り文字の役割は、フィールドの値を区切ることです。 CSVファイルをMLプロジェクトにアップロードするときに区切り文字の役割を考慮することは重要です。これは、タブや空白などの別の区切り文字も使用できるためです。 ただし、標準の区切り文字とは異なる区切り文字を使用する場合は、明示的に指定する必要があります。

引用

CSVデータファイルでは、二重引用符(“”)マークがデフォルトの引用文字です。 CSVファイルをMLプロジェクトにアップロードするときは、二重引用符以外の引用文字も使用できるため、引用の役割を考慮することが重要です。 ただし、標準の引用符とは異なる引用符を使用する場合は、明示的に指定する必要があります。

CSVデータファイルをロードする方法

MLプロジェクトでの作業中、最も重要なタスクはデータを適切にロードすることです。 MLプロジェクトの最も一般的なデータ形式はCSVであり、さまざまな種類があり、解析するのが困難です。 このセクションでは、PythonでCSVデータファイルをロードする3つの一般的なアプローチについて説明します-

Python標準ライブラリでCSVを読み込む

CSVデータファイルを読み込むための最初で最も使用されるアプローチは、さまざまな組み込みモジュール、つまり_csv module_と_reader()function_を提供するPython標準ライブラリの使用です。 以下は、それを使用してCSVデータファイルをロードする例です-

この例では、ローカルディレクトリにダウンロードできるiris _flower data set_を使用しています。 データファイルを読み込んだ後、次のように変換できます。

NumPy

まず、次のようにPython標準ライブラリが提供するcsvモジュールをインポートする必要があります-

import csv

次に、ロードされたデータをNumPy配列に変換するNumpyモジュールをインポートする必要があります。

import numpy as np

今、私たちのローカルディレクトリに保存されたファイルのフルパスを提供し、CSVデータファイルを持っています-

path = r"c:\iris.csv"

次に、csv.reader()関数を使用してCSVファイルからデータを読み取ります-

with open(path,'r') as f:
reader = csv.reader(f,delimiter = ',')
headers = next(reader)
data = list(reader)
data = np.array(data).astype(float)

スクリプトの次の行でヘッダーの名前を印刷できます-

print(headers)

次のスクリプト行は、データの形状、つまり ファイル内の行と列の数-

print(data.shape)

次のスクリプト行は、データファイルの最初の3行を示します-

print(data[:3])

出力

['sepal_length', 'sepal_width', 'petal_length', 'petal_width']
(150, 4)
[[Load CSV with NumPy

Another approach to load CSV data file is _NumPy_ and _numpy.loadtxt()_ function. The following is an example of loading CSV data file with the help of it −

==== Example

In this example, we are using the Pima Indians Dataset having the data of diabetic patients. This dataset is a numeric dataset with no header. It can also be downloaded into our local directory. After loading the data file, we can convert it into _NumPy_ array and use it for ML projects. The following is the Python script for loading CSV data file −

[source,prettyprint,notranslate]

from numpy import loadtxt path = r "C:\ pima-indians-diabetes.csv" datapath = open(path、 'r')data = loadtxt(datapath、delimiter = "、")print(data.shape)print(data [:3])

==== Output

[source,result,notranslate]

(768、9)[[CSVをパンダでロード

CSVデータファイルを読み込む別の方法は、_Pandas_および_pandas.read_csv()function_によるものです。 これは、プロットにすぐに使用できるpandas.DataFrameを返す非常に柔軟な関数です。 以下は、それを使用してCSVデータファイルをロードする例です-

ここでは、2つのPythonスクリプトを実装します。1つ目はヘッダーを持つIrisデータセットを使用し、もう1つはヘッダーのない数値データセットである_Pima Indians Dataset_を使用することです。 両方のデータセットをローカルディレクトリにダウンロードできます。

  • スクリプト-1 *

以下は、Iris _Data set_で_Pandas_を使用してCSVデータファイルをロードするためのPythonスクリプトです-

from pandas import read_csv
path = r"C:\iris.csv"
data = read_csv(path)
print(data.shape)
print(data[:3])

出力

(150, 4)
sepal_length sepal_width petal_length petal_width
0 5.1        3.5         1.4          0.2
1 4.9        3.0         1.4          0.2
2 4.7        3.2         1.3          0.2
  • スクリプト-2 *

以下は、CSVデータファイルを読み込むためのPythonスクリプトであり、Pima Indians DiabetesデータセットでPandaを使用して、ヘッダー名も提供します-

from pandas import read_csv
path = r"C:\pima-indians-diabetes.csv"
headernames = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class']
data = read_csv(path, names=headernames)
print(data.shape)
print(data[:3])

出力

(768, 9)
   preg  plas    pres  skin  test  mass   pedi  age  class
0     6   148      72    35     0  33.6  0.627   50      1
1     1    85      66    29     0  26.6  0.351   31      0
2     8   183      64     0     0  23.3  0.672   32      1

上記のCSVデータファイルをロードするために使用された3つのアプローチの違いは、与えられた例の助けを借りて簡単に理解できます。