This post is also available in: Japanese
ValueError: DataFrame.dtypes for data must be int, float or bool. Did not expect the data types in fields ...
This error is about using LightGBM.
In short, LightGBM is not compatible with “Object” type with pandas DataFrame, so you need to encode to “int, float or bool” by using LabelEncoder(sklearn.preprocessing.LabelEncoder) etc…
Following is simple sample code.
fit() and transform() are the pandas DataFrame object by using LabelEncoder(sklearn.preprocessing.LabelEncoder) of sklearn.
# coding:utf-8 from sklearn import preprocessing import numpy as np import pandas as pd # Sample data data = ["ABC", "123", 1, 2, "def"] # Create pandas DataFrame Object df = pd.DataFrame(data) # Create LabelEncoder Object and fit(),transform() lbl = preprocessing.LabelEncoder() lbl.fit(df) sample = lbl.transform(df) # Converted value by LabelEncoder print sample # This Outputs [2 3 0 1 4]