[英]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.