Я работаю над назначением машинного обучения, которое использует разреженные матрицы (в определенных 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% приведет к плохому классификатору; кроме того, однако я беспорядочно разделяю свои данные обучения, я также должен соответствующим образом разделить мою целевую аудиторию. Как мне это сделать?