问题标签 [mlp]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
874 浏览

python - 关于 Scikit-Learn 提前停止的问题

启用提前停止时,我对Scikit-Learn MLPRegressor有一些疑问:

  1. 验证数据(参见“validation_fraction”)是随机选择的,位于提供的测试数据的前面还是后面?

  2. 在训练的连续迭代过程中,验证数据是相同还是不同?

  3. 验证数据是否会在训练的最后阶段自动包含/重新调整?

  4. 当验证分数在 n_iter_no_change 连续 epoch 中至少没有提高 tol 时,会返回之前的最佳回归量,还是 fit() 函数会简单地返回最后一个回归量?

0 投票
0 回答
187 浏览

java - 在用于 MLP 模型的 Weka Java API 中将多个属性设置为类属性

我正在使用 weka API 处理单标签多类分类任务。我想通过从我的类属性列生成单热编码列来训练一个多层感知器模型来预测每个类的类百分比值。

在网上的例子中,在Weka Java API中生成Instances对象后,只选择了一个属性作为类属性。

关于示例:

数据上传

选择最后一个属性作为类属性

我在找什么:

选择多个属性作为类属性

我怎样才能做到这一点?

0 投票
1 回答
77 浏览

python - 为什么我的两个分类器不能预测很多标签?

我尝试比较分类器 RandomForest (RF)、SupportVectorMachine (SVM) 和 Multilayer Perceptron (MLP) 查看它们的classification_report. 它是对分类数据的多分类。相同的数据(378443 个条目,7 列)相同的 y_tain,相同的 y_test,。我检查了我的 y_train 和 y_test :

我看到两者都有相同的 31 个类。

但是在打印分类报告(y_train,y_pred)时我收到了这个警告:

UndefinedMetricWarning:精度和 F 分数定义不明确,在没有预测样本的标签中设置为 0.0。“精度”、“预测”、平均值、warn_for)

这意味着并非所有标签都包含在 y_pred 中,即 y_test 中有一些标签是分类器永远不会预测的。

使用 RF,一切正常(只有一个类在分类报告中获得 0.00 的精度和召回率)。

SVM 和 MLP 的分类报告在一半的类中包含 0.00s。

MLP 可以预测13 个类别(Precision/Recall 超过 0.00)class 1,2,3,4, 6, 8,9, 12, 14, 20,21, 23, 25:.

我所有的代码:

0 投票
1 回答
298 浏览

python - 通过哪种适用于时间序列的技术,我可以在 Python 中的 Keras MLP 回归模型中替换交叉验证

我目前正在处理一个包含 46 行的时间序列数据集,该数据集在一周内每天大约每 3 小时进行一次气象测量。我的解释变量 (X) 由 26 个变量组成,一些变量具有不同的测量单位(度、米、g/m3 等)。我要解释的变量(y)仅由一个变量温度组成。

我的目标是使用变量 (X) 的集合来预测 12h-24h 时隙上的温度 (y)

为此,我使用了 Keras Tensorflow 和 Python,以及 MLP 回归模型:

(1) 我读到交叉验证不适用于时间序列预测。所以,我想知道还有哪些其他技术存在,哪一种更适合时间序列。

(2) 其次,我决定对我的数据进行规范化,因为我的 X 数据集由不同的指标(度数、最小值、g/m3 等)组成,而我用来解释 y 的变量是以度数为单位的。通过这种方式,我知道必须处理对 MSE 的更复杂的解释,因为它的结果不会与我的 y 变量具有相同的统一性。但是对于我研究的下一步,我需要保存 y 预测的结果(由 MLP 模型生成),并且我需要这些值是度数。因此,我尝试反转归一化,但没有成功,当我打印结果时,预测值仍然是归一化格式(参见我上面的代码)。有人看到我的错误吗?

0 投票
0 回答
564 浏览

python - 如何使用 scikit-learn 在 MLPRegressor 中查看过拟合?

我正在尝试将 MLPRegressor 用于多变量回归问题。我想知道如何在训练时查看是否存在过拟合?

我可以使用 访问训练损失loss_curve_和验证分数validation_scores_,但我希望看到类似这样的验证损失:

在此处输入图像描述

我的代码如下:

0 投票
2 回答
1092 浏览

machine-learning - 即使在对数据集进行过采样之后,性能也非常低

我正在使用MLPClassifier心脏病分类。我曾经imblearn.SMOTE平衡每个班级的对象。我得到了非常好的结果(85% 的平衡acc。),但我被告知我不会用于SMOTE测试数据,只用于训练数据。在我做出这些改变之后,我的分类器的性能下降太多(大约 35% 的平衡准确度),我不知道哪里出了问题。

这是一个简单的基准测试,训练数据平衡但测试数据不平衡:

预测结果

这是代码:

我想知道我做错了什么,因为这似乎是准备数据的正确方法。

0 投票
1 回答
343 浏览

python-3.x - 发现样本数量不一致的输入变量:[2, 8382]

我的方法有 2 个输入数据模型网络

分支:49第一个分支由嵌入组成,然后是简单的多层感知器(MLP),旨在处理产品描述的输入。第二个分支是对产品图像数据进行操作的 CNN。然后将这些分支连接在一起形成最终分支。

问题是当我们尝试通过交叉验证使用 train_test_split 拆分数据时,它给出了这个错误。

MLP 和 CNN

错误发生在这里

0 投票
1 回答
211 浏览

python - 使用 GridsearchCV 为管道中的最佳模型提取 MLPRegressor 属性 (n_iter_)?

我用GridsearchCV管道制作了一个,我想提取n_iter_管道组件(MLPRegressor)的一个属性()以获得最佳模型。

我正在使用 Python 3.0。

管道的创建

当我想用 提取最佳模型时gridCV_GBR.best_params_,我只有 GridsearchCV 的结果:

但我想知道 MLPRegressor 的最佳模型使用的迭代次数gridCV_MLPR

如何通过 GridsearhCV 使用为通过管道n_iter_设计的属性?MLPRegressor()

0 投票
1 回答
2047 浏览

python - 使用 GridSearchCV 但不使用 GridSearchCV 时出错 - Python 3.6.7

我遇到了一个奇怪的错误,我的代码在使用时失败GridSearchCV,但在单独运行时却没有sklearnMLPRegressor

以下代码:

打印以下内容:

32.92041129078561 (是的,我知道平均错误很糟糕)

但是,当尝试优化参数时,同样的参数设置会产生错误:

产生以下结果:

为 9 个候选者中的每一个拟合 3 折,总共 27 次拟合 [Parallel(n_jobs=-1)]:使用后端 LokyBackend 和 8 个并发工作人员。[CV] 激活=身份,求解器=lbfgs ................... [CV] 激活=身份,求解器= lbfgs ................... [CV] 激活=身份,求解器=sgd .... ......................... C:\Python367-64\lib\site-packages\sklearn\neural_network_base.py:195: RuntimeWarning: 遇到溢出在平方返回 ((y_true - y_pred) ** 2).mean() / 2 [CV] activation=identity, solver=adam ..... ......... [CV] 激活=身份,求解器=lbfgs ................... .. [CV] 激活=身份,求解器=sgd .................. [CV] 激活=身份,求解器 = sgd ....................

<删除了工作正常的额外行>

!!!这是它开始失败的地方[CV] !!!!

.....................激活=relu,求解器=lbfgs,总计= 0.5s

joblib.externals.loky.process_executor._RemoteTraceback: """ Traceback (最近一次调用最后): 文件 "C:\Python367-64\lib\site-packages\joblib\externals\loky\process_executor.py",第 418 行,在 _process_worker r = call_item() 文件“C:\Python367-64\lib\site-packages\joblib\externals\loky\process_executor.py”,第 272 行,调用中 返回 self.fn(*self.args, ** self.kwargs) 文件“C:\Python367-64\lib\site-packages\joblib_parallel_backends.py”,第 567 行,调用 return self.func(*args, **kwargs) 文件“C:\Python367-64\ lib\site-packages\joblib\parallel.py”,第 225 行, 调用中 在 _passthrough_scorer 返回 estimator.score(*args, **kwargs) 文件“C:\Python367-64\lib\site-packages\sklearn\base.py”,第 410 行,得分 y_type, _, _, _ = _check_reg_targets (y, y_pred, None) 文件“C:\Python367-64\lib\site-packages\sklearn\metrics\regression.py”,第 79 行,_check_reg_targets y_pred = check_array(y_pred, ensure_2d=False) 文件“C: \Python367-64\lib\site-packages\sklearn\utils\validation.py",第 542 行,在 check_array allow_nan=force_all_finite == 'allow-nan') 文件 "C:\Python367-64\lib\site-packages \sklearn\utils\validation.py",第 56 行,在 _assert_all_finite 中引发 ValueError(msg_err.format(type_err, X.dtype)) ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). """ score(*args, **kwargs) 文件“C:\Python367-64\lib\site-packages\sklearn\base.py”,第 410 行,得分 y_type, _, _, _ = _check_reg_targets(y, y_pred,无)文件“C:\Python367-64\lib\site-packages\sklearn\metrics\regression.py”,第 79 行,在 _check_reg_targets y_pred = check_array(y_pred, ensure_2d=False) 文件“C:\Python367-64\ lib\site-packages\sklearn\utils\validation.py”,第 542 行,在 check_array allow_nan=force_all_finite == 'allow-nan') 文件“C:\Python367-64\lib\site-packages\sklearn\utils\ validation.py”,第 56 行,在 _assert_all_finite raise ValueError(msg_err.format(type_err, X.dtype)) ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). """ score(*args, **kwargs) 文件“C:\Python367-64\lib\site-packages\sklearn\base.py”,第 410 行,得分 y_type, _, _, _ = _check_reg_targets(y, y_pred,无)文件“C:\Python367-64\lib\site-packages\sklearn\metrics\regression.py”,第 79 行,在 _check_reg_targets y_pred = check_array(y_pred, ensure_2d=False) 文件“C:\Python367-64\ lib\site-packages\sklearn\utils\validation.py”,第 542 行,在 check_array allow_nan=force_all_finite == 'allow-nan') 文件“C:\Python367-64\lib\site-packages\sklearn\utils\ validation.py”,第 56 行,在 _assert_all_finite raise ValueError(msg_err.format(type_err, X.dtype)) ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). """ 无)文件“C:\Python367-64\lib\site-packages\sklearn\metrics\regression.py”,第 79 行,在 _check_reg_targets y_pred = check_array(y_pred, ensure_2d=False) 文件“C:\Python367-64\ lib\site-packages\sklearn\utils\validation.py”,第 542 行,在 check_array allow_nan=force_all_finite == 'allow-nan') 文件“C:\Python367-64\lib\site-packages\sklearn\utils\ validation.py”,第 56 行,在 _assert_all_finite raise ValueError(msg_err.format(type_err, X.dtype)) ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). """ 无)文件“C:\Python367-64\lib\site-packages\sklearn\metrics\regression.py”,第 79 行,在 _check_reg_targets y_pred = check_array(y_pred, ensure_2d=False) 文件“C:\Python367-64\ lib\site-packages\sklearn\utils\validation.py”,第 542 行,在 check_array allow_nan=force_all_finite == 'allow-nan') 文件“C:\Python367-64\lib\site-packages\sklearn\utils\ validation.py”,第 56 行,在 _assert_all_finite raise ValueError(msg_err.format(type_err, X.dtype)) ValueError: Input contains NaN, infinity or a value too large for dtype('float64'). """

上述异常是以下异常的直接原因:

回溯(最后一次调用):文件“mlp_optimizer.py”,第 93 行,在 grid_search.fit(X_train, y_train) 文件“C:\Python367-64\lib\site-packages\sklearn\model_selection_search.py​​”,行687,适合 self._run_search(evaluate_candidates) 文件“C:\Python367-64\lib\site-packages\sklearn\model_selection_search.py​​”,第 1148 行,在 _run_search evaluate_candidates(ParameterGrid(self.param_grid)) 文件“C: \Python367-64\lib\site-packages\sklearn\model_selection_search.py​​”,第 666 行,在 evaluate_candidates cv.split(X, y, groups))) 文件“C:\Python367-64\lib\site-packages\ joblib\parallel.py",第 934 行, 调用中 self.retrieve() 文件“C:\Python367-64\lib\site-packages\joblib\parallel.py”,第 833 行,在检索 self._output.extend(job.get(timeout=self.timeout)) 文件中“C:\Python367-64\lib\site-packages\joblib_parallel_backends.py”,第 521 行,在 wrap_future_result 返回 future.result(timeout=timeout) 文件“C:\Python367-64\lib\concurrent\futures_base.py” ,第 432 行,结果返回 self.__get_result() 文件“C:\Python367-64\lib\concurrent\futures_base.py”,第 384 行,在 __get_result 中引发 self._exception ValueError: Input contains NaN, infinity or a value too对于 dtype('float64') 来说很大。

为什么它在不使用时会起作用GridSearchCV,但使用GridSearchCV会导致它失败?

0 投票
1 回答
875 浏览

python - LIME 功能解释产生无效密钥错误

我有一个 MLPRegressor,它非常适合我的数据集。这是我的代码的精简版本,删除了一些不必要的东西:

而且效果很好!生产:Score: 7.246851606714535

但是,我想看看这个模型中的特征重要性。我知道这并不总是神经网络的重点,但这是一个商业理由,所以这是必要的。我通过LIME Paper发现了LIME,我想使用它。由于这是回归,我尝试在此处遵循示例

所以我添加了以下几行:

但现在得到错误:

为什么我会收到此错误,我该怎么办?我不明白如何正确集成 LIME。

我看到其他人也有这个问题,但我不知道如何解决