【发布时间】:2018-11-06 14:06:11
【问题描述】:
今天我想请你帮忙看看我的神经网络的质量。
我一直在从事一个预测冶金参数的项目。
为了确保我的神经网络以正确的方式运行,我尝试使用“Scikit-learn”的一些功能,如“score”和“r^2”,但没有成功。
在实际代码中,我的“r²”是 -10.42239374572942,这个值是不真实的,因为每个人都知道 r² 必须在 -1 和 1 之间。
有人对评估我的神经网络有什么建议吗? 为什么我的代码不起作用?
谢谢各位。 再见。
按照上面我的代码:
# coding: utf-8
import pandas as pd
import numpy as np
#modulo de plot
import matplotlib.pyplot as plt
#modulo da rede propriamente dita
from sklearn.neural_network import MLPRegressor
#para testar a rede neural
from sklearn.model_selection import train_test_split
#para normalização
from sklearn.preprocessing import StandardScaler
#para testar a qualidade da rede neural
from sklearn.metrics import mean_squared_error, r2_score
#buscando o CSV com os dados do AF1-Gerdau
df = pd.read_csv('Rede3.03.11.17_MOACIR_b.csv', delimiter=';', encoding = "ISO-8859-1" )
df2 = df.dropna(how='all')
# ## Definindo as variáveis inputs e a resposta
X = df2.drop(['Fuel Rate'], axis=1) #deixando todas as colunas exceto a variável resposta "Fuel Rate"
y = df2['Fuel Rate'] #variável respota "Fuel Rare"
# ## Normalizando os dados para uma melhor convergência
scaler = StandardScaler()
X_train, X_test, y_train, y_test = train_test_split(X, y)
# Treinamento apenas com os dados de treino
scaler.fit(X_train)
# Aplicando a transformação de normalização dos dados:
X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
# ## Criando os parametros da RNA
rna = MLPRegressor(hidden_layer_sizes=(13,13,13), max_iter=2000)
# ## Treinando a RNA
rna.fit(X_train,y_train)
# ## Testando a rede
y_predicted = rna.predict(X_test)
# The coefficients
print('Coefficients: \n', r2_score(y_test, y_predicted))
【问题讨论】:
-
查看
sklearndocs forr2_score:“与大多数其他分数不同,R^2 分数可能为负数(它实际上不必是数量 R 的平方)。”另外,关于“每个人都知道 r² 必须在 -1 和 1 之间”——你可能会想到r,而不是R^2(和r^2,即使在线性回归的特殊情况下,is not bounded by -1)。
标签: python pandas scikit-learn neural-network evaluation