ValueError: could not convert string to float
エラー発生時
機械学習モデルにデータを学習するよう、コードを実行したとき。
モデルの学習には、fit関数を使いますね。
原因
機械学習モデルは数値データを期待しているのに、文字列データやカテゴリデータが渡されている。
カテゴリデータとは、2つ以上のカテゴリやクラスに分類されるデータ型のことで、たとえば色(赤、青、緑)があります。
機械学習モデルは、数値データをあらゆる計算をして学習するので、文字列データは使わないのが通常です。
解決法
文字列データやカテゴリデータを数値データに変換する。
今回は、色(赤、青、緑)のカテゴリデータを数値データに変換する方法を解説します。
次の手順で行うと良いです。
- Label Encodingをする
- One-Hot Encodingをする
順番にそれぞれ解説します。
Label Encodingをする
Label Encodingとは、カテゴリデータをいくつかの数値データに振り分けることです。
たとえば、次のとおり。
One-Hot Encodingをする
実際に、数値データに変換します。
df['color'] = df['color'].map({'赤': 0, '青': 1, '緑': 2})
上記コードでは、’color’カラムのカテゴリデータを変換しています。
補足
データに欠損値がある場合、補完が必要になります。
今回のようなカテゴリデータの欠損値の補完は、ロジスティック回帰を使うことが多いですね。
まずは、補完したいデータを目的変数として、それ以外のデータを説明変数としてみましょう。
補完まで完了させ、実際に機械学習モデルの精度を見てから、各々調整していけばOKです。
以上、『ValueError: could not convert string to floatの解決法』でした。