调用sklearn模型遇到Unknown label type: continuous 的解决办法

调用sklearn模型遇到Unknown label type: continuous 的解决办法

这个报错就是:y应该是整数或者字符串型的向量。
1.详细报错原因以及常规解决办法。这个博客说的很详细。调用sklearn模型遇到Unknown label type: continuous 的解决办法_小白的编码屋-CSDN博客
https://blog.csdn.net/weixin_41013322/article/details/106747880
2.推荐换数据集。
3.一个不是办法的办法,我看到很多人的测试集是浮点型,预测结果也需要浮点型,上面的方法走不通了。

另一种解决思路是:

遍历测试集,把数据放大十倍,百倍之类的,就是进行一个简单的乘法运算,把数据变成类似这样的数据:123.0,345.0,4627.0,然后再通过int(),把数据强制转化成整型,如:123,345,4627.再放到模型里面去预测就不会报错了,想要得到结果就遍历预测结果,除以原来放大的倍数即可。

欢迎指正。

更新:我觉得方法二还有不足之处,方法二彻底变成了一个分类问题,意思你模型里面有1,2,3,但是你的模型放入再多却不会预测出4。

还不如用随机森林来统计重要性,通过加权来预测。

阅后即焚。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在C++中调用Python的sklearn训练好的pkl模型,可以使用Python的C++接口来实现。Python的C++接口提供了一组函数和类,使得C++能够直接调用Python的函数和对象,并且能够传递Python对象到C++中。 下面是一个简单的例子,展示如何在C++中调用Python的sklearn训练好的pkl模型: 1. 首先需要安装Python的C++接口库pybind11,可以使用pip安装: ``` pip install pybind11 ``` 2. 在C++代码中引入pybind11库头文件,并且定义需要调用的Python函数和模型路径: ```c++ #include <pybind11/embed.h> #include <pybind11/stl.h> namespace py = pybind11; // 定义Python函数和模型路径 std::string predict_func = "predict"; std::string model_path = "model.pkl"; ``` 3. 在需要调用Python函数的地方,初始化Python解释器并加载模型: ```c++ // 初始化Python解释器 py::scoped_interpreter guard{}; // 加载模型 py::object model = py::module::import("sklearn.externals.joblib").attr("load")(model_path); ``` 4. 调用Python函数并传递数据: ```c++ // 调用Python函数 py::object predict_func_obj = model.attr(predict_func.c_str()); py::list input = py::cast(data); py::object result = predict_func_obj(input); // 将Python返回值转换为C++类型 std::vector<int> output = py::cast<std::vector<int>>(result); ``` 完整的代码示例: ```c++ #include <pybind11/embed.h> #include <pybind11/stl.h> namespace py = pybind11; std::string predict_func = "predict"; std::string model_path = "model.pkl"; int main() { // 初始化Python解释器 py::scoped_interpreter guard{}; // 加载模型 py::object model = py::module::import("sklearn.externals.joblib").attr("load")(model_path); // 准备输入数据 std::vector<std::vector<double>> data = {{1.0, 2.0, 3.0}, {4.0, 5.0, 6.0}}; // 调用Python函数 py::object predict_func_obj = model.attr(predict_func.c_str()); py::list input = py::cast(data); py::object result = predict_func_obj(input); // 将Python返回值转换为C++类型 std::vector<int> output = py::cast<std::vector<int>>(result); // 输出结果 for (auto i : output) { std::cout << i << " "; } std::cout << std::endl; return 0; } ``` 注意,需要在C++代码中引入需要使用的Python库,例如sklearn.externals.joblib等。另外需要注意的是,如果使用了虚拟环境,需要在初始化Python解释器之前设置环境变量PYTHONHOME和PYTHONPATH,以便正确地加载Python库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值