如何解决ValueError:在调用 cross_val_score 时发现未知类别
我正在将 Titanic 数据集作为我的第一个 kaggle 项目。但是我收到了这个用户警告,我正在努力找出如何摆脱它。
所以我做了两个预处理子管道:
num_pipeline = Pipeline([
('imputer',SimpleImputer( strategy='median')),('scaler',StandardScaler()) ])
cat_pipeline = Pipeline([
('imputer',SimpleImputer(strategy='constant',fill_value='missing')),('onehot',OneHotEncoder()) ])
我为构建模型选择的功能是:
numeric_features = ['Age','SibSp','Parch','fare']
categorical_features = ['Pclass','Sex','Embarked']
我的预处理管道是:
preprocessor = ColumnTransformer(
transformers = [
('num',num_pipeline,numeric_features),('cat',cat_pipeline,categorical_features)
])
clf = Pipeline([
('Preprocessor',preprocessor),('Classifier',DecisionTreeClassifier()) ])
然后我调用 cross_val_score 来评估模型,这是我收到用户警告的时候:
cross_val_score(clf,X_train,y_train,cv=3,scoring="accuracy")
ValueError:在转换期间在第 2 列中发现未知类别 ['Missing'] 用户警告,
数组([南,0.70403587,0.74774775])
我的猜测是 cross_val_score 在没有“Missing”类别的情况下获得第一个折叠,然后在另一个“Missing”类别上对其进行测试。因此出现错误。 因此,我尝试删除“Embarked”中缺少值的行,但仍然出现奇怪的错误。
解决方法
我希望你做到了以下几点:
- 清理数据集,即填充所有列的所有 na/缺失值
- 过滤并删除 NaN 行,即所有值 NaN 行
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。