XGBoostでの「ValueError: Invalid classes inferred from unique values...」エラーの解決方法


  1. ラベルのエンコーディングを確認する: XGBoostは、ラベルを整数値として扱います。したがって、ラベルが文字列や浮動小数点数としてエンコードされている場合、エラーが発生します。まず、ラベルのデータ型を確認し、必要に応じてエンコーディングを変更します。

    # ラベルのデータ型を確認する
    print(df['label'].dtype)
    # エンコーディングを変更する
    df['label'] = df['label'].astype(int)
  2. ラベルの一意な値を確認する: エラーメッセージによれば、一意のクラスが無効であるとされています。したがって、ラベルの一意な値を確認して、問題がないか確認する必要があります。

    # ラベルの一意な値を表示する
    print(df['label'].unique())

    もし一意な値が予想外のものである場合、データセットを再評価し、ラベルの正しい値を特定する必要があります。

  3. ラベルのクラスの数を確認する: エラーメッセージは、クラスの数が無効であるとも示しています。XGBoostは二値分類や多値分類に使用できますが、クラスの数が正しく指定されていないとエラーが発生します。

    # ラベルのクラスの数を確認する
    num_classes = len(df['label'].unique())
    print(num_classes)

    クラスの数が予想外のものである場合、データセットを再評価し、正しいクラスの数を特定する必要があります。