我正在運行一個邏輯迴歸,並在文本列上運行tf-idf。這是我在邏輯迴歸中唯一使用的列。我如何確保儘可能調整參數?微調Logistic迴歸中的參數
我希望能夠運行一組步驟,最終允許我說我的邏輯迴歸分類器正在運行,並且它可能可以運行。
from sklearn import metrics,preprocessing,cross_validation
from sklearn.feature_extraction.text import TfidfVectorizer
import sklearn.linear_model as lm
import pandas as p
loadData = 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 + testdata
lentrain = 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.."
你能否更好地解釋你想要達到的目標?你想調整哪些超參數?邏輯迴歸沒有任何超參數。 – George
@George道歉不清楚。我只是想確保我通過Logistic迴歸的參數是最好的參數。我希望能夠通過一組步驟,最終允許我說我的邏輯迴歸分類器正在運行,並且可能可以。 –
@George scikit-learn的logistic迴歸需要幾個正則化參數。 –