【发布时间】:2016-02-09 13:23:09
【问题描述】:
我正在处理一项使用稀疏矩阵的机器学习任务(具体来说,如果您熟悉的话,是 20 个新闻组)。这是我到目前为止所做的:
import numpy as np
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
import re
from random import shuffle
from sklearn.datasets import fetch_20newsgroups
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.svm import SVC, LinearSVC
dataset = fetch_20newsgroups(subset='train')
transformer = CountVectorizer().fit(dataset.data)
tfidf_transformer = TfidfTransformer()
def preprocess(data):
sparse_data = transformer.transform(data)
training_data = tfidf_transformer.fit_transform(sparse_data)
return training_data
def predict():
data = preprocess(dataset.data)
target = dataset.target
print(data)
model = LinearSVC().fit(data, target)
return model
testset=fetch_20newsgroups(subset='test')
data2=preprocess(testset.data)
predicted=predict().predict(data2)
print(np.mean(predicted == testset.target))
所以,我在整个训练数据集上进行了训练,然后我使用我的分类器对测试数据进行了分类,这打印出了 88% 的准确率。但是,我应该在 80% 的训练数据上进行训练,并在其余的训练数据上测试我的分类器,然后我的教练将使用测试数据检查我的代码。所以,我必须将训练数据随机分成两组,因为数据是有序的,所以前 80% 的训练会导致分类器错误;另外,虽然我随机划分我的训练数据,我也必须相应地划分我的训练目标。我该怎么做呢?
【问题讨论】:
标签: python-2.7 machine-learning scikit-learn sparse-matrix scikits