逻辑回归中的参数微调

我在一个文本列上运行tf-idf,并将其用于逻辑回归。这是逻辑回归中我使用的唯一列。我如何确保这些参数被尽可能好地调整?

我希望能够通过一系列步骤,最终能够说我的逻辑回归分类器运行得尽可能好。

from sklearn import metrics,preprocessing,cross_validationfrom sklearn.feature_extraction.text import TfidfVectorizerimport sklearn.linear_model as lmimport pandas as ploadData = lambda f: np.genfromtxt(open(f, 'r'), delimiter=' ')print "loading data.."traindata = list(np.array(p.read_table('train.tsv'))[:, 2])testdata = list(np.array(p.read_table('test.tsv'))[:, 2])y = np.array(p.read_table('train.tsv'))[:, -1]tfv = TfidfVectorizer(min_df=3, max_features=None, strip_accents='unicode',                      analyzer='word', token_pattern=r'\w{1,}',                       ngram_range=(1, 2), use_idf=1, smooth_idf=1,                       sublinear_tf=1)rd = lm.LogisticRegression(penalty='l2', dual=True, tol=0.0001,                            C=1, fit_intercept=True, intercept_scaling=1.0,                            class_weight=None, random_state=None)X_all = traindata + testdatalentrain = len(traindata)print "fitting pipeline"tfv.fit(X_all)print "transforming data"X_all = tfv.transform(X_all)X = X_all[:lentrain]X_test = X_all[lentrain:]print "20 Fold CV Score: ", np.mean(cross_validation.cross_val_score(rd, X, y, cv=20, scoring='roc_auc'))print "training on full data"rd.fit(X, y)pred = rd.predict_proba(X_test)[:, 1]testfile = p.read_csv('test.tsv', sep="\t", na_values=['?'], index_col=1)pred_df = p.DataFrame(pred, index=testfile.index, columns=['label'])pred_df.to_csv('benchmark.csv')print "submission file created.."

回答:

你可以使用网格搜索来找到最佳的C值。基本上,较小的C值指定了更强的正则化。

>>> param_grid = {'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000] }>>> clf = GridSearchCV(LogisticRegression(penalty='l2'), param_grid)GridSearchCV(cv=None,             estimator=LogisticRegression(C=1.0, intercept_scaling=1,                  dual=False, fit_intercept=True, penalty='l2', tol=0.0001),             param_grid={'C': [0.001, 0.01, 0.1, 1, 10, 100, 1000]})

有关在你的应用中更多详细信息,请查看GridSearchCv文档

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注