- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建 SV 回归。我正在从带有一些高斯噪声的 sinc 函数生成数据。
现在,为了找到 RBF 内核的最佳参数,我通过运行 5 折交叉验证来使用 GridSearchCV。
P.S - 我是 Python 和机器学习的新手,所以可能代码在某些方面没有得到很好的优化或正确。
我的代码:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.svm import SVR
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import mean_squared_error
def generateData(N, sigmaT):
# Input datapoints
data = np.reshape(np.linspace(-10, 10, N), (N,1))
# Noise in target with zero mean and variance sigmaT
epi = np.random.normal(0 , sigmaT, N)
# Target
t1 = np.sinc(data).ravel() # target without noise
t2 = np.sinc(data).ravel() + epi # target with noise
t1 = np.reshape(t1, (N, 1))
t2 = np.reshape(t2, (N, 1))
# Plot the generated data
plt.plot(data, t1, '--r', label = 'Original Curve')
plt.scatter(data, t2, c = 'orange', label = 'Data')
plt.title("Generated data")
return data, t2, t1
# Generate data from sin funtion
N = 100 # Number of data points
sigmaT = 0.1 # Noise in the data
plt.figure(1)
X, y, true = generateData(N, sigmaT)
y = y.ravel()
# Tuning of parameters for regression by cross-validation
K = 5 # Number of cross valiations
# Parameters for tuning
parameters = [{'kernel': ['rbf'], 'gamma': [1e-4, 1e-3, 0.01, 0.1, 0.2, 0.5, 0.6, 0.9],'C': [1, 10, 100, 1000, 10000]}]
print("Tuning hyper-parameters")
svr = GridSearchCV(SVR(epsilon = 0.01), parameters, cv = K)
svr.fit(X, y)
# Checking the score for all parameters
print("Grid scores on training set:")
means = svr.cv_results_['mean_test_score']
stds = svr.cv_results_['std_test_score']
for mean, std, params in zip(means, stds, svr.cv_results_['params']):
print("%0.3f (+/-%0.03f) for %r"% (mean, std * 2, params))
Best parameters set found on development set: {'gamma': 0.0001, 'kernel': 'rbf', 'C': 1}
Grid scores on training set:
-0.240 (+/-0.366) for {'gamma': 0.0001, 'kernel': 'rbf', 'C': 1}
-0.535 (+/-1.076) for {'gamma': 0.001, 'kernel': 'rbf', 'C': 1}
-0.863 (+/-1.379) for {'gamma': 0.01, 'kernel': 'rbf', 'C': 1}
-3.057 (+/-4.954) for {'gamma': 0.1, 'kernel': 'rbf', 'C': 1}
-1.576 (+/-3.185) for {'gamma': 0.2, 'kernel': 'rbf', 'C': 1}
-0.439 (+/-0.048) for {'gamma': 0.5, 'kernel': 'rbf', 'C': 1}
-0.417 (+/-0.110) for {'gamma': 0.6, 'kernel': 'rbf', 'C': 1}
-0.370 (+/-0.248) for {'gamma': 0.9, 'kernel': 'rbf', 'C': 1}
-0.514 (+/-0.724) for {'gamma': 0.0001, 'kernel': 'rbf', 'C': 10}
-1.308 (+/-3.002) for {'gamma': 0.001, 'kernel': 'rbf', 'C': 10}
-4.717 (+/-10.886) for {'gamma': 0.01, 'kernel': 'rbf', 'C': 10}
-14.247 (+/-27.218) for {'gamma': 0.1, 'kernel': 'rbf', 'C': 10}
-15.241 (+/-19.086) for {'gamma': 0.2, 'kernel': 'rbf', 'C': 10}
-0.533 (+/-0.571) for {'gamma': 0.5, 'kernel': 'rbf', 'C': 10}
-0.566 (+/-0.527) for {'gamma': 0.6, 'kernel': 'rbf', 'C': 10}
-1.087 (+/-1.828) for {'gamma': 0.9, 'kernel': 'rbf', 'C': 10}
-0.591 (+/-1.218) for {'gamma': 0.0001, 'kernel': 'rbf', 'C': 100}
-2.111 (+/-2.940) for {'gamma': 0.001, 'kernel': 'rbf', 'C': 100}
-19.591 (+/-29.731) for {'gamma': 0.01, 'kernel': 'rbf', 'C': 100}
-96.461 (+/-96.744) for {'gamma': 0.1, 'kernel': 'rbf', 'C': 100}
-14.430 (+/-10.858) for {'gamma': 0.2, 'kernel': 'rbf', 'C': 100}
-14.742 (+/-37.705) for {'gamma': 0.5, 'kernel': 'rbf', 'C': 100}
-7.915 (+/-10.308) for {'gamma': 0.6, 'kernel': 'rbf', 'C': 100}
-1.592 (+/-1.513) for {'gamma': 0.9, 'kernel': 'rbf', 'C': 100}
-1.543 (+/-3.654) for {'gamma': 0.0001, 'kernel': 'rbf', 'C': 1000}
-4.629 (+/-10.477) for {'gamma': 0.001, 'kernel': 'rbf', 'C': 1000}
-65.690 (+/-92.825) for {'gamma': 0.01, 'kernel': 'rbf', 'C': 1000}
-2745.336 (+/-4173.978) for {'gamma': 0.1, 'kernel': 'rbf', 'C': 1000}
-248.269 (+/-312.776) for {'gamma': 0.2, 'kernel': 'rbf', 'C': 1000}
-65.826 (+/-132.946) for {'gamma': 0.5, 'kernel': 'rbf', 'C': 1000}
-28.569 (+/-64.979) for {'gamma': 0.6, 'kernel': 'rbf', 'C': 1000}
-6.955 (+/-8.647) for {'gamma': 0.9, 'kernel': 'rbf', 'C': 1000}
-3.647 (+/-7.858) for {'gamma': 0.0001, 'kernel': 'rbf', 'C': 10000}
-12.712 (+/-29.380) for {'gamma': 0.001, 'kernel': 'rbf', 'C': 10000}
-1094.270 (+/-2262.303) for {'gamma': 0.01, 'kernel': 'rbf', 'C': 10000}
-3698.268 (+/-8085.389) for {'gamma': 0.1, 'kernel': 'rbf', 'C': 10000}
-2079.620 (+/-3651.872) for {'gamma': 0.2, 'kernel': 'rbf', 'C': 10000}
-70.982 (+/-159.707) for {'gamma': 0.5, 'kernel': 'rbf', 'C': 10000}
-89.859 (+/-180.071) for {'gamma': 0.6, 'kernel': 'rbf', 'C': 10000}
-661.291 (+/-1636.522) for {'gamma': 0.9, 'kernel': 'rbf', 'C': 10000}
# Working parameters
svr = SVR(kernel='rbf', C=1e3, gamma = 0.5, epsilon = 0.01)
y_rbf = svr.fit(X, y).predict(X)
# Plotting
plt.figure(1)
plt.plot(X, y_rbf, c = 'navy', label = 'Predicted')
plt.legend()
# Checking prediction error
print("Mean squared error: %.2f" % mean_squared_error(true, y_rbf))
最佳答案
有几件事在这里起着重要的作用:
1) GridSearch 用来寻找最佳参数的评分标准。由于您没有为 GridSearchCV 的评分参数提供任何值,因此将使用 SVR 的评分方法,即 R 平方值,而不是您所做的 mean_squared_error。
这可以通过这样做来解决:
from sklearn.metrics import make_scorer
scorer = make_scorer(mean_squared_error, greater_is_better=False)
svr_gs = GridSearchCV(SVR(epsilon = 0.01), parameters, cv = K, scoring=scorer)
关于python-3.x - SVM 回归的调整参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48033510/
如果我在 lrge 训练集上训练 SVM,并且类变量是 True 或 False,那么与训练集中的 False 值数量相比,True 值很少会影响训练模型/结果吗?他们应该平等吗?如果我的训练集的 T
假设我的特征向量是 (x1, x2, ...xn) 谁能给我一个代码来使用 libSVM 训练一类 SVM? 我应该如何使用交叉验证来学习参数。 最佳答案 这可能会帮助你 label=ones(Num
我提前为这个问题的新颖性道歉,但我被卡住了。我正在尝试解决这个问题, 我可以做第 i)-1v) 部分,但我卡在了 v 上。我知道计算余量 y,你可以 y=2/||W|| 而且我知道W是超平面的法线,只
我有以下 R 配置: 操作系统:LinuxR 版本 3.0.1 (2013-05-16)rmr2 版本 2.2.1rhdfs 版本 1.0.6hadoop 版本 1.2.0 如何使用带 rmr2 包的
我想尝试不同的嵌入,例如 Word2Vec、ELMo 和 BERT,但我有点困惑是使用词嵌入还是句子嵌入,以及为什么。我将嵌入用作 SVM 分类器的特征输入。 谢谢。 最佳答案 虽然这两种方法都可以证
几乎所有的例子都是基于数字的。在文本文档中,我有文字而不是数字。 那么你能告诉我如何使用这些算法进行文本文档分类的简单示例吗? 我不需要代码示例,只需要逻辑 伪代码将有很大帮助 最佳答案 常用的方法是
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 3 年前。
我目前正处于语音识别的讨论阶段项目,我使用MFCC特征提取,但是从函数返回的MFCC特征是一个矩阵,例如每个语音文件(wav)的(20,38)特征矩阵。但是我如何将此功能传递给 SVM 分类器。对于
请我喜欢用 SIFT DESCRIPTOR 和 SVM 将一组图像分类为 4 类。现在,使用 SIFT 提取器,我得到了不同大小的关键点,例如 img1 有 100 个关键点,img2 有 55 个关
我有一组图像。我想学习一类支持向量机(OC-SVM)来模拟特定类(正)的分布,因为我没有足够的例子来代表其他类(负)。我对 OC-SVM 的理解是,它试图将数据与源分离,换句话说,它试图学习一个超球体
我正在使用 scikit-learn 使用 SVM 构建一些预测模型。我有一个包含大约 5000 个示例和大约 700 个特征的数据集。我在我的训练集上使用 18x17 网格搜索进行 5 折交叉验证,
这是我考试时提出的问题。我给出了以下答案,我的得分是0分。教授甚至不同意给予任何部分的认可,也没有告诉我我的答案有什么问题。谁能帮我找出我的答案有什么问题吗? 这是我在考试中给出的答案。缺点是:1)
tune.svm() 和 best.svm() 有什么区别。 当我们调整 svm 内核的参数时,我们不希望总是为我们的模型选择最佳值。 请原谅,因为我是 R 和机器学习的新手。 我注意到在调整 svm
我尝试使用 OpenCV2.3 实现基于 SVM 和 HOG 的人员检测系统。但是我卡住了。 我走到这一步:我可以从图像数据库计算 HOG 值,然后我用 LIBSVM 计算 SVM 向量,所以我得到例
Mahout(机器)中围绕 SVM(支持向量机)的任何新发展Learning With Hadoop) 使用 Hadoop?最近 SVM 实现被添加到 Mahout 中。我打算使用 SVM。有人尝试过
我使用 sklearn.svm.SVC 构建支持向量分类器,如下所示。 import numpy as np from sklearn.svm import SVC svc=SVC(proba
我想看看模型是否收敛于我的交叉验证。我如何增加或减少 sklearn.svm.SVC 中的时代? 目前: SVM_Model = SVC(gamma='auto') SVM_Model.fit(X_t
与在 SVM 的相同成本函数中使用 2-范数权重相比,我们如何通过在成本函数中使用 1-范数权重来提高稀疏性。 对于 1-范数:成本函数 - 最小化 ||w||_1 对于 2-范数:成本函数 - 最小
事实上,我不是一个经验丰富的 C++ 程序员,我是一个 C# 程序员,正如你所知道的,它有很大的不同,根据我的机器学习经验,我只使用了 matlab,所以如果我有一些,请原谅概念错误。 我正在尝试在
我正在尝试使用 OpenCV 中的 SVM 加载函数加载 .xml 文件,然后使用预测函数对交通标志进行分类。当到达预测函数的执行时抛出错误: Unhandled exception at 0x000
我是一名优秀的程序员,十分优秀!