使用随机搜索进行超参优化,使用RandomSearchCV随机搜索超参空间,使用均方误差来作为评价指标,训练30轮次建立支持向量回归模型。
svm_search = RandomizedSearchCV(svm,
svm_grid,
scoring='neg_mean_squared_error',
cv=3,
return_train_score=True,
n_jobs=-1,
n_iter=30,
verbose=1)
svm_search.fit(X_train_confirmed, y_train_confirmed)
遇到的问题:
Fitting 3 folds for each of 30 candidates, totalling 90 fits
[Parallel(n_jobs=-1)]: Using backend LokyBackend with 4 concurrent workers.
Python37\lib\site-packages\sklearn\utils\validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
y = column_or_1d(y, warn=True)
Python37\lib\site-packages\sklearn\utils\validation.py:760: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
y = column_or_1d(y, warn=True)
问题的意思:
数据转换警告:当需要一维数组时,传递一个列向量y。请将y的形状更改为(n_samples,),例如使用ravel()。
y = column_or_1d(y, warn=True)
问题解决:
这个问题是警告信息,不进行处理也可以成功运行程序,但总感觉不是很舒服。还是得把它处理一下(在y后面加上.ravel()):
svm_search = RandomizedSearchCV(svm,
svm_grid,
scoring='neg_mean_squared_error',
cv=3,
return_train_score=True,
n_jobs=-1,
n_iter=30,
verbose=1)
svm_search.fit(X_train_confirmed, y_train_confirmed.ravel())
成功解决后如下: