当我在 k 个最近的邻居中传递不同形式的 K 时出错(Scikit 学习)
Error when I pass a different form of K in knearest neighbours(Sci kit learn)
当 运行 在 scikit 中学习 k 个最近的邻居时,当我将 k 设置为 21 时,我得到值错误。但是当我将 k 设置为 k=np.arange(20) +1
时,我没有收到错误消息,那么这两者之间有什么区别呢?
k = np.arange(21)
parameters = {'n_neighbors': k}
knn = sklearn.neighbors.KNeighborsClassifier()
clf = sklearn.grid_search.GridSearchCV(knn, parameters, cv=10)
clf.fit(X_train, Y_train)
ValueError: Invalid shape in axis 1: 0.
也有人可以解释一下什么是
a = clf.grid_scores_
scores = [b.cv_validation_scores for b in a]
成绩输出如下:
array([ 1. , 0.90909091, 1. , 0.72727273, 0.9 ,
1. , 1. , 1. , 1. , 0.88888889]),
clf.grid_scores_
是分类器的准确性,但 cv_validation
分数是多少?
GridSearchCV
需要一个要搜索的每个参数的值列表。如果只想为搜索设置一个值,请将其放入列表中:
parameters = {'n_neighbors': [21]} # ok
parameters = {'n_neighbors': np.range(21)} # error, the first value is 0
parameters = {'n_neighbors': np.range(21) + 1} # ok
请注意,该列表中的每个值都应该是该参数的有效值。例如,使用 np.range(p)
作为 n_neighbors
的参数列表是错误的,因为它具有 0
,这是邻居数量的无效值。
根据 documentation,
cv_validation_scores
[is] the list of scores for each fold
因此 grid_scores_
必须是对应 cv_validation_scores
.
的平均值
当 运行 在 scikit 中学习 k 个最近的邻居时,当我将 k 设置为 21 时,我得到值错误。但是当我将 k 设置为 k=np.arange(20) +1
时,我没有收到错误消息,那么这两者之间有什么区别呢?
k = np.arange(21)
parameters = {'n_neighbors': k}
knn = sklearn.neighbors.KNeighborsClassifier()
clf = sklearn.grid_search.GridSearchCV(knn, parameters, cv=10)
clf.fit(X_train, Y_train)
ValueError: Invalid shape in axis 1: 0.
也有人可以解释一下什么是
a = clf.grid_scores_
scores = [b.cv_validation_scores for b in a]
成绩输出如下:
array([ 1. , 0.90909091, 1. , 0.72727273, 0.9 ,
1. , 1. , 1. , 1. , 0.88888889]),
clf.grid_scores_
是分类器的准确性,但 cv_validation
分数是多少?
GridSearchCV
需要一个要搜索的每个参数的值列表。如果只想为搜索设置一个值,请将其放入列表中:
parameters = {'n_neighbors': [21]} # ok
parameters = {'n_neighbors': np.range(21)} # error, the first value is 0
parameters = {'n_neighbors': np.range(21) + 1} # ok
请注意,该列表中的每个值都应该是该参数的有效值。例如,使用 np.range(p)
作为 n_neighbors
的参数列表是错误的,因为它具有 0
,这是邻居数量的无效值。
根据 documentation,
cv_validation_scores
[is] the list of scores for each fold
因此 grid_scores_
必须是对应 cv_validation_scores
.