Ошибка типа: несоответствие типов уровня: 0,2. При разделении данных на обучающие, проверочные и тестовые наборы

Невозможно очистить историю сеанса или отключить навигацию назад / вперед от непривилегированного кода. Ближайшим доступным решением является метод location.replace (), который заменяет текущий элемент истории сеанса указанным URL.

blockquote>

Источник (MDN)

location.replace () | MDN

0
задан desertnaut 4 March 2019 в 00:54
поделиться

2 ответа

Индексы должны быть целыми. Можно попробовать:

    train_size = int(len(all_x)*0.7)
    valid_size = int(len(all_x)*0.2)
    test_size = int(len(x_prime)*0.1)
0
ответ дан Amin Ghaderi 4 March 2019 в 00:54
поделиться

Вы пытаетесь нарезать кадр данных pandas с float, так как следующие операции генерируют нецелые значения для размера данных обучения, проверки и тестирования:

train_size = float(len(all_x)*0.7)
valid_size = float(len(all_x)*0.2)
test_size = float(len(x_prime)*0.1)

Обратите внимание, что ваше разделение неправильно; Ваш обучающий набор включает в себя все точки данных наборов проверки и тестирования, в то время как ваш набор проверки содержит все экземпляры набора испытаний. Кроме того, вы никогда не должны полагаться на разбиения, которые не перемешивают ваш набор данных. Следующая функция должна помочь вам.

import numpy as np
import pandas as pd

def train_valid_test(df, train_split=.7, valid_split=.2, seed=None):    
    np.random.seed(seed)
    perm = np.random.permutation(df.index)

    training_max_index = int(train_split * len(df.index))
    validate_max_index = int(valid_split * len(df.index)) + training_max_index

    training = df.ix[perm[:training_max_index]]
    validation = df.ix[perm[training_max_index:validate_max_index]]
    test = df.ix[perm[validate_max_index:]]

    return training, validation, test

Если вы хотите передать зависимые (y) и независимые (x) переменные по отдельности, вы можете использовать следующую функцию:

import numpy as np
import pandas as pd

def train_valid_test(x_data, y_data, train_split=.7, valid_split=.2, seed=None):
    if len(x_data.index) != len(y_data.index):
        raise Exception('x_data and y_data must contain the same number of data points'

    np.random.seed(seed)
    perm = np.random.permutation(x_data.index)
    x_data = x_data.reindex(perm)
    y_data = y_data.reindex(perm)

    training_max_index = int(train_split * len(x_data.index))
    validate_max_index = int(valid_split * len(x_data.index)) + training_max_index

    X_train, y_train = x_data[:training_max_index], y_data[:training_max_index]
    X_valid, y_valid = x_data[:validate_max_index], y_data[:validate_max_index]
    X_test, y_test = x_data[validate_max_index:], y_data[validate_max_index:]

    return X_train, X_valid, X_test, y_train, y_valid, y_test
0
ответ дан Giorgos Myrianthous 4 March 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: