Невозможно создать тестовый и тренировочный набор, используя sklearn - PullRequest
0 голосов
/ 02 июля 2018

Вот код, над которым я работал.

import pandas as pd
import numpy as np
from sklearn.datasets import load_boston
housing_data = load_boston()

from sklearn.model_selection import train_test_split
train_set, test_set = train_test_split(housing_data, test_size = 0.2, random_state = 42)

И я получаю эту ошибку.

/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_split.py in train_test_split(*arrays, **options)
   2057 
   2058     return list(chain.from_iterable((safe_indexing(a, train),
-> 2059                                      safe_indexing(a, test)) for a in arrays))
   2060 
   2061 

/anaconda3/lib/python3.6/site-packages/sklearn/model_selection/_split.py in <genexpr>(.0)
   2057 
   2058     return list(chain.from_iterable((safe_indexing(a, train),
-> 2059                                      safe_indexing(a, test)) for a in arrays))
   2060 
   2061 

/anaconda3/lib/python3.6/site-packages/sklearn/utils/__init__.py in safe_indexing(X, indices)
    162             return X[indices]
    163     else:
--> 164         return [X[idx] for idx in indices]
    165 
    166 

/anaconda3/lib/python3.6/site-packages/sklearn/utils/__init__.py in <listcomp>(.0)
    162             return X[indices]
    163     else:
--> 164         return [X[idx] for idx in indices]
    165 
    166 

KeyError: 3

1 Ответ

0 голосов
/ 02 июля 2018

Если вы посмотрите документацию для load_boston(), вы увидите, что она возвращает объект Bunch. Если вы осмотрите этот объект в проводнике переменных Spyder, вы увидите, что он содержит описание, фактические данные (объекты, из которых вы можете делать свои прогнозы), метки для каждого из этих объектов и целевой вектор, содержащий значение, которое вы пытаетесь предсказать.

load_boston

Вместо этого можно выполнить следующее, если вы хотите получить только часть данных (функции данных для прогнозирования):

train_set, test_set = train_test_split(housing_data.data, test_size = 0.2, random_state = 42)

В качестве альтернативы, вы можете создавать обучающие и тестовые наборы для X и y (функции и цели) со следующими параметрами:

X_train, X_test, y_train, y_test = train_test_split(housing_data.data, housing_data.target, test_size = 0.2, random_state = 42)

Что приводит к следующему набору переменных:

boston train_test_split

Редактировать: Если вы вызываете load_boston () с параметром return_X_y = True, он возвращает кортеж (data, target), что позволяет вам сделать следующее, что, возможно, более элегантно:

X, y = load_boston(return_X_y = True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 42)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...