我在文本数据上比较了scikit.learn的LinearSVC和LogisticRegression的性能。我正在使用LinearSVC,“l2”惩罚和'squared_hinge'丢失。我使用带有'l1'惩罚的LogisticRegression。但是我发现他们的数据集在我的数据集上几乎完全相同(在分类准确性,精确度/召回率等方面,以及运行时间方面)。这不是巧合,并且让我怀疑这些实际上是相同的实现。是这样的吗?
如果我要将LogisticRegression与基于支持向量的实现(可以处理多类数据)进行比较,我应该使用scikit.learn中的哪个类?
这是我的代码
scorefunc = make_scorer(fbeta_score, beta = 1, pos_label = None)
splits = StratifiedShuffleSplit(data.labels, n_iter = 5, test_size = 0.2)
params1 = {'penalty':['l1'],'C':[0.0001, 0.001, 0.01, 0.1, 1.0]}
lr = GridSearchCV(LogisticRegression(), param_grid = params1, cv = splits, n_jobs = 5, scoring = scorefunc)
lr.fit(data.combined_mat, data.labels)
print lr.best_params_, lr.best_score_
>> {'penalty': 'l1', 'C': 1.0} 0.91015049974
params2 = {'C':[0.0001, 0.001, 0.01, 0.1, 1.0], 'penalty':['l2']}
svm = GridSearchCV(LinearSVC(), param_grid = params2, cv = splits, n_jobs = 5, scoring = scorefunc)
svm.fit(data.combined_mat, data.labels)
print svm.best_params_, svm.best_score_
>> {'penalty': 'l2', 'C': 1.0} 0.968320989681