RandomizedSearchCV と GridSearchCV で、fit メソッドを呼び出すと list オブジェクトに属性 'values' がないエラーが発生する。
[Pyhon version 3.5.0 skit-learn version <0.18.1> ]です。
昨日見つけた、RandomizedSearchCVがチューニングされない問題。
# Split the dataset in two equal parts
X_train, X_test, y_train, y_test = train_test_split(
data,label, test_size=0.25, random_state=0)
# Set the parameters by cross-validation
tuned_parameters = [{'n_neighbors': range(2,7)},
{'leaf_size':range(9,100,3)},
{'p':range(1,5)}]
svr = KNeighborsClassifier()
scores = ['precision', 'recall']
for score in scores:
print("# Tuning hyper-parameters for %s" % score)
print()
labels=y_train.values
aa
c, r = labels.shape
labels = labels.reshape(c,)
clf = RandomizedSearchCV(svr, tuned_parameters,cv=5,n_jobs=-1,verbose=3)
# clf = GridSearchCV(svr, tuned_parameters,cv=5,n_jobs=-1,verbose=3)
clf.fit(X_train, labels)
以下のようにエラーが報告されます。
File "C:\ProgramData\Anaconda3\lib\site-packages\spyder\utils\site\sitecustomize.py", line 102, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/gzhuangzhongyi/Desktop/NetEase/test/RandomSearchCV_Functional.py", line 46, in <module>
clf.fit(X_train, labels)
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", line 1190, in fit
return self._fit(x, y, groups, sampled_params)
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", line 564, in _fit
for parameters in parameter_iterable
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 758, in __call__
while self.dispatch_one_batch(iterator):
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 603, in dispatch_one_batch
tasks = BatchedCalls(itertools.islice(iterator, batch_size))
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\externals\joblib\parallel.py", line 127, in __init__
self.items = list(iterator_slice)
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", line 557, in <genexpr>
)(delayed(_fit_and_score)(clone(base_estimator), X, y, self.scorer_,
File "C:\ProgramData\Anaconda3\lib\site-packages\sklearn\model_selection\_search.py", line 230, in __iter__
for v in self.param_distributions.values()])
AttributeError: 'list' object has no attribute 'values'
フィット視聴後 メソッドで、どのように調整しても フィット メソッドのパラメータを指定しますが、どれもうまくいきません。
しかし、もしあなたが GridSearchCV が実行できるようになります。
クラスの実装を見てみると、どちらのクラスも同じように フィット メソッドですが フィット メソッドには暗黙のうちにパラメータが渡されます。
sampled_params = ParameterSampler(self.param_distributions,
self.n_iter,
random_state=self.random_state)
return self._fit(x, y, groups, sampled_params)
<スパン ここで sampled_params は、入力されるパラメータのサンプリングです。
その受信パラメータは、初期化時に渡される。
clf = RandomizedSearchCV(svr, tuned_parameters,cv=5,n_jobs=-1,verbose=3)
そして、このパラメータは次のように与えられます。
tuned_parameters = [{'n_neighbors': range(2,7)},
{'leaf_size':range(9,100,3)},
{'p':range(1,5)}]
ステートメントが設定されている、ここには3つの辞書があります。そして、正しいのは
tuned_parameters = [{'n_neighbors': range(2,7),
'leaf_size':range(9,100,3),
'p':range(1,5)}]
グリッド は、辞書にあるすべてのパラメータの組み合わせに対して反復処理されるので、辞書の分割は重要ではありません。
for p in self.param_grid:
# Always sort the keys of a dictionary, for reproducibility
items = sorted(p.items())
if not items:
yield {}
else:
keys, values = zip(*items)
for v in product(*values):
params = dict(zip(keys, v))
yield params
<スパン しかし ランダム化する。 辞書として渡された場合、その辞書の値を取る分布として扱われる
# Always sort the keys of a dictionary, for reproducibility
items = sorted(self.param_distributions.items())
for _ in six.moves.range(self.n_iter):
params = dict()
for k, v in items:
if hasattr(v, "rvs"):
if sp_version < (0, 16):
params[k] = v.rvs()
else:
params[k] = v.rvs(random_state=rnd)
else:
params[k] = v[rnd.randint(len(v))]
yield params
ランダム は入力された引数をチェックし、それがトラバース可能であればそれを分布と見なします。
として渡されたパラメータは フィット トラバース可能なオブジェクトの辞書としてではなく、パラメータのセットで .値 その代わり、配布要素をひとつずつ組み合わせて、辞書のように リスト が、ディストリビューションが渡される代わりに リスト だから、分布に値を取ることはできない。
上記2つの関数、GridSearchCVは、以下のようなパラメータセットを生成します。
RandomizeSearchCVで生成されたパラメータセットは、デバッグのチューニングができないため、表示することができません。
関連
-
ValueError: 入力に NaN、無限大、または dtype('float32'64) に対して大きすぎる値が含まれている 考えられる原因
-
pipインストール時のエラー ERROR: EnvironmentErrorのため、パッケージをインストールできませんでした。[WinError 5] アクセス拒否 (解決済み)
-
Keras、TensorFlowのインポート時にTensorFlowのネイティブランタイムのロードに失敗しました。
-
Solve ImportError: cannot import name 'AipOcr' from 'aip'
-
mac が正常に解決しました AttributeError: module 'enum' has no attribute 'IntFlag'?
-
ValueError: ubuntu の pycharm で matplotlib をインストールすると、 max() arg が空のシーケンスになる。
-
正規化にsoftmax関数を使用すると、「OverflowError: math range error」エラーが発生する。
-
Kerasを使ったテンソルの乗算と和算
-
Python プロンプト TypeError: write() の引数はバイトではなく str でなければなりません。
-
シグモイドとソフトマックスの概要
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
undefinedTenSorFlow警告 このTensorFlowバイナリが使用するためにコンパイルされていない命令を、あなたのCPUはサポートしています。AVX
-
Error: cudaGetDevice() failed. Status: CUDAドライババージョンがCUDAランタイムバージョンに対して不十分です。
-
ImportError: libGL.so.1: 共有オブジェクトファイルを開くことができません。
-
カーネル再始動
-
モジュール 'matplotlib.mlab' には属性 'normpdf' がありません。
-
tensorflowに一致するディストリビューションは見つかりませんでした。
-
ImportError: scipy.sparseという名前のモジュールはありません。
-
複数の要素を持つ配列の真偽値が曖昧である問題を解決する a.any() または a.all() を使用する。
-
呉恩陀ディープラーニング授業後プログラミング問題解説(python)
-
機械学習:マルチクラス形式はサポートされていません。