linearRegression.score 和 svm.svc 产生的不同结果(内核 = 线性)

Different results produced by linearRegression.score and svm.svc(kernel = linear)

我对机器学习还很陌生。

我有一个数据集,我想对其应用测试训练拆分和交叉验证以进行线性回归。

我尝试使用 train_test_split(X, y, test_size=0.3) 拆分数据集,并且我执行了两个

reg = LinearRegression().fit(X_train,y_train)
reg.score(X_test,y_test)
clf = svm.SVC(kernel = 'linear').fit(X_train,y_train)
clf.score(X_test,y_test)

reg.score 给出了 0.98 的输出,但是 clf.score 只给出了非常低的,接近于 0 的输出。为什么这些结果不同?

我也尝试过

clf = svm.SVC(kernel='linear', C=1, random_state=42)
scores = cross_val_score(clf, X, y, cv=2)

它也给出了非常小的数字,看到了这个警告

UserWarning: The least populated class in y has only 1 members, which is less than n_splits=2.
  % (min_groups, self.n_splits)), UserWarning)

我尝试了不同的 cv,但 cv>5 给出错误“n_splits=5 不能大于每个 class 中的成员数。”请注意,我使用的数据集不是二进制或简单的 multiclass。它更像是月度销售数据而不是分类数据。我认为这可能就是它引起警告的原因。这种情况怎么办?

您在这里混淆了回归(对于连续值目标)和分类。
linear regression model 期望一个连续的值目标,它的分数是决定系数。
support vector classifier是一种分类方法,它的分数就是分类准确率。

你声明你的目标不是绝对的,所以我想你会想要使用 support vector regression 而不是 SVC。

既然你说是机器学习的新手,或许也可以看看this tutorial