Scikit learn SGDClassizer可避免每次迭代对阵列造成的损失

Scikit learn SGDClassizer可避免每次迭代对阵列造成的损失,scikit-learn,gradient-descent,Scikit Learn,Gradient Descent,当我在scikit learn中训练SGDClassizer时,我可以打印出每次迭代的损失值(设置详细程度)。如何将值存储到数组中?根据此修改答案 通过sgdclassizer old_stdout = sys.stdout sys.stdout = mystdout = StringIO() 通过将verbose设置为1,将模型设置为打印其输出 clf = SGDClassifier(verbose=1) clf.fit(x_tr, y_tr) 获取SGDClassizer详细信息的输出

当我在scikit learn中训练SGDClassizer时,我可以打印出每次迭代的损失值(设置详细程度)。如何将值存储到数组中?

根据此修改答案

通过
sgdclassizer

old_stdout = sys.stdout
sys.stdout = mystdout = StringIO()
通过将
verbose
设置为
1
,将模型设置为打印其输出

clf = SGDClassifier(verbose=1)
clf.fit(x_tr, y_tr)
获取SGDClassizer详细信息的输出

sys.stdout = old_stdout
loss_history = mystdout.getvalue()
创建一个列表来存储损失值

loss_list = []
附加存储在损耗历史记录中的已打印损耗值

for line in loss_history.split('\n'):
    if(len(line.split("loss: ")) == 1):
        continue
    loss_list.append(float(line.split("loss: ")[-1]))
只是为了显示图表

plt.figure()
plt.plot(np.arange(len(loss_list)), loss_list)
plt.xlabel("Time in epochs"); plt.ylabel("Loss")
plt.show()
要将损失值保存到数组中

loss_list = np.array(loss_list)
loss_list = np.array(loss_list)