import sklearn.neural_network,numpy,matplotlib.pyplot,hashlib,itertools
定义 测试网络(T, H, max_iter=200):
NN = sklearn.神经网络.MLPRegressor(
隐藏层大小=(4,4),
激活函数='tanh',
随机状态 = 1,
最大迭代数=max_iter
)
T = T.reshape(-1, 1)
NN.fit(T, H)
predictions = NN.predict(T)
score = NN.score(T, H)
返回 predictions, score
定义 数据生成器(N):
g = 重力加速度
numpy.random.seed(1)
T = numpy.random.rand(N)
T.sort()
H = g*(Ts**2)/2
返回 T, H
定义 学习曲线(N, max_iter, filename="test.png"):
( N: int, 数据点个数
max_iter: int, 训练神经网络的迭代次数
filename: str, 用于保存绘图的文件名 )
插入你的代码
matplotlib.pyplot.savefig(filename)
return hashlib.md5(open(filename, "rb").read()).hexdigest()
定义f(a, b, c):
返回 a+b, a-b, a*b
if name == "main":
import warnings
warnings.filterwarnings("ignore")
print (
learning_curve(100, 200, "test.png")
)
这个问题是给定了最后打印出来的哈希值是4b2737555fbaabffba658659a7cd53ed,如何把学习曲线的代码补充完整?要求是保留图像默认设置,只用蓝色线表示真实值,橙色线条表示预测值。学习曲线的得分score不需要求出来。不用tab键而是用四个空格缩。
如果您希望绘制学习曲线图,可以在数据生成器函数和测试网络函数中计算预测值和实际值,并使用Matplotlib绘制图像。下面是补充代码:
def learning_curve(N, max_iter, filename="test.png"):
T, H = data_generator(N)
predictions, score = test_network(T, H, max_iter)
plt.plot(T, H, 'b', label='real')
plt.plot(T, predictions, 'orange', label='prediction')
plt.legend(loc='best')
plt.savefig(filename)
return hashlib.md5(open(filename, "rb").read()).hexdigest()