У меня есть 26 статей, классифицированных по двоичным категориям, и я выполнил NB и 5-кратные анализы CV. Я импортировал мои данные с командой load_files()
и я получил этот массив:Как импортировать собственные данные для однократного анализа CV scikit learn
target': array([0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1]),
'target_names': ['negative', 'positive']
Несмотря на то, что я читал Лоо документацию и руководство пользователя на scikit узнать сайт я не могу понять, как использовать мои данные. Вот пример с сайта:
from sklearn import cross_validation
X = np.array([[1, 2], [3, 4]])
y = np.array([1, 2])
loo = cross_validation.LeaveOneOut(2)
len(loo)
2
print(loo)
sklearn.cross_validation.LeaveOneOut(n=2)
for train_index, test_index in loo:
print("TRAIN:", train_index, "TEST:", test_index)
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
print(X_train, X_test, y_train, y_test)
Например, что же у стоять в приведенном выше примере с scikit узнать сайт? Это категории? Что такое train_index/test_index? Откуда это?
Некоторая помощь будет оценена по достоинству.
С уважением,
guzdeh
UPDATE:
спасибо за ответ, Брэд. Если я понимаю ваш ответ, мне нужно разделить свои данные на тренировочный/тестовый набор? Я сделал это с моим анализом NB (75:25), но с моей 5-кратной CV-реализацией этот раскол (80:20) был выполнен по алгоритму. Это мой код (играет с 4-х различных классификаторов):
def evaluate_cross_validation(clf, X, y, K):
# create a k-fold cross validation iterator of k=5 folds
cv = KFold(len(y), K, shuffle=True, random_state=0)
# by default the score used is the one returned by score >>> method of the estimator (accuracy)
scores = cross_val_score(clf, X, y, cv=cv)
print scores
print ("Mean score: {0:.3f} (+/-{1:.3f})").format(np.mean(scores), sem(scores))
clfs = [clf_1, clf_2, clf_3, clf_4]
for clf in clfs:
evaluate_cross_validation(clf, bunch.data, bunch.target, 5)
Bunch.data
мои статьи, загруженные load_files()
, bunch.target
мои два класса. Итак, если мое мышление верное, «Оставить-одно», являющееся N-кратным CV, тогда я мог бы провести анализ с вышеупомянутым кодом с K = количеством статей?
Тем не менее, я до сих пор не понимаю, что такое y = np.array([1, 2])
в приведенном выше примере и почему нужны наборы для тестирования и тестирования, поскольку все статьи, кроме одного, являются набором для обучения, а один - набором тестов.
Хорошо, давайте начнем с небольшого разъяснения, у вас есть массив «target» и массив «target_names». Каковы ваши возможности? Где этот массив?Если я правильно понял вашу проблему, вы пытаетесь классифицировать статьи как отрицательные, так и позитивные. Без информации о статьях, переданных в алгоритм, нет никаких возможностей для изучения. Иначе говоря, у вас есть только значения «y» (цели) и значения 'X' (функции). –
После импорта статей я получаю следующий массив: target ': array ([0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0 , 0, 0, 0, 1, 0, 0, 1, 1, 1]) и «target_names»: ['negative', 'positive']. Это используется в моем коде, массив - bunch.data, а имена целей - bunch.target. – guzdeh