【发布时间】:2015-12-19 17:59:19
【问题描述】:
在使用 scikit-learn 对文本文档进行分类时,您是先进行交叉验证然后进行特征提取还是其他方式?
这是我的管道:
union = FeatureUnion(
transformer_list = [
('tfidf', TfidfVectorizer()),
('featureEx', FeatureExtractor()),
('spell_chker', Spellingchecker()),
], n_jobs = -1)
我正在按照以下方式进行操作,但我想知道是否应该先提取特征并进行交叉验证。在此示例中,X 是文档列表,y 是标签。
X_train, X_test, y_train, y_test = train_test_split(X,y,test_size= 0.2)
X_train = union.fit_transform(X_train)
X_test = union.transform(X_test)
ch2 = SelectKBest(f_classif, k = 7000)
X_train = ch2.fit_transform(X_train, y_train)
X_test = ch2.transform(X_test)
clf = SVC(C=1, gamma=0.001, kernel = 'linear', probability=True).fit(
X_train , y_train)
print("classification report:")
y_true, y_pred = y_test, clf.predict(X_test)
print(classification_report(y_true, y_pred))
print()
【问题讨论】:
标签: machine-learning scikit-learn cross-validation