Khi đào tạo hồi quy SVM, bạn nên cân nhắc các tính năng đầu vào trước khi đào tạo.Mở rộng quy mô của các nguyên nhân mục tiêu Scikit-tìm hiểu hồi quy SVM để chia nhỏ
Nhưng làm cách nào để mở rộng quy mô mục tiêu? Thông thường điều này không được coi là cần thiết, và tôi không thấy lý do chính đáng tại sao nó cần thiết.
Tuy nhiên trong scikit-học ví dụ cho SVM hồi quy từ: http://scikit-learn.org/stable/auto_examples/svm/plot_svm_regression.html
Bởi chỉ cần giới thiệu dòng y = y/1000 trước khi đào tạo, dự đoán sẽ phá vỡ xuống đến một giá trị không đổi. Chia tỷ lệ biến mục tiêu trước khi đào tạo sẽ giải quyết được vấn đề, nhưng tôi không hiểu tại sao nó lại cần thiết.
Điều gì gây ra sự cố này?
import numpy as np
from sklearn.svm import SVR
import matplotlib.pyplot as plt
# Generate sample data
X = np.sort(5 * np.random.rand(40, 1), axis=0)
y = np.sin(X).ravel()
# Add noise to targets
y[::5] += 3 * (0.5 - np.random.rand(8))
# Added line: this will make the prediction break down
y=y/1000
# Fit regression model
svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1)
svr_lin = SVR(kernel='linear', C=1e3)
svr_poly = SVR(kernel='poly', C=1e3, degree=2)
y_rbf = svr_rbf.fit(X, y).predict(X)
y_lin = svr_lin.fit(X, y).predict(X)
y_poly = svr_poly.fit(X, y).predict(X)
# look at the results
plt.scatter(X, y, c='k', label='data')
plt.hold('on')
plt.plot(X, y_rbf, c='g', label='RBF model')
plt.plot(X, y_lin, c='r', label='Linear model')
plt.plot(X, y_poly, c='b', label='Polynomial model')
plt.xlabel('data')
plt.ylabel('target')
plt.title('Support Vector Regression')
plt.legend()
plt.show()
Đó là nó, cảm ơn bạn đã trả lời. Vì vậy, đối với một mô hình chung, các tùy chọn là để mở rộng mục tiêu, hoặc để bao gồm epsilon trong tìm kiếm lưới của tôi. Bạn có lời khuyên nào có ý nghĩa hơn không? – user1774143
@ user1774143 Tìm kiếm lưới cho đúng 'epsilon'. Chia tỷ lệ 'y' là tương đương, nhưng dễ bị lỗi. –