Разделение набора данных для обучения и тестирования по ряду - PullRequest
0 голосов
/ 10 октября 2018

Я хочу разделить свой набор данных на наборы тренировочных и тестовых данных по годам.Идея состоит в том, чтобы поместить строки с годами, начиная с 2009-2017 гг., В набор данных поезда, а данные 2018 г. - в набор тестовых данных.Разделение наборов данных по большей части было легким делом, но мои модели вызывают много проблем с индексацией.

X = ((df[df['Year'] < 2018]))
X_train = np.array(X.drop(['Usage'], 1))
X_test = np.array(X['Usage'])
y =((df[df['Year'] > 2017]))
y_train = np.array(y.drop(['Usage'], 1))
y_test = np.array(y['Usage'])

Вот как я планирую разделить данные.Столбец использования - это столбец моего прогноза, который содержит непрерывные значения.Применение простого RandomForestRegressor () дало мне эту ошибку в ответ

ValueError: Number of labels=14495 does not match number of samples=382772

aditya моя модель регрессора была довольно простой, но я присоединяю код в любом случае.столбцы, передаваемые в X, следующие: X = [Cust_Id ',' Usage ',' Plan_Group ',' Contract_Type ',' Cust_Status ',' Premise_Zip ',' Year ',' Month ']

model = RandomForestRegressor()

model.fit(X_train, y_train)

y_pred = model.predict(X_test)
# evaluate predictions
print(model.score(X_test, y_test))
# accuracy = accuracy_score(y_test, (y_pred < 0.5).astype(int))

1 Ответ

0 голосов
/ 10 октября 2018

Для большинства алгоритмов в стеке sklearn у вас есть стандартное обозначение: X, заглавная буква, обычно представляет собой массив (даже если есть одна особенность) и представляет каждую точку данных в векторной форме.y, маленькая буква, обычно представляет собой вектор, который обозначает метки, например метку класса или значение элемента регрессии.

Вы создали X и y в качестве информационного кадра, сгенерированного атрибутом Year.Вместо этого вы должны разделиться на X_train и X_test.

X = df.drop(['Usage'],1)
X_train = df[df['Year'] < 2018]
X_test = df[df['Year'] > 2017]
y_train = df[df['Year'] < 2018]
y_test = df[df['Year'] > 2017]
y_train = y_train['Usage']
y_test = y_test['Usage']

И затем вы тренируетесь на основе X_train и y_train

model = RandomForestRegressor()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

Это не лучший способ.Вернусь, чтобы отредактировать ответ, но этого должно быть достаточно, чтобы начать работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...