LinearRegression和svm.SVR(kernel =“ linear”)之间的区别

Dev*_*Man 5 regression machine-learning scikit-learn python-3.5 sklearn-pandas

首先,这个论坛上有与这个论坛非常相似的问题,但是请相信我没有匹配的问题,所以请不要重复。

我遇到了使用scikit的sklearn进行线性回归的两种方法,但我无法理解两者之间的区别,尤其是在第一个代码中调用了方法train_test_split()的地方,而在另一个代码中直接调用了该方法的地方。

我正在学习多种资源,而这一个问题对我来说很困惑。

首先使用SVR

X = np.array(df.drop(['label'], 1))

X = preprocessing.scale(X)

y = np.array(df['label'])

X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, y, test_size=0.2)

clf = svm.SVR(kernel='linear')

clf.fit(X_train, y_train)

confidence = clf.score(X_test, y_test)
Run Code Online (Sandbox Code Playgroud)

其次是这个

# Split the data into training/testing sets
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]

# Split the targets into training/testing sets
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]

# Create linear regression object
regr = linear_model.LinearRegression()

# Train the model using the training sets
regr.fit(diabetes_X_train, diabetes_y_train)

# Make predictions using the testing set
diabetes_y_pred = regr.predict(diabetes_X_test)
Run Code Online (Sandbox Code Playgroud)

所以我的主要重点是使用svr(kernel =“ linear”)和使用LinearRegression()之间的区别

Tus*_*pta 5

cross_validation.train_test_split:将数组或矩阵拆分为随机训练和测试子集。

在第二个代码中,拆分不是随机的。

svm.SVR:支持向量回归 (SVR) 使用与 SVM 相同的分类原理,只有一些细微差别。首先,因为输出是实数,所以很难预测手头的信息,这有无限的可能性。在回归的情况下,容差 (epsilon) 设置为近似于已经从问题中请求的 SVM。但除了这个事实,还有一个更复杂的原因,算法更复杂,因此需要考虑。然而,主要思想始终是相同的:为了最小化误差,个性化最大化边距的超平面,记住部分误差是可以容忍的。

线性回归:在统计学中,线性回归是一种线性方法,用于对标量因变量 y 与一个或多个用 X 表示的解释变量(或自变量)之间的关系进行建模。一个解释变量的情况称为简单线性回归。

参考:https : //cs.adelaide.edu.au/~chhshen/teaching/ML_SVR.pdf


Dev*_*Man 4

这是我发现的:

直观上,与所有回归器一样,它试图通过最小化成本函数来拟合数据线。然而,SVR 的有趣之处在于您可以部署非线性内核。在这种情况下,您将结束非线性回归,即拟合曲线而不是直线。这个过程基于内核技巧以及对偶而不是原始中的解决方案/模型的表示。也就是说,模型被表示为训练点的组合,而不是特征和一些权重的函数。同时基本算法保持不变:非线性过程中唯一真正的变化是核函数,它从简单的内积变为某些非线性函数。

因此,SVR 也允许非线性拟合问题,而 LinearRegression() 仅适用于直线的简单线性回归(在这两种情况下可能包含任意数量的特征)。

  • 那么,您是说,SVM 即使使用线性核也可以拟合曲线? (3认同)
  • @VivekKumar LinearRegression() 仅适用于拟合直线,但具有线性内核的 svm 也可以拟合曲线。这就是我所问的,区别而不是其他任何事情 (2认同)