TypeError: sparse matrix length is ambiguous; use getnnz() or shape[0]
pd.get_dummies() のエラーは、入力データがスパース行列であるために発生しています。pd.get_dummies() は、入力データがデータフレームであることを想定していますが、ここではスパース行列を受け取っています。
このエラーを解決するためには、スパース行列ではなくデータフレームを入力として pd.get_dummies() を使用する必要があります。スパース行列をデータフレームに変換してから pd.get_dummies() を適用することで、エラーを回避できます。
以下は修正されたコードです:
python # 特徴量エンジニアリング(カテゴリ変数エンコーディング) from sklearn.preprocessing import LabelEncoder import pandas as pd # カテゴリカル変数の列を選択する categorical_cols = ['original_product_code', 'product_name', 'product_maker_number'] # データフレームをスパース行列に変換せずにカテゴリカル変数をダミー変数に変換する X_train_encoded = pd.get_dummies(X_train[categorical_cols], columns=categorical_cols) # 元のデータフレームからカテゴリカル変数の列を削除する X_train = X_train.drop(columns=categorical_cols) # エンコードされた特徴量を元のデータフレームに結合する X_train = pd.concat([X_train, X_train_encoded], axis=1) print(X_train)
この修正を加えることで、エラーを解決し、カテゴリカル変数を正常にダミー変数にエンコードできるはずです。

ディスカッション
コメント一覧
まだ、コメントがありません