Непоследовательная нейронная сеть приводит к использованию склин и семян - PullRequest
0 голосов
/ 29 мая 2018

После запуска нейронной сети в sklearn я получаю противоречивые результаты, даже после реализации функции семени.каждый раз, когда я запускаю код, я получаю разные значения для MSE и R в квадрате для каждого протестированного начального значения.Эти значения могут значительно варьироваться в зависимости от R в диапазоне от -0,1 до 0,6.Мне интересно, если это проблема с данными, поскольку у меня есть только 22 столбца и 241 строки.Я также попытался установить

mlp=MLPRegressor(hidden_layer_sizes=(22,22,22),max_iter=2000,learning_rate_init=0.001,random_state=0)

, а также изменить значение random_state.ниже мой код.Большое спасибо

import matplotlib.pyplot as plt
import pandas as pd
import sklearn
import numpy as np
data=pd.read_csv(r'''D:\PhD\1styear\machinelearning\NNforF2050\DATAnnF2050.csv''')
print(data.shape)
print(data.dtypes)

x=data.drop('EnergyConsumpManuf',axis=1)


y=data['EnergyConsumpManuf']


from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)

from sklearn.preprocessing import StandardScaler
scaler=StandardScaler()
scaler.fit(x_train)
x_train=scaler.transform(x_train)
x_test=scaler.transform(x_test)

from sklearn.neural_network import MLPRegressor 
from sklearn import metrics
from sklearn.metrics import accuracy_score
from math import sqrt

for i in range(15):
    print('np.random.seed(%d)'%(i))
    np.random.seed(i)
    mlp=MLPRegressor(hidden_layer_sizes=(22,22,22),max_iter=2000,learning_rate_init=0.001)
    mlp.fit(x_train,y_train)
    predictions=mlp.predict(x_test)
    print('MSE train: ',metrics.mean_squared_error(y_test,predictions))
    RMS=sqrt(metrics.mean_squared_error(y_test,predictions))
    print('RMS',RMS)
    RTWO=sklearn.metrics.r2_score(y_test,predictions)
    print('RTWO',RTWO)
    print('MAE',metrics.mean_absolute_error(y_test,predictions))

1 Ответ

0 голосов
/ 29 мая 2018

Вам также необходимо установить параметр random_state для функции train_test_split.Без фиксированного случайного состояния данные делятся случайным образом каждый раз, поэтому результаты меняются при каждом запуске кода.

...