LightGBM:ValueError: DataFrame.dtypes for data must be int, float or bool.

記事公開日:
最終更新日:

This post is also available in: 英語

LightGBMを利用している際のエラーです。
エラーの内容は要するに LightGBM 側で pandas のDataFrameオブジェクトには未だ対応していないので、ラベルエンコーダー(sklearn.preprocessing.LabelEncoder)とかを使って、int, float or bool に変換してくださいって事らしいです。
以下、簡単なサンプルコード書いてます。

ValueError: DataFrame.dtypes for data must be int, float or bool. Did not expect the data types in fields ...

pandas のDataFrameオブジェクトをsklearnのラベルエンコーダー(sklearn.preprocessing.LabelEncoder)を用いてfit(),transform()しています。

# coding:utf-8
from sklearn import preprocessing
import numpy as np
import pandas as pd
# サンプルデータ
data = ["ABC", "あああ", 1, 2, "いいい"]
# pandasのデータフレームオブジェクトの生成
df = pd.DataFrame(data)
# ラベルエンコーダーの生成とfit,trasform
lbl = preprocessing.LabelEncoder()
lbl.fit(df)
sample = lbl.transform(df)
# ラベルエンコーダーで変換された値
print sample # This Outputs [2 3 0 1 4]

About
Amelt.net,LLCの創業者で、費用対効果の高い統合webマーケティングによりビジネスパートナーとして継続的にサポート。詳しいより。ブログの更新情報facebookページGoogle+そしてTwitter、またRSSfeedlyLINE@にてお知らせしていますのでフォローよろしくお願い致します。