如何随机拼接稀疏矩阵进行机器学习分类



我正在做一项利用稀疏矩阵的机器学习任务(如果你熟悉的话,可以在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%的训练数据进行训练,并对其余的训练数据测试我的分类器,然后我的老师将使用测试数据检查我的代码。因此,我必须将训练数据随机划分为2组,因为数据是有序的,所以在前80%上进行训练会导致分类器不好;此外,无论我如何随机划分我的训练数据,我也必须相应地划分我的培训目标。我该怎么做?

要将训练数据随机划分为两个集,可以使用sklearn.cross_validation.train_test_split。以下是您正在查找的代码:

from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(dataset.data, dataset.target,
                                                    train_size=0.8, random_state=0)
print("Train size: {0}".format(len(X_train)))
print("Test size: {0}".format(len(X_test)))

输出为:

Train size: 9051
Test size: 2263

我希望这对你有帮助。

相关内容

  • 没有找到相关文章

最新更新