全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
1552 2
2022-02-21
# r2_dict = {}
# r2_list = []
# for i in range(1, 33):
#     for j in range(1, 17):
#         for k in range(1, 9):
#             ann = MLPRegressor(hidden_layer_sizes=(i, j, k), activation='relu', solver='adam',
#                                alpha=0.001,
#                                max_iter=10000)
#             ann.fit(X_train, Y_train)
#             y_test_pred = ann.predict(X_test)
#             r2 = 1 - sum((Y_test - y_test_pred) ** 2) / sum(Y_test ** 2)
#             r2_list.append(r2)
#             r2_dict[r2] = (i, j, k)
#             print('神经网络3', (i, j, k), r2_dict[max(r2_list)], max(r2_list))
请教下各位大佬,第一个代码循环求出最大的r2后,在第二个代码单独求解为什么结果不一样呢,设置了随机数 np.random.seed(12345)
ann3 = MLPRegressor(hidden_layer_sizes=(2, 10, 1), activation='relu', solver='adam', alpha=0.001, max_iter=10000)
ann3.fit(X_train, Y_train)
y_test_pred = ann3.predict(X_test)
r2 = 1 - sum((Y_test - y_test_pred) ** 2) / sum(Y_test ** 2)
print(r2)
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2022-2-22 15:21:48
个人感觉是第一段网格搜索时MLPRegressor初始化的权重和偏置矩阵和第二段代码不一致的原因
可以考虑向MLPRegressor中传入相同的random_state参数试试
而且最后找到的每层神经元数也怪怪的,一般后层的神经元数不会多于之前的层...再补充一下,如果只是需要最优的参数和模型,完全可以在搜索过程中保存下来,仅在有比当前更好的结果时进行更新~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2022-2-25 19:29:46
正直者之死 发表于 2022-2-22 15:21
个人感觉是第一段网格搜索时MLPRegressor初始化的权重和偏置矩阵和第二段代码不一致的原因
可以考虑向MLP ...
会是数据有问题么哈哈,不过我在每次循环后,都设置了np.random.seed()后结果就一样了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群