Amazon Personalizeのエラーを解決!各カラムのデータ型を調べる方法

Amazon Personalizeのデータセット作成時に、以下のエラーがでました。

 

Failed to create a data import job for item interactions dataset.
Input csv has rows that do not conform to the dataset schema. Please ensure all required data fields are present and that they are of the type specified in the schema.

 

データセット作成時にスキーマを設定しますが、実際のデータの属性とスキーマが合っていないためにエラーが発生したようです。

 

今回の記事では、CSVファイルに含まれる各カラムのデータ型を調べる方法を紹介します。

 

 

各カラムのデータ型を調べてみる

Amazon Personalizeの各データセットを作成する際に、次のエラーが出ました。

 

Failed to create a data import job for item interactions dataset.
Input csv has rows that do not conform to the dataset schema. Please ensure all required data fields are present and that they are of the type specified in the schema.

 

personalizeインポートエラー

 

実データとスキーマを比較すると、属性名は合っていました。あとは、データ型が不一致の可能性があります。

 

AWS公式ドキュメントを確認すると、"Amazon Personalize にインポートするデータ (属性名やデータ型を含む) は、宛先データセットのスキーマと一致する必要があります"と書かれていますので、実データに含まれる各属性のデータ型を調べる必要がありそうです。

 

 

■準備

CSVファイルに含まれる各カラムのデータ型を調べる方法はいくつかありますが、今回はPythonのpandasライブラリを使う方法をやってみます

 

検証には、以下を利用します。

  • データファイル
  • Jupyter Notebook

 

Jupyter Notebookについては、こちらの記事を参照してください。

 

 

■データ型を調べてみる

CSVファイルに含まれる各カラムのデータ型を調べてみましょう。

 

使用するデータは以下の画像の通りです。
USER_ID,AGE,GENDER,LOCATION

 

check-data-typeデータ確認

 

↓[Jupyter Notebook]を起動します。

 

Jupyter Notebook起動

 

↓[pandas]をインポートします。pandasはデータ分析、データクリーニング、データ探索など、データサイエンスの分野で広く利用されています。
import pandas as pd

 

Jupyter Notebookデータチェック

 

↓データ型を調べたいCSVファイルを読み込みます。

file_path = "C:\\Users\\csnp0001\\Downloads\\check-data-type\\ファイルパス"
df = pd.read_csv(file_path)

 

Jupyter Notebookデータチェック

 

↓取り込めているか、先頭の5行を表示してみます。
print(df.head())

 

Jupyter Notebookデータチェック

 

↓それではデータ型を調べてみましょう。基本的な情報(カラム名、非欠損値の数、データ型など)を表示してみます。
print(df.info())

 

Jupyter Notebookデータチェック

 

USER_ID,AGEがint、GENDER,LOCATIONがobjectだとわかりましたね。

 

↓個別に調べたいときは、以下のコードを実行します。
print(df['USER_ID'].dtype)

 

Jupyter Notebookデータチェック

 

↓どんな値が入っているかも確認できます。

for column in df.columns:
    print(f"\nColumn: {column}")
    print(f"Unique values: {df[column].nunique()}")
    if df[column].nunique() < 10:  # 10未満のユニークな値を持つカラムの場合、それらの値を表示
        print(f"Values: {df[column].unique()}")

 

Jupyter Notebookデータチェック

 

↓欠損値がないかを調べるときは、次のコマンドを実行します。
print(df.isnull().sum())

 

Jupyter Notebookデータチェック

 

今回の検証は以上です。

 

 

まとめ: Amazon Personalizeのエラーを解決!各カラムのデータ型を調べる方法

Amazon Personalizeは推薦情報を取得できるキャンペーン作成まで、正直すんなりいきません。

 

とくに学習させるデータをインポートするまではエラーの連続です。今回紹介したデータ型の調査も、地味ですが有用な方法かと思います。ぜひ試してみてください。

 

 

参考リンク:AWS公式ドキュメント

 

↓ほかの協栄情報メンバーも機械学習・AIに関する記事を公開しています。ぜひ参考にしてみてください。

 

■Amazon CodeWhispererを試してみた(dapeng)
https://cloud5.jp/amazon-codewhisperer/

 

■Amazon Personalizeの使い方や事例を紹介【ハンズオンあり】(齊藤弘樹)
https://cloud5.jp/saitou-amazonpersonalize-entry/

 

■Amazon Personalizeの使い方や事例を紹介【ハンズオンあり】 part2(齊藤弘樹)
https://cloud5.jp/saitou-amazonpersonalize-handson/

 

■Amazon Personalize学習用ダミーデータをPythonで作ってみた(齊藤弘樹)
https://cloud5.jp/saitou-personalize-create-dammydata/

 

Last modified: 2023-11-03

Author