繁体   English   中英

是否可以将 np.array() 与列表一起用作输入?

[英]Is is possible to use np.array() with lists as inputs?

我正在构建我的 MLP 算法,我试图结合使用 k 折交叉验证和网格搜索来找到隐藏层/节点的最佳组合。

我最初尝试简单地改变 alpha 级别,它奏效了,我使用了:

from sklearn.model_selection import cross_val_score
import numpy as np
from sklearn.neural_network import MLPClassifier
import matplotlib.pyplot as plt 
import mglearn 

mlp = MLPClassifier()
param_grid = {'alpha': np.arange(0,1,0.5)}
knn_gscv = GridSearchCV(mlp, param_grid, cv=5)

#fit model to data
knn_gscv.fit(X, y)

#check top performing n_neighbors value
print("best alpha value is",knn_gscv.best_params_)
#check mean score for the top performing value of n_neighbors
print("best score best alpha",knn_gscv.best_score_)

这奏效了。 但是现在我试图改变隐藏层和节点的数量,并尝试了这个:

from sklearn.model_selection import cross_val_score
import numpy as np
from sklearn.neural_network import MLPClassifier
import matplotlib.pyplot as plt 
import mglearn 

mlp = MLPClassifier()
param_grid = {'hidden_layer_sizes': np.arange([10,10],[20,20],[30,30])}
knn_gscv = GridSearchCV(mlp, param_grid, cv=5)

#fit model to data
knn_gscv.fit(X, y)

#check top performing n_neighbors value
print("best alpha value is",knn_gscv.best_params_)
#check mean score for the top performing value of n_neighbors
print("best score best alpha",knn_gscv.best_score_)

但我收到一条错误消息。 我认为这是因为 np.array() 不能很好地将列表作为输入。 但我仍然相信我应该使用 np.array 因为这是使用网格搜索实现它的最简单方法。 有没有办法绕过它?

首先,

np.arange([10,10],[20,20],[30,30])永远不会工作。

甚至np.arange([[10,10],[20,20],[30,30]])如评论中所建议的那样。

两者都会提高:

类型错误:不支持 - 的操作数类型:“列表”和“列表”


简答

对于'hidden_layer_sizes' ,您需要一个元组列表。

例如param_grid = {'hidden_layer_sizes': [(10,10), (20,20)]}


长答案

要制作一系列元组,请使用以下内容:

start=10
stop=20
step = 5

param_grid = {'hidden_layer_sizes': 
               [(n, min(n+step, stop)) for n in range(start, stop, step)]}

param_grid
Out[29]: {'hidden_layer_sizes': [(10, 15), (15, 20)]}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM