PR

ValueError: could not convert string to floatの解決法

アイキャッチ画像
ValueError: could not convert string to float

エラー発生時

機械学習モデルにデータを学習するよう、コードを実行したとき。

モデルの学習には、fit関数を使いますね。

原因

機械学習モデルは数値データを期待しているのに、文字列データやカテゴリデータが渡されている。

カテゴリデータとは、2つ以上のカテゴリやクラスに分類されるデータ型のことで、たとえば色(赤、青、緑)があります。

機械学習モデルは、数値データをあらゆる計算をして学習するので、文字列データは使わないのが通常です。

解決法

文字列データやカテゴリデータを数値データに変換する。

今回は、色(赤、青、緑)のカテゴリデータを数値データに変換する方法を解説します。

次の手順で行うと良いです。

  1. Label Encodingをする
  2. One-Hot Encodingをする

順番にそれぞれ解説します。

Label Encodingをする

Label Encodingとは、カテゴリデータをいくつかの数値データに振り分けることです。

たとえば、次のとおり。

  • 赤:0
  • 青:1
  • 緑:2

One-Hot Encodingをする

実際に、数値データに変換します。

df['color'] = df['color'].map({'赤': 0, '青': 1, '緑': 2})

上記コードでは、’color’カラムのカテゴリデータを変換しています。

補足

データに欠損値がある場合、補完が必要になります。

今回のようなカテゴリデータの欠損値の補完は、ロジスティック回帰を使うことが多いですね。

まずは、補完したいデータを目的変数として、それ以外のデータを説明変数としてみましょう。

補完まで完了させ、実際に機械学習モデルの精度を見てから、各々調整していけばOKです。

以上、『ValueError: could not convert string to floatの解決法』でした。