我正在学习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'。这会引发上面提到的错误
我试图以各种方式操纵数组。如果可能的话,我宁愿将所有未知标签转换为单个值。
答案 0 :(得分:1)
我建议在train_test_split
函数中分层:
sklearn.model_selection.train_test_split(x, y, test_size=0.1, stratify=y)
这将确保火车和测试仪具有相同的标签分布。因此,您永远都不应在推断时出现新标签的位置。