【发布时间】:2019-10-21 03:33:13
【问题描述】:
我目前正在使用单个特征向量器训练 LinearSVC 分类器。我正在处理新闻,这些新闻存储在单独的文件中。这些文件最初有标题、正文、日期、作者,有时还有图像。但我最终删除了除正文以外的所有内容作为特征。我是这样做的:
# Loading the files (Plain files with just the news content. Nor date, author or other features.)
data_train = load_files(self.TRAIN_FOLDER, encoding=self.ENCODING) # data_train
data_test = load_files(self.TEST_FOLDER, encoding=self.ENCODING)
unlabeled = load_files(self.UNLABELED_FOLDER, encoding=self.ENCODING)
categories = data_train.target_names
# Get the sparse matrix of each dataset
y_train = data_train.target
y_test = data_test.target
# Vectorizing
vectorizer = TfidfVectorizer(encoding=self.ENCODING, use_idf=True, norm='l2', binary=False, sublinear_tf=True, min_df=0.001, max_df=1.0, ngram_range=(1, 2), analyzer='word')
X_train = vectorizer.fit_transform(data_train.data)
X_test = vectorizer.transform(data_test.data)
X_unlabeled = vectorizer.transform(self.data_unlabeled.data)
# Instantiating the classifier
clf = LinearSVC(loss='squared_hinge', penalty='l2', dual=False, tol=1e-3)
# Fitting the model according to the training set and predicting
scaler = preprocessing.StandardScaler(with_mean=False)
scaler = scaler.fit(X_train)
normalized_X_train = scaler.transform(X_train)
clf.fit(normalized_X_train, y_train)
normalized_X_test = scaler.transform(X_test)
pred = clf.predict(normalized_X_test)
accuracy_score = metrics.accuracy_score(y_test, pred)
recall_score = metrics.recall_score(y_test, pred)
precision_score = metrics.precision_score(y_test, pred)
但现在我想包括其他特征,如日期或作者,我发现的所有更简单的例子都是使用一个特征。所以我不确定如何进行。我应该将所有信息放在一个文件中吗?如何区分作者和内容?我应该为每个功能使用矢量化器吗?如果是这样,我应该拟合具有不同矢量化特征的模型吗?或者我应该为每个功能使用不同的分类器?你能给我推荐一些读物吗(向新手解释)?
提前致谢,
【问题讨论】:
标签: python scikit-learn