Python 可以使用列表作为输入的np.array()吗?
我正在构建我的MLP算法,并尝试使用k-fold交叉验证与网格搜索相结合,以找到隐藏层/节点的最佳组合 起初,我只是尝试改变alpha水平,效果很好,我使用了:Python 可以使用列表作为输入的np.array()吗?,python,arrays,numpy,machine-learning,scikit-learn,Python,Arrays,Numpy,Machine Learning,Scikit Learn,我正在构建我的MLP算法,并尝试使用k-fold交叉验证与网格搜索相结合,以找到隐藏层/节点的最佳组合 起初,我只是尝试改变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
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]])
,正如评论中所建议的那样
双方都将提出:
TypeError:-:“list”和“list”的操作数类型不受支持
简短回答 对于
“隐藏的\u层大小”
,您需要一个元组列表
例如,param_grid={'hidden_layer_size':[(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)]}
请在问题中包含错误消息始终将完整的错误消息(从单词“Traceback”开始)作为文本(而不是屏幕截图)进行讨论(不是评论)。还有其他有用的信息。问题是
param_grid={'hidden_layer_size':np.arange([10,10],[20,20],[30,30])}
需要param_grid={'hidden_layer_size':np.arange([10,10],[20,20],[30,30])}
是的,你需要将这些排列好的列表对传递到一个列表中才能回答你的问题:是的,很有可能将列表作为输入传递。问题不是将其传递到np数组,而是将该numpy数组传递到SKL MLP。