Предсказания MLPRegressor имеют верхнюю и нижнюю границы - PullRequest
0 голосов
/ 04 сентября 2018

Я довольно новичок в машинном обучении, но я пытаюсь использовать MLPRegressor из scikit-learn для моделирования данных, которые имеют 4 входа и 1 выход. Набор данных имеет больше входов и выходов, чем это, но я считаю, что я выбрал только те, которые применимы к выбору, который я выбрал. У меня есть около 60000 образцов в наборе данных. Модель изучает большую часть данных, но, похоже, имеет верхнюю и нижнюю границу выходных данных.

Я пробовал много разных комбинаций гиперпараметров, но ни один из них не избавился от видимых границ выходных данных. Я попытался нормализовать данные, но это не помогло. Для этого конкретного набора гиперпараметров потеря составляет 106,555, а балл по данным обучения и тестирования - 0,998.

Вот код:

# Importing the data from a .csv file
input_cols = [3,4,7,9]
output_cols = [8]
X, y, all_data = [], [], []
with open(data_path, 'r') as data:
    reader = csv.reader(data)
    i = 0
    for line in reader:
        try:
            a = [float(line[3]), float(line[4]), float(line[7]), float(line[10])]
            b = [float(line[9])]
            X.append(a)
            y.append(b)
        except ValueError:
            print('ValueError')
    all_data = [X, y]
print('Done importing data')

# Splitting the data for training and testing
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state = 42)

# Training the neural network
model = MLPRegressor(max_iter=10**4, verbose=True, hidden_layer_sizes=(10,10,10), tol=0.00001, learning_rate_init=0.005, random_state=1, \
                     activation='logistic', solver='adam')
print('Beginning training')
model.fit(X_train, y_train)
print('Training complete')

# Results
winsound.PlaySound('C:/Windows/media/Windows Background.wav', winsound.SND_FILENAME)
print('Score on training data: {:.3f}'.format(model.score(X_train, y_train)))
print('Score on testing data: {:.3f}'.format(model.score(X_test, y_test)))

Ниже приведены графики результатов. Каждый график представляет собой один из 4 входных данных, нанесенных на ось X, и выходных данных на оси Y. Красный - прогноз сети, синий - фактические данные. Я должен удалить оси по соображениям конфиденциальности, но знаю, что ось у колеблется от -700 до 700. Графики результатов

...