python - 处理训练数据中不存在的标签。KNN sklearn
问题描述
我正在学习 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”。这会引发上述错误
我试图以各种方式操纵数组。如果可能,我宁愿将任何未知标签转换为单个值。
解决方案
我建议在功能中分层train_test_split
:
sklearn.model_selection.train_test_split(x, y, test_size=0.1, stratify=y)
这将保证训练集和测试集具有相同的标签分布。因此,您永远不应处于推理时有新标签的位置。
推荐阅读
- javascript - 输入特定文本后显示消息
- java - Java - 返回一个新数组,其中元素位于给定数组的偶数位置
- laravel - 如何在 Laravel 应用程序中出于不同目的两次“使用 Spotify 登录”?
- r - 在 Shiny 中添加和删除元素
- java - 无法在 Maven 或 Eclipse 中构建 ehealth-connector
- python - 循环使用python查找空间
- javascript - 如何检查图像是否在请求 Node.js 中
- spring-mybatis - Mybatis的mapper接口与对应的Mapper xml文件绑定的方式是什么
- javascript - 为什么我生成的所有按钮都会链接到数组中的最后一项?
- multithreading - 控制 OS 线程与 goroutine 的启动?