我尝试将KNN应用于tips dataset,并按如下方式映射对象:
f.Male=df.Gender.map({'Female':0,'Male':1})
df.Smokes = df.Smoker.map({'No': 0, 'Yes': 1})
df.Dinner = df.Time.map({'Lunch': 0, 'Dinner': 1})
df.Day_w = df.Day.map({'Sun': 0, 'Mon': 1, 'Tue' : 2, 'Wed' : 3, 'Thu' : 4, 'Fri': 5, 'Sat': 6 })我的输入和输出是,
inputs = df[['Bill', 'Party', 'Gender', 'Time']]
outputs = df['Tip']
knn = nei.KNeighborsClassifier(n_neighbors=4)工作,但当我调用
knn.fit(inputs, outputs)我得到了
ValueError: could not convert string to float: 'Female'欢迎任何建议
发布于 2019-12-15 19:13:00
值错误表明,输入值包含字符串"female“(如果值真的都是数字,请检查您的数据框)。
我希望您的列"Gender“列映射不起作用。在您分配用于将"Gender“列映射到"Male”列(而不是"Gender“列)的代码中,尝试将代码的第一行更改为:
df.Gender=df.Gender.map({'Female':0,'Male':1})并检查变量“input”和“output”中的值是否都是数值。
发布于 2019-12-15 19:14:51
在准备过程中,将“时间”列的数据映射到“晚餐”,将“性别”映射到“男性”。在选择输入时,不使用新创建的列,而使用原始列。试着改变这一点!
https://stackoverflow.com/questions/59343199
复制相似问题