Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.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 使用自定义内核为'sklearn.svm'回归器生成歧义_Python_Machine Learning_Scikit Learn_Regression_Svm - Fatal编程技术网

Python 使用自定义内核为'sklearn.svm'回归器生成歧义

Python 使用自定义内核为'sklearn.svm'回归器生成歧义,python,machine-learning,scikit-learn,regression,svm,Python,Machine Learning,Scikit Learn,Regression,Svm,我想在Sklearn.svm模块中使用定制的核函数。我发现以下代码是svc自定义内核的示例: 我想定义一些函数,如: def my_new_kernel(X): a,b,c = (random.randint(0,100) for _ in range(3)) # imagine f1,f2,f3 are functions like sin(x), cos(x), ... ans = a*f1(X) + b*f2(X) + c*f3(X) return ans

我想在
Sklearn.svm
模块中使用定制的核函数。我发现以下代码是svc自定义内核的示例:

我想定义一些函数,如:

def my_new_kernel(X):
    a,b,c = (random.randint(0,100) for _ in range(3))
    # imagine f1,f2,f3 are functions like sin(x), cos(x), ...
    ans = a*f1(X) + b*f2(X) + c*f3(X)
    return ans
关于内核方法我的想法是,它是一个函数,获取特征矩阵
X
)作为输入,并返回一个形状矩阵(n,1)。然后svm返回的矩阵附加到特征列,并使用该矩阵对标签进行分类

在上面的代码中,内核用于
svm.fit
函数,我无法理解什么是
X
Y
内核的输入及其形状。如果
X
Y
(my_kernel方法的输入)是数据集的特征和标签,那么在没有标签的情况下,内核如何处理测试数据


实际上,我想对一个数据集使用svm,其形状为
(10000,6)
,(5列=特征,1列=标签),那么如果我想使用
我的新内核
方法,输入和输出以及它们的形状是什么;以下是一些可能会有所帮助的评论

我不知道内核的X和Y输入是什么,它们的形状是什么。如果X和Y(my_内核方法的输入)是数据集的特征和标签

的确如此;从
fit

参数:

X:{类数组,稀疏矩阵},形状(n个样本,n个特征)

训练向量,其中n_samples是样本数,n_features是特征数。对于kernel=“precomputed” X的预期形状为(n个样本,n个样本)

y:类似阵列的形状(n_个样本,)

目标值(分类中的类标签,回归中的实数)

与默认可用内核完全相同

那么,在没有标签的情况下,内核如何处理测试数据呢


仔细查看您提供的代码将发现标签
Y
实际上仅在培训期间使用(
fit
);它们当然不会在预测过程中使用(
clf.predict()
在上面的代码中-不要与
yy
混淆,后者与
Y
无关)。

那么
myu kernel
函数的输出呢?形状是什么样的?(n_samples,n_samples?@masoudmasoumimomoghadam不太确定,只是通过阅读代码,但应该可以通过实验直观地看到它(尽管
np.dot
让我认为它应该是一个标量)。
def my_new_kernel(X):
    a,b,c = (random.randint(0,100) for _ in range(3))
    # imagine f1,f2,f3 are functions like sin(x), cos(x), ...
    ans = a*f1(X) + b*f2(X) + c*f3(X)
    return ans