处理火车数据中不存在的标签。 KNN sklearn

时间:2019-03-12 09:23:54

标签: python pandas scikit-learn

我正在学习KNN,并且遇到了sklearn.LabelEncoder问题

  

ValueError:y包含以前看不见的标签:“ F”

我认为这是我拆分训练/测试数据时引起的。一些测试数据最终包含火车数据中不存在的信息。

我想确保调用leBrand.Transform(“ F”)(火车数据中不存在F的情况)将用F代替通用值,例如“未知”。

x_train, x_test, y_train, y_test = sklearn.model_selection.train_test_split(x, y, test_size=0.1)

model = KNeighborsClassifier(n_neighbors=1)
model.fit(x_train, y_train)

# read in the new data to be predicted
data = pd.read_csv("wso-cats-to-predict.csv")

x = pd.DataFrame(data={"Brand": leBrand.transform(data["brand"]) })
  

data [“ brand”]包含火车数据中不存在的'F'。这会引发上面提到的错误

我试图以各种方式操纵数组。如果可能的话,我宁愿将所有未知标签转换为单个值。

1 个答案:

答案 0 :(得分:1)

我建议在train_test_split函数中分层

sklearn.model_selection.train_test_split(x, y, test_size=0.1, stratify=y)

这将确保火车和测试仪具有相同的标签分布。因此,您永远都不应在推断时出现新标签的位置。