def _initEstimator(self, X, Y):
#estimator = svm.SVR(kernel="linear",shrinking=False)
estimator = svm.LinearSVR(
loss="squared_epsilon_insensitive",
dual=False,
random_state=self.random_state)
tuned_parameters = {'C': [self.C], 'epsilon': [self.epsilon]}
if self.C is None:
tuned_parameters["C"] = [0.0001, 0.001, 0.01, 0.1, 1, 10, 100]
if self.epsilon is None:
tuned_parameters["epsilon"] = [0.0001, 0.001, 0.01, 0.1, 1, 2, 5]
n = len(X)
if n <= 20:
cv = 3
else:
cv = 7
gridsearch = GridSearchCV(estimator,
tuned_parameters,
scoring="r2",
n_jobs=-1 if self.parallel else 1,
cv=cv,
verbose=0)
gridsearch.fit(X, Y)
self._hyper_C = gridsearch.best_params_['C']
self._hyper_epsilon = gridsearch.best_params_['epsilon']
self._best_clf_score = gridsearch.best_score_
self._svm_clf = best_clf = gridsearch.best_estimator_
self._svm_coef = best_clf.coef_
self._svm_bias = -best_clf.intercept_[0]
self._svm_L1 = np.linalg.norm(self._svm_coef, ord=1)
prediction = best_clf.predict(X)
self._svm_loss = np.sum(np.abs(Y - prediction))
self._svm_coef = self._svm_coef[0]
评论列表
文章目录