Python プロンプト TypeError: write() の引数はバイトではなく str でなければなりません。
2022-02-18 19:52:24
機械学習の実践」の決定木の章のコードを書き出していたとき、構築した木を保存して読み込もうとしたら
pickle.dump(inputTree, fw)
TypeError: write() の引数はbyteではなくstrでなければならない。
メッセージを見ると、write()の引数はバイトではなく、文字でなければならないとのことです。ざっと見た感じでは、どういう意味なのかさっぱりわかりませんでした。ソースコードを開くと、次のような記述がありました。
The optional *protocol* argument tells the pickler to use the
The optional *protocol* argument tells the pickler to use the given protocol; supported protocols are 0, 1, 2, 3 and 4.
default protocol is 3; a backward-incompatible protocol designed
for Python 3.
Specifying a negative protocol version selects the highest
The higher the protocol used, the
more recent the version of Python needed to read the pickle
produced.
The *file* argument must have a write() method that accepts a
It can thus be a file object opened for
BytesIO instance, or any other custom
BytesIO instance, or any other custom object that meets this interface.
If *fix_imports* is True and *protocol* is less than 3, pickle
will try to map the new Python 3 names to the old module names
used in Python 2, so that the pickle data stream is readable
with Python 2.
2段落目からカウントしてわかるように、この関数ではファイルをバイナリで読み書きする必要があるので、定義されている2つの関数(上の画像で青くマークされている) fw=open(filename,'w') and fr=open(filename,'r') を fw= open(filename,'wb') and fr=open(filename,'rb') に変更するだけでも問題は完全に解決するのですが、そのために、この関数は、(1)ファイル名(fw)、(fl)のように、バイナリで読み書きする必要があります。
関連
-
ValueError: 入力に NaN、無限大、または dtype('float32'64) に対して大きすぎる値が含まれている 考えられる原因
-
undefinedTenSorFlow警告 このTensorFlowバイナリが使用するためにコンパイルされていない命令を、あなたのCPUはサポートしています。AVX
-
Error: cudaGetDevice() failed. Status: CUDAドライババージョンがCUDAランタイムバージョンに対して不十分です。
-
Keras、TensorFlowのインポート時にTensorFlowのネイティブランタイムのロードに失敗しました。
-
ValueError: ubuntu の pycharm で matplotlib をインストールすると、 max() arg が空のシーケンスになる。
-
モジュール 'matplotlib.mlab' には属性 'normpdf' がありません。
-
ImportError: scipy.sparseという名前のモジュールはありません。
-
Kerasを使ったテンソルの乗算と和算
-
複数の要素を持つ配列の真偽値が曖昧である問題を解決する a.any() または a.all() を使用する。
-
呉恩陀ディープラーニング授業後プログラミング問題解説(python)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
pipインストール時のエラー ERROR: EnvironmentErrorのため、パッケージをインストールできませんでした。[WinError 5] アクセス拒否 (解決済み)
-
ImportError: libGL.so.1: 共有オブジェクトファイルを開くことができません。
-
カーネル再始動
-
RandomizedSearchCV と GridSearchCV で、fit メソッドを呼び出すと list オブジェクトに属性 'values' がないエラーが発生する。
-
Python on %matplotlib inline
-
tensorflowに一致するディストリビューションは見つかりませんでした。
-
tf.expand_dims および tf.squeeze 関数
-
機械学習:マルチクラス形式はサポートされていません。
-
ロジスティック回帰のエラー問題:警告メッセージ。1: glm.fit: アルゴリズムが集約されていない 2: glm.fit: 適合率が0か1の値で計算されている
-
DataFrame オブジェクトに dtype 属性がない