python网格搜索支持向量回归得分低,为0.003,偶尔还会出现负数,该怎么处理?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python网格搜索支持向量回归得分低,为0.003,偶尔还会出现负数,该怎么处理?相关的知识,希望对你有一定的参考价值。

使用Python编程可以快速迁移代码并进行改动,无须花费过多的精力在修改代码与代码规范上。开发者在Python中封装了很多优秀的依赖库,可以直接拿来使用,常见的机器学习库如下:
1、Scikit-Learn
Scikit-Learn基于Numpy和Scipy,是专门为机器学习建造的一个Python模块,提供了大量用于数据挖掘和分析的工具,包括数据预处理、交叉验证、算法与可视化算法等一系列接口。
Scikit-Learn基本功能可分为六个部分:分类、回归、聚类、数据降维、模型选择、数据预处理。其中集成了大量分类、回归、聚类功能,包括支持向量机、逻辑回归、随机森林、朴素贝叶斯等。
2、Orange3
Orange3是一个基于组件的数据挖掘和机器学习软件套装,支持Python进行脚本开发。它包含一系列的数据可视化、检索、预处理和建模技术,具有一个良好的用户界面,同时也可以作为Python的一个模块使用。
用户可通过数据可视化进行数据分析,包含统计分布图、柱状图、散点图,以及更深层次的决策树、分层聚簇、热点图、MDS等,并可使用它自带的各类附加功能组件进行NLP、文本挖掘、构建网络分析等。
3、XGBoost
XGBoost是专注于梯度提升算法的机器学习函数库,因其优良的学习效果及高效的训练速度而获得广泛的关注。XGBoost支持并行处理,比起同样实现了梯度提升算法的Scikit-Learn库,其性能提升10倍以上。XGBoost可以处理回归、分类和排序等多种任务。
4、NuPIC
NuPIC是专注于时间序列的一个机器学习平台,其核心算法为HTM算法,相比于深度学习,其更为接近人类大脑的运行结构。HTM算法的理论依据主要是人脑中处理高级认知功能的新皮质部分的运行原理。NuPIC可用于预测以及异常检测,使用面非常广,仅要求输入时间序列即可。
5、Milk
Milk是Python中的一个机器学习工具包。Milk注重提升运行速度与降低内存占用,因此大部分对性能敏感的代码都是使用C++编写的,为了便利性在此基础上提供Python接口。重点提供监督分类方法,如SVMs、KNN、随机森林和决策树等。
参考技术A 尝试实现自定义得分手,类似于: import numpy as np def scorer_(estimator, X, y): # Your criterion here if np.allclose(estimator.coef_, np.zeros_like(estimator.coef_)): return 0 else: return estimator.score(X, y) learner = sklearn.grid_search.GridSearchCV(... scoring=scorer_) 参考技术B 支持封装API都JAVA写 参考技术C 使用Python编程可以快速迁移代码并进行改动,无须花费过多的精力在修改代码与代码规范上。开发者在Python中封装了很多优秀的依赖库,可以直接拿来使用,常见的机器学习库如下:
1、Scikit-Learn
Scikit-Learn基于Numpy和Scipy,是专门为机器学习建造的一个Python模块,提供了大量用于数据挖掘和分析的工具,包括数据预处理、交叉验证、算法与可视化算法等一系列接口。
Scikit-Learn基本功能可分为六个部分:分类、回归、聚类、数据降维、模型选择、数据预处理。其中集成了大量分类、回归、聚类功能,包括支持向量机、逻辑回归、随机森林、朴素贝叶斯等。
2、Orange3
Orange3是一个基于组件的数据挖掘和机器学习软件套装,支持Python进行脚本开发。它包含一系列的数据可视化、检索、预处理和建模技术,具有一个良好的用户界面,同时也可以作为Python的一个模块使用。
用户可通过数据可视化进行数据分析,包含统计分布图、柱状图、散点图,以及更深层次的决策树、分层聚簇、热点图、MDS等,并可使用它自带的各类附加功能组件进行NLP、文本挖掘、构建网络分析等。
3、XGBoost
XGBoost是专注于梯度提升算法的机器学习函数库,因其优良的学习效果及高效的训练速度而获得广泛的关注。XGBoost支持并行处理,比起同样实现了梯度提升算法的Scikit-Learn库,其性能提升10倍以上。XGBoost可以处理回归、分类和排序等多种任务。
4、NuPIC
NuPIC是专注于时间序列的一个机器学习平台,其核心算法为HTM算法,相比于深度学习,其更为接近人类大脑的运行结构。HTM算法的理论依据主要是人脑中处理高级认知功能的新皮质部分的运行原理。NuPIC可用于预测以及异常检测,使用面非常广,仅要求输入时间序列即可。
5、Milk
Milk是Python中的一个机器学习工具包。Milk注重提升运行速度与降低内存占用,因此大部分对性能敏感的代码都是使用C++编写的,为了便利性在此基础上提供Python接口。重点提供监督分类方法,如SVMs、KNN、随机森林和决策树等。
参考技术D 使用Python编程可以快速迁移代码并进行改动,无须花费过多的精力在修改代码与代码规范上。开发者在Python中封装了很多优秀的依赖库,可以直接拿来使用,常见的机器学习库如下:
1、Scikit-Learn
Scikit-Learn基于Numpy和Scipy,是专门为机器学习建造的一个Python模块,提供了大量用于数据挖掘和分析的工具,包括数据预处理、交叉验证、算法与可视化算法等一系列接口。
Scikit-Learn基本功能可分为六个部分:分类、回归、聚类、数据降维、模型选择、数据预处理。其中集成了大量分类、回归、聚类功能,包括支持向量机、逻辑回归、随机森林、朴素贝叶斯等。
2、Orange3
Orange3是一个基于组件的数据挖掘和机器学习软件套装,支持Python进行脚本开发。它包含一系列的数据可视化、检索、预处理和建模技术,具有一个良好的用户界面,同时也可以作为Python的一个模块使用。
用户可通过数据可视化进行数据分析,包含统计分布图、柱状图、散点图,以及更深层次的决策树、分层聚簇、热点图、MDS等,并可使用它自带的各类附加功能组件进行NLP、文本挖掘、构建网络分析等。
3、XGBoost
XGBoost是专注于梯度提升算法的机器学习函数库,因其优良的学习效果及高效的训练速度而获得广泛的关注。XGBoost支持并行处理,比起同样实现了梯度提升算法的Scikit-Learn库,其性能提升10倍以上。XGBoost可以处理回归、分类和排序等多种任务。
4、NuPIC
NuPIC是专注于时间序列的一个机器学习平台,其核心算法为HTM算法,相比于深度学习,其更为接近人类大脑的运行结构。HTM算法的理论依据主要是人脑中处理高级认知功能的新皮质部分的运行原理。NuPIC可用于预测以及异常检测,使用面非常广,仅要求输入时间序列即可。
5、Milk
Milk是Python中的一个机器学习工具包。Milk注重提升运行速度与降低内存占用,因此大部分对性能敏感的代码都是使用C++编写的,为了便利性在此基础上提供Python接口。重点提供监督分类方法,如SVMs、KNN、随机森林和决策树等。

在 Scikit Learn 中使用网格搜索 (GridSearchCV) 和管道的支持向量回归 (SVR) 中的系数

【中文标题】在 Scikit Learn 中使用网格搜索 (GridSearchCV) 和管道的支持向量回归 (SVR) 中的系数【英文标题】:Coefficient in support vector regression (SVR) using grid search (GridSearchCV) and Pipeline in Scikit Learn 【发布时间】:2017-03-26 21:55:29 【问题描述】:

当模型嵌入管道和网格搜索时,我无法在 scikit learn 中访问支持向量回归模型 (SVR) 的系数。 考虑以下示例:

from sklearn.datasets import load_iris
import numpy as np
from sklearn.grid_search import GridSearchCV
from sklearn.svm import SVR
from sklearn.feature_selection import SelectKBest
from sklearn.pipeline import Pipeline

iris = load_iris()
X_train = iris.data
y_train = iris.target

clf = SVR(kernel='linear')
select = SelectKBest(k=2)
steps = [('feature_selection', select), ('svr', clf)]
pipeline = Pipeline(steps)
grid = GridSearchCV(pipeline, param_grid="svr__C":[10,10,100],"svr__gamma": np.logspace(-2, 2))
grid.fit(X_train, y_train)

这似乎工作正常,但是当我尝试访问最佳拟合模型的系数时

grid.best_estimator_.coef_

我收到一条错误消息:AttributeError: 'Pipeline' object has no attribute 'coef_'。

我还尝试访问管道的各个步骤:

pipeline.named_steps['svr']

但在那里找不到系数。

【问题讨论】:

【参考方案1】:

刚好遇到同样的问题,this post 有答案: grid.best_estimator_ 包含管道的一个实例,它由steps 组成。最后一步应该始终是估算器,因此您应该始终在以下位置找到系数:

grid.best_estimator_.steps[-1][1].coef_

【讨论】:

以上是关于python网格搜索支持向量回归得分低,为0.003,偶尔还会出现负数,该怎么处理?的主要内容,如果未能解决你的问题,请参考以下文章

在 Python 中使用逻辑回归的预测向量的准确度得分

求python支持向量机多元回归预测代码

支持向量机的机器学习网格搜索

在 Python Scikit-Learn 中训练测试拆分得分高但 CV 得分低

原创一种改进的支持向量机回归的电池状态估计

支持向量机——核函数与支持向量回归(附Python代码)