RandomForestClassfier.fit()。ValueError: 文字列をfloatに変換できませんでした。
2023-10-08 07:30:04
質問
簡単なCSVファイルがあります。
A,B,C
Hello,Hi,0
Hola,Bueno,1
もちろん、実際のデータセットはこれよりもはるかに複雑ですが、このデータセットではエラーが再現されます。私はこのデータに対して、以下のようにランダムフォレスト分類器を構築しようとしています。
cols = ['A','B','C']
col_types = {'A': str, 'B': str, 'C': int}
test = pd.read_csv('test.csv', dtype=col_types)
train_y = test['C'] == 1
train_x = test[cols]
clf_rf = RandomForestClassifier(n_estimators=50)
clf_rf.fit(train_x, train_y)
しかし、fit()を呼び出すとこのようなトレースバックが発生するだけです。
ValueError: could not convert string to float: 'Bueno'
scikit-learnのバージョンは0.16.1です。
どのように解決するのですか?
fitを使う前にエンコードをする必要があります。fit()は文字列を受け付けないとのことですが、これを解決する方法です。
使用できるクラスはいくつかあります。
- ラベルエンコーダ : 文字列をインクリメンタルな値に変換します。
- OneHotEncoder : One-of-K アルゴリズムを使用して、文字列を整数に変換します。
個人的には、ほぼ 同じ質問 を StackOverflow に投稿したことがあります。私はスケーラブルなソリューションを持ちたかったのですが、どんな回答も得られませんでした。私はすべての文字列を2値化するOneHotEncoderを選択しました。これは非常に効果的ですが、多くの異なる文字列がある場合、行列は非常に迅速に成長し、メモリが必要になります。
関連
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] 文字列をfloatやintにパースするにはどうしたらいいですか?
-
[解決済み] Pythonで文字列の部分文字列を取得するにはどうすればよいですか?
-
[解決済み] Pythonで文字列を小文字にするには?
-
[解決済み] モジュールの関数名(文字列)を使って、モジュールの関数を呼び出す。
-
[解決済み] 文字列が数値(float)であるかどうかを確認するにはどうすればよいですか?
-
[解決済み】文字列をdatetimeに変換する
-
[解決済み] 値で列挙名を取得する [重複]。
-
[解決済み] djangoのQueryDictをPythonのDictに変更するには?
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] PythonでのAWS Lambdaのインポートモジュールエラー
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] 2つの線分が交差しているかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonでコード行間にかかる時間を測定するには?
-
[解決済み] バブルソートの宿題
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] タプルのリストを複数のリストに変換するには?
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] pipの依存性/必要条件をリストアップする方法はありますか?