量化神经网络Python的预测质量

问题描述 投票:0回答:1

今天我想向您寻求一些关于我的神经网络质量的帮助。 我一直在参与一个预测冶金参数的项目。 为了确保我的神经网络以正确的方式运行,我尝试使用“Scikit-learn”的一些功能,例如“score”和“r^2”,但没有成功。

在实际代码中,我的“r²”是-10.42239374572942,这个值是不真实的,因为每个人都知道r²必须在-1和1之间。

有人对评估我的神经网络有什么建议吗? 为什么我的代码不起作用?

谢谢你们。 再见。

按照我上面的代码操作: #编码:utf-8 将 pandas 导入为 pd 将 numpy 导入为 np 将 matplotlib.pyplot 导入为 plt 从 sklearn.neural_network 导入 MLPRegressor 从 sklearn.model_selection 导入 train_test_split 从 sklearn.preprocessing 导入 StandardScaler 从 sklearn.metrics 导入mean_squared_error,r2_score

df = pd.read_csv('Rede3.03.11.17_MOACIR_b.csv', delimiter=';', encoding = "ISO-8859-1" )
df2 = df.dropna(how='all')
X = df2.drop(['Fuel Rate'], axis=1) #deixando todas as colunas exceto a variável resposta "Fuel Rate"
y = df2['Fuel Rate']
scaler = StandardScaler()
X_train, X_test, y_train, y_test = train_test_split(X, y)

scaler.fit(X_train)

X_train = scaler.transform(X_train)
X_test = scaler.transform(X_test)
rna = MLPRegressor(hidden_layer_sizes=(13,13,13), max_iter=2000)

rna.fit(X_train,y_train)

y_predicted = rna.predict(X_test)

# The coefficients
print('Coefficients: \n', r2_score(y_test, y_predicted))
python pandas scikit-learn neural-network evaluation
1个回答
0
投票

首先,

r2_score()
度量可以任意低。它不必在-1和1之间,并且不对应于皮尔逊相关系数。 〜-10 的分数仅意味着该模型的表现明显比输出平均值的模型差(对应于 r2 分数为 0)。

您选择的

r2_score()
是您模型的一个很好的初步指标。输出看起来很奇怪,不是因为度量有问题,而是因为模型有问题。在目前的状态下,改进
r2_score()
可能会改进任何其他感兴趣的指标。您可能还对测试集上的指标与训练集上的指标之间的“相似性”感兴趣 - 它们越相似,您的模型就越有可能很好地概括(在流形假设或任何其他框架下,避免没有自由午餐定理)。根据预期的应用,您可能会关心“最坏的情况”——如果最坏的情况是自动驾驶汽车将行人误认为是安全的驾驶地点,则 r2 为 0.999 可能并不重要。您可能对各种“校准分数”感兴趣 - 如果您的模型以良好的准确度预测了强模式,但“残差”显示模型中存在强烈偏差,则很可能存在问题。一般来说,模型的质量在很大程度上取决于其预期的应用,并且您的指标应该反映您的最终目标。以学习索引结构的案例为例,有时泛化是一件坏事,根本不是你想要的。 您的方法中存在几个潜在的问题。我不太确定冶金学,但许多化学问题都具有混沌的相互作用动力学,并且不容易用朴素的方法建模,它只是将模型打到输入数据上(这里的朴素并不是消极的意思——朴素的方法是通常是一个很好的起点,并且可以完全满足手头的要求)。 根据经验,您会发现的大部分收益都将来自特征工程。在化学问题的情况下,这可能涉及从问题的标准解决方案中获取输出(这显然是不够的,因为您直接进行机器学习)并将它们视为神经网络中的特征。这个想法是,即使没有一个单独的模型是完美的,它们也经常以不同的方式正确和错误,以便神经网络能够找出如何将它们组合在一起以创建更好的答案。这是一种集成技术。

您做了哪些数据可视化/分析?您是否知道哪些特征与您尝试预测的输出相对应?您所拥有的输入甚至可能没有足够的信息来预测您所需的输出。在删除 NaN 值之前您是否检查过数据?更好的插补方法会产生额外的收益吗?您的模型编码良好。 理解您的数据很容易成为手头最重要的任务。

Scikit-learn 在优化每层节点数量较少的网络时可能会出现问题。网格搜索和交叉验证过程有助于确定最佳参数,可以大大改进您的模型。该解决方案可能对公差和其他此类参数敏感。

© www.soinside.com 2019 - 2024. All rights reserved.