【发布时间】:2021-10-24 05:02:51
【问题描述】:
我在 python 中有这段代码,它使用不同的内核创建一个 SVM:
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, roc_auc_score
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
# The gamma parameter is the kernel coefficient for kernels rbf/poly/sigmoid
svm = SVC(gamma='auto', probability=True)
svm.fit(X_train,y_train.values.ravel())
prediction = svm.predict(X_test)
prediction_prob = svm.predict_proba(X_test)
print('Accuracy:', accuracy_score(y_test,prediction))
print('AUC:',roc_auc_score(y_test,prediction_prob[:,1]))
print(X_train)
print(y_train)
现在我想用不同的内核 rbf 构建它并将值存储到数组中。我需要将折叠的结果存储到列表中,如下所示:所以像这样
def svm_grid_search(parameters, cv):
# Store the outcome of the folds in these lists
means = []
stds = []
params = []
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
for parameter in parameters:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.3)
# The gamma parameter is the kernel coefficient for kernels rbf/poly/sigmoid
svm = SVC(gamma=1,kernel ='rbf',probability=True)
svm.fit(X_train,y_train.values.ravel())
prediction = svm.predict(X_test)
prediction_prob = svm.predict_proba(X_test)
return means, stddevs, params
答案应该如下所示,使用不同的参数和内核函数:
from sklearn.model_selection import GridSearchCV
parameters = {'kernel':['linear','poly','rbf'],'C':[0.2,0.5,1.0]}
means, stddevs, params = svm_grid_search(parameters, 10)
print('Mean AUC (+/- standard deviation), for parameters')
for mean, std, params in zip(means, stddevs, params):
print("%0.3f (+/- %0.03f) for %r"
% (mean, std, params))
但是我不断收到此错误,这表明我没有正确通过列表的折叠?
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-7-3f5f99897a92> in <module>()
3 parameters = {'kernel':['linear','poly','rbf'],'C':[0.2,0.5,1.0]}
4
----> 5 means, stddevs, params = svm_grid_search(parameters, 10)
6
7 print('Mean AUC (+/- standard deviation), for parameters')
TypeError: 'NoneType' object is not iterable
如果有人能指出正确的方向,不胜感激
【问题讨论】: