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

我遇到了两种使用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)

其次是这个
# 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)

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

最佳答案

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

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

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

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

引用:
https://cs.adelaide.edu.au/~chhshen/teaching/ML_SVR.pdf

关于machine-learning - LinearRegression和svm.SVR(kernel ="linear")之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46970888/

10-10 10:29