我在学习方面遇到了问题。 当我使用“.fit()”对其进行训练时,它会向我显示ValueError“ValueError:无法将字符串转换为浮点:‘Casado’” 这是我的代码: “”“
from sklearn.naive_bayes import GaussianNB
import pandas as pd
# 1. Create Naive Bayes classifier:
gaunb = GaussianNB()
# 2. Create dataset:
dataset = pd.read_csv("archivos_de_datos/Datos_Historicos_Clientes.csv")
X_train = dataset.drop(["Compra"], axis=1) #Here I removed the last column "Compra"
Y_train = dataset["Compra"] #This one only consists of that column "Compra"
print("X_train: ","\n", X_train)
print("Y_train: ","\n", Y_train)
dataset2 = pd.read_csv("archivos_de_datos/Nuevos_Clientes.csv")
X_test = dataset2.drop("Compra", axis=1)
print("X_test: ","\n", X_test)
# 3. Train classifier with dataset:
gaunb = gaunb.fit(X_train, Y_train) #Here shows "ValueError: could not convert string to float: 'Casado'"
# 4. Predict using classifier:
prediction = gaunb.predict(X_test)
print("PREDICTION: ",prediction)
"""
我使用的数据集是一个.csv文件,看起来像这样(但有更多行):
IdCliente,EstadoCivil,Profesion,Universitario,TieneVehiculo,Compra
1,Casado,Empresario,Si,No,No
2,Casado,Empresario,Si,Si,No
3,Soltero,Empresario,Si,No,Si
我试图训练它(使用测试数据集)确定最后一列是否为Yes或No(Si或No)
我很感激你的帮助,我显然是个新手,我不明白我做错了什么
我会使用onehotencoder,就像Lavin提到的那样,将是或否作为一个数值。这样的模型不能处理分类数据
Onehotencoder用于处理二进制数据,如是/否、男性/女性,而label encoder用于具有2个以上值(ei、国家名称)的分类数据
它看起来像这样,但是,您必须对所有分类数据执行此操作,而不仅仅是y列,并对非二进制的列使用标签编码器(超过2个变量-例如,可能是Estadio Civil)
此外,我还建议删除任何对您的模型没有帮助的因变量,因为即时客户端ID听起来可能不会在确定因变量时增加任何值。这是特定于上下文的,但需要记住
对于文档:
https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html
更多信息: https://contactsunny.medium.com/label-encoder-vs-one-hot-encoder-in-machine-learning-3fc273365621#:~:text=What%20one%20hot%20encoding%20does,which%20column%20has%20what%20value.&text=So%2C%20that's%20the%20difference%20between%20Label%20Encoding%20and%20One%20Hot%20Encoding
相关问题 更多 >
编程相关推荐