Não poderia simplesmente usar dummies para 'traduzir' as strings para valores binários? Fiz da maneira abaixo e funcionou certinho:
import pandas as pd
df = pd.read_csv('busca.csv')
X_df = df[['home', 'busca', 'logado']]
Y_df = df['comprou']
Xdummies_df = pd.get_dummies(X_df)
Ydummies_df = pd.get_dummies(Y_df)['sim']
X = Xdummies_df.values
Y = Ydummies_df.values