如何将 gridSearch CV 与 scipy 一起使用?
how to use gridSearch CV with scipy?
我一直在尝试使用 Gridsearchcv 调整我的 SVM,但它抛出错误。
我的代码是:
train = pd.read_csv('train_set.csv')
label = pd.read.csv('lebel.csv')
params = { 'C' : [ 0.01 , 0.1 , 1 , 10]
clf = GridSearchCV(SVC() , params , n_jobs = -1)
clf.fit(train , label)
抛出错误为:'too much indices for array'
但是当我只是这样做的时候:
clf = svc()
clf.fit(train.data , label.data)
代码工作正常
我怀疑问题出在您的数据结构 train.data / label.data 上。我已经测试了您的代码的两个版本并且它们都有效:
import sklearn.svm as sksvm
import sklearn.grid_search as skgs
params = { 'C' : [ 0.01 , 0.1 , 1 , 10]}
X = np.random.rand(1000, 10) # (1000 x 10) matrix, 1000 points with 10 features
Y = np.random.randint(0, 2, 1000) # 1000 array, binary labels
mod = sksvm.SVC()
mod.fit(X, Y)
输出:
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)
和
import sklearn.svm as sksvm
import sklearn.grid_search as skgs
params = { 'C' : [ 0.01 , 0.1 , 1 , 10]}
X = np.random.rand(1000, 10) # (1000 x 10) matrix, 1000 points with 10 features
Y = np.random.randint(0, 2, 1000) # 1000 array, binary labels
mod = skgs.GridSearchCV(sksvm.SVC(), params, n_jobs=-1)
mod.fit(X, Y)
输出:
GridSearchCV(cv=None, error_score='raise',
estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False),
fit_params={}, iid=True, loss_func=None, n_jobs=-1,
param_grid={'C': [0.01, 0.1, 1, 10]}, pre_dispatch='2*n_jobs',
refit=True, score_func=None, scoring=None, verbose=0)
如果您的数据在数据框和系列中,代码仍然有效,您可以通过添加来尝试:
X = pd.DataFrame(X)
Y = pd.Series(Y)
生成 X 和 Y 之后。
虽然没有可重现的代码很难说。另外,您可能应该在问题中添加标签 sklearn。
我一直在尝试使用 Gridsearchcv 调整我的 SVM,但它抛出错误。
我的代码是:
train = pd.read_csv('train_set.csv')
label = pd.read.csv('lebel.csv')
params = { 'C' : [ 0.01 , 0.1 , 1 , 10]
clf = GridSearchCV(SVC() , params , n_jobs = -1)
clf.fit(train , label)
抛出错误为:'too much indices for array'
但是当我只是这样做的时候:
clf = svc()
clf.fit(train.data , label.data)
代码工作正常
我怀疑问题出在您的数据结构 train.data / label.data 上。我已经测试了您的代码的两个版本并且它们都有效:
import sklearn.svm as sksvm
import sklearn.grid_search as skgs
params = { 'C' : [ 0.01 , 0.1 , 1 , 10]}
X = np.random.rand(1000, 10) # (1000 x 10) matrix, 1000 points with 10 features
Y = np.random.randint(0, 2, 1000) # 1000 array, binary labels
mod = sksvm.SVC()
mod.fit(X, Y)
输出:
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False)
和
import sklearn.svm as sksvm
import sklearn.grid_search as skgs
params = { 'C' : [ 0.01 , 0.1 , 1 , 10]}
X = np.random.rand(1000, 10) # (1000 x 10) matrix, 1000 points with 10 features
Y = np.random.randint(0, 2, 1000) # 1000 array, binary labels
mod = skgs.GridSearchCV(sksvm.SVC(), params, n_jobs=-1)
mod.fit(X, Y)
输出:
GridSearchCV(cv=None, error_score='raise',
estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
kernel='rbf', max_iter=-1, probability=False, random_state=None,
shrinking=True, tol=0.001, verbose=False),
fit_params={}, iid=True, loss_func=None, n_jobs=-1,
param_grid={'C': [0.01, 0.1, 1, 10]}, pre_dispatch='2*n_jobs',
refit=True, score_func=None, scoring=None, verbose=0)
如果您的数据在数据框和系列中,代码仍然有效,您可以通过添加来尝试:
X = pd.DataFrame(X)
Y = pd.Series(Y)
生成 X 和 Y 之后。
虽然没有可重现的代码很难说。另外,您可能应该在问题中添加标签 sklearn。