Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python cat增压功能具有';训练数据中的分类类型,但';浮动';输入测试数据集_Python_Categorical Data_Catboost - Fatal编程技术网

Python cat增压功能具有';训练数据中的分类类型,但';浮动';输入测试数据集

Python cat增压功能具有';训练数据中的分类类型,但';浮动';输入测试数据集,python,categorical-data,catboost,Python,Categorical Data,Catboost,我正在使用catboostclassifier,我有一个训练数据集和一个验证数据集。每个数据集都有相同的5列,其中有一列名为“colC”,属于分类列(列“colC”的格式为int)。我测试了数据帧,在“colC”列中,两个数据帧的数据类型相同 当我执行下一个代码时,我得到一个错误: val_pool = Pool(X_validation, y_validation) estimator.fit(X_train, y_train, eval_set = val_pool, sample_wei

我正在使用catboostclassifier,我有一个训练数据集和一个验证数据集。每个数据集都有相同的5列,其中有一列名为“colC”,属于分类列(列“colC”的格式为int)。我测试了数据帧,在“colC”列中,两个数据帧的数据类型相同

当我执行下一个代码时,我得到一个错误:

val_pool = Pool(X_validation, y_validation)

estimator.fit(X_train, y_train, eval_set = val_pool, sample_weight = sample_weights, cat_features = ['colC'])
下一个错误是:

catboost/libs/data/features_layout.cpp:391: Feature #3 has 'Categorical' type in training data, but 'Float' type in test dataset #0

原因可能是什么?

我认为这个问题可以用
的方法来解决

例如:

from keras.utils import to_categorical

y_train = to_categorical(y_train, num_classes)
y_test = to_categorical(y_test, num_classes)

我认为这个问题可以用
to_category
方法解决

例如:

from keras.utils import to_categorical

y_train = to_categorical(y_train, num_classes)
y_test = to_categorical(y_test, num_classes)

您是如何分离列车/测试数据的?使用train_test_split方法?我得到了一个包含1000个元素的训练集,并使用X_validation=X_train.iloc[900:,:]提取了最后100个元素进行验证。我认为问题在于您没有使用keras
y_train
y_test
转换为\u category
方法。例如:
y\u train=keras.utils.to\u category(y\u train,num\u classes)和
y\u test=keras.utils.to\u category(y\u test,num\u classes)
。你是这样转换的吗?错误还在继续…当我尝试从estimator.fit()中删除eval_集时,代码仍然有效。。。我的意思是,删除验证集,只让训练X和y代码工作你是如何分离训练/测试数据的?使用train_test_split方法?我得到了一个包含1000个元素的训练集,并使用X_validation=X_train.iloc[900:,:]提取了最后100个元素进行验证。我认为问题在于您没有使用keras
y_train
y_test
转换为\u category
方法。例如:
y\u train=keras.utils.to\u category(y\u train,num\u classes)和
y\u test=keras.utils.to\u category(y\u test,num\u classes)
。你是这样转换的吗?错误还在继续…当我尝试从estimator.fit()中删除eval_集时,代码仍然有效。。。我的意思是,移除验证集,只让训练X和y代码工作是的,我将其应用于y_训练和y_验证是的,我将其应用于y_训练和y_验证