- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我一直在尝试使用 Sklearn 的神经网络 MLPClassifier。我有一个大小为 1000 个实例(带有二进制输出)的数据集,我想对其应用一个带有 1 个隐藏层的基本神经网络。
问题是我的数据实例并非同时可用。在任何时候,我都只能访问 1 个数据实例。我认为 MLPClassifier 的 partial_fit 方法可以用于此目的,所以我用一个包含 1000 个输入的假想数据集模拟了这个问题,并一次循环一个输入,并将 partial_fit 应用于每个实例,但是当我运行代码时,神经网络什么也没学到并且预测输出全为零。
我不知道是什么导致了这个问题。非常感谢任何想法。
from __future__ import division
import numpy as np
from sklearn.datasets import make_classification
from sklearn.neural_network import MLPClassifier
#Creating an imaginary dataset
input, output = make_classification(1000, 30, n_informative=10, n_classes=2)
input= input / input.max(axis=0)
N = input.shape[0]
train_input = input[0:N/2,:]
train_target = output[0:N/2]
test_input= input[N/2:N,:]
test_target = output[N/2:N]
#Creating and training the Neural Net
clf = MLPClassifier(activation='tanh', algorithm='sgd', learning_rate='constant',
alpha=1e-4, hidden_layer_sizes=(15,), random_state=1, batch_size=1,verbose= True,
max_iter=1, warm_start=True)
classes=[0,1]
for j in xrange(0,100):
for i in xrange(0,train_input.shape[0]):
input_inst = [train_input[i,:]]
input_inst = np.asarray(input_inst)
target_inst= [train_target[i]]
target_inst = np.asarray(target_inst)
clf=clf.partial_fit(input_inst,target_inst,classes)
#Testing the Neural Net
y_pred = clf.predict(test_input)
print y_pred
最佳答案
问题出在 multilayer_perceptron.py
的第 895 行中的 self.label_binarizer_.fit(y)
。
无论何时调用 clf.partial_fit(input_inst,target_inst,classes)
,您都会调用 self.label_binarizer_.fit(y)
,其中 y
在这种情况下,只有一个样本对应于一个类别。因此,如果最后一个样本属于 0 类,那么您的 clf
会将所有内容归类为 0 类。
作为临时修复,您可以在第 895 行编辑 multilayer_perceptron.py
。它位于类似于此 python2.7/site-packages/sklearn/neural_network/
在第 895 行,更改,
self.label_binarizer_.fit(y)
到
if not incremental:
self.label_binarizer_.fit(y)
else:
self.label_binarizer_.fit(self.classes_)
那样的话,如果您使用的是 partial_fit
,则 self.label_binarizer_
适合类而不是单个样本。
此外,您发布的代码可以更改为以下内容以使其工作,
from __future__ import division
import numpy as np
from sklearn.datasets import make_classification
from sklearn.neural_network import MLPClassifier
#Creating an imaginary dataset
input, output = make_classification(1000, 30, n_informative=10, n_classes=2)
input= input / input.max(axis=0)
N = input.shape[0]
train_input = input[0:N/2,:]
train_target = output[0:N/2]
test_input= input[N/2:N,:]
test_target = output[N/2:N]
#Creating and training the Neural Net
# 1. Disable verbose (verbose is annoying with partial_fit)
clf = MLPClassifier(activation='tanh', algorithm='sgd', learning_rate='constant',
alpha=1e-4, hidden_layer_sizes=(15,), random_state=1, batch_size=1,verbose= False,
max_iter=1, warm_start=True)
# 2. Set what the classes are
clf.classes_ = [0,1]
for j in xrange(0,100):
for i in xrange(0,train_input.shape[0]):
input_inst = train_input[[i]]
target_inst= train_target[[i]]
clf=clf.partial_fit(input_inst,target_inst)
# 3. Monitor progress
print "Score on training set: %0.8f" % clf.score(train_input, train_target)
#Testing the Neural Net
y_pred = clf.predict(test_input)
print y_pred
# 4. Compute score on testing set
print clf.score(test_input, test_target)
代码有 4 个主要更改。这应该可以让您对训练集和测试集都有很好的预测!
干杯。
关于python - partial_fit Sklearn 的 MLPClassifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35756549/
我一直在尝试使用 Sklearn 的神经网络 MLPClassifier。我有一个大小为 1000 个实例(带有二进制输出)的数据集,我想对其应用一个带有 1 个隐藏层的基本神经网络。 问题是我的数据
有什么方法可以利用应用于RandomForestRegressor的partial_fit()方法。目的是通过新的增量方式重用经过训练的模型。我不想使用常规 SGD.A示例代码会有很大帮助。 最佳答案
我正在使用 scikit-learn 和 SGD 分类器来小批量训练 SVM。这是一个小代码片段: for row in reader: if row[0] in model.docv
我正在尝试通过大量数据训练我的二元分类器。之前我可以通过sklearn的fit方法来完成训练。但现在,我有更多的数据,我无法应付它们。我正在尝试部分安装它们,但无法消除错误。如何增量训练我的海量数据?
如何在包裹在 Pipeline 中的 scikit-learn 分类器上调用 partial_fit() ()? 我正在尝试使用 SGDClassifier 构建一个可增量训练的文本分类器,例如: f
我一直在深入研究 github 页面并阅读文档,但我并不完全了解 HyperbandCV 是否有助于在我的案例中加速超参数优化。 我正在使用 SKLearn 的管道功能。我也在测试像 LinearRe
我对 sklearn.cluster.MiniBatchKMeans 感兴趣作为使用庞大数据集的一种方式。无论如何,我对 MiniBatchKMeans.partial_fit() 之间的区别有点困惑
我尝试通过 SGDClassifer.partial_fit 预测新添加的数据的标签,如下所示: from sklearn import neighbors, linear_model import
奇怪的是,fit 和 partial_fit 的代码似乎完全一样。 您可以在以下链接中查看代码: https://github.com/scikit-learn/scikit-learn/blob/c
我是一名优秀的程序员,十分优秀!