【发布时间】:2021-01-25 22:17:28
【问题描述】:
所以我试图绘制这个函数的轮廓。代码如下:
#base packages
#import sympy as sp
#from sympy import *
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LogisticRegression
x = np.reshape(np.array([0,0,0,0.1,0.1,0.3,0.3,0.9,0.9,0.9]),(-1,1))
y = np.array([0.,0.,1.,0.,1.,1.,1.,0.,1.,1.])
def f(b0,b1,x,y):
vec = [y[i]*np.log(1/(1+np.exp(-b0-b1*x[i]))) + (1-y[i])*np.log(1 - (1/(1+np.exp(-b0-b1*x[i])))) for i in range(len(y))]
return np.sum(vec)
b00= np.linspace(-2,2,1000)
b11 = np.linspace(-2,2,1000)
xv, yv = np.meshgrid(b00,b11)
contours = plt.contour(x, y, f(xv,yv,x,y), 3, colors='black')
plt.clabel(contours, inline=True, fontsize=8)
plt.imshow(f(xv,yv,x,y), extent=[-10,10, -10, 10], origin='lower',
cmap='RdGy', alpha=0.5)
plt.colorbar()
但是,我得到了这个错误:
Input z must be 2D, not 0D
知道我该如何解决吗?谢谢!
【问题讨论】:
-
您可能应该告诉我们您使用的是什么编程语言!我认为这是 Python,SO 远不是一个纯 Python 的网站!
-
查看
f(xv,yv,x,y)本身(在调用contour之前)。确保它生成一个形状像x或y的值数组。即使您将数组传递给它,您也会返回np.sum(vec),它没有任何轴参数返回一个标量 - 它对 所有 值求和。
标签: python numpy matplotlib plot contour