カテゴリカルデータをNo.HotEncoderに変換できませんでした -- python フィールド と one-hot-encoding フィールド 関連 問題

could not convert categorical data to number OneHotEncoder












1
vote

問題

日本語

カテゴリカルデータをPythonで1つのホットエンコーディングに変換するための簡単なコードがあります。

<事前> <コード> a,1,p b,3,r a,5,t

私はそれらをPython onehotencoderで変換しようとしました:

<事前> <コード> Frightened0

このコードは機能しないエラー

をスローしていません <事前> <コード> Frightened1

あなたは私を助けてもらえますか?

英語

I have a simple code to convert categorical data into one hot encoding in python:

a,1,p b,3,r a,5,t 

I tried to convert them with python OneHotEncoder:

from sklearn.cross_validation import train_test_split from sklearn.preprocessing import OneHotEncoder import pandas as pd import numpy as np  data = pd.read_csv("C:\test.txt", sep=",", header=None) one_hot_encoder = OneHotEncoder(categorical_features=[0,2]) one_hot_encoder.fit(data.values) 

This piece of code does not work and throws an error

ValueError: could not convert string to float: 't' 

Can you please help me?

</div
     
 
 

回答リスト

1
 
vote
vote
ベストアンサー
 

これを試してみてください:

<事前> <コード> from sklearn import preprocessing for c in df.columns: df[c]=df[c].apply(str) le=preprocessing.LabelEncoder().fit(df[c]) df[c] =le.transform(df[c]) pd.to_numeric(df[c]).astype(np.float)
 

Try this:

from sklearn import preprocessing  for c in df.columns:     df[c]=df[c].apply(str)     le=preprocessing.LabelEncoder().fit(df[c])     df[c] =le.transform(df[c])     pd.to_numeric(df[c]).astype(np.float) 
</div
 
 
1
 
vote

@ user3104352、

私は同じ行動に遭遇し、それがイライラすることを見つけました。

Scikit-Learnは、 categorical_features パラメータにある列を選択すると考える前に、 all データを数値化する必要があります。

具体的には、列選択は/sklearn/preprocessing/datapyの _transform_selected() メソッドで処理され、その方法の最初の行は

です。

<コード> interface PowerUpVisitor { visit(Invincibility powerUp); visit(Freeze powerUp); visit(Fright powerUp); } interface PowerUp { accept(PowerUpVisitor visitor); ... } class Freeze implements PowerUp { accept(PowerUpVisitor visitor) { visitor.visit(this); } } class PlayPowerUpSound implements PowerUpVisitor { visit(Invincibility powerUp) { playInvicibilitySound(); } ... } class RenderPowerUp implements PowerUpVisitor { visit(Invincibility powerUp) { renderInvisibility(); } ... } //In practice you would most likely reuse the same visitor instances somePowerUp.accept(new PlayPowerUpSound()); //to play sound somePowerUp.accept(new RenderPowerUp()); //to render 0 。

提供されたデータフレーム<コード> interface PowerUpVisitor { visit(Invincibility powerUp); visit(Freeze powerUp); visit(Fright powerUp); } interface PowerUp { accept(PowerUpVisitor visitor); ... } class Freeze implements PowerUp { accept(PowerUpVisitor visitor) { visitor.visit(this); } } class PlayPowerUpSound implements PowerUpVisitor { visit(Invincibility powerUp) { playInvicibilitySound(); } ... } class RenderPowerUp implements PowerUpVisitor { visit(Invincibility powerUp) { renderInvisibility(); } ... } //In practice you would most likely reuse the same visitor instances somePowerUp.accept(new PlayPowerUpSound()); //to play sound somePowerUp.accept(new RenderPowerUp()); //to render 1 のデータの がfloatに正常に変換できない場合、このチェックは失敗します。

SKLEARN.PREPROCESSING.NEHOTENCODERの文書は、その点で非常に誤解を招くことに同意します。

 

@user3104352,

I encountered the same behavior and found it frustrating.

Scikit-Learn requires all data to be numerical before it even considers selecting the columns provided in the categorical_features parameter.

Specifically, the column selection is handled by the _transform_selected() method in /sklearn/preprocessing/data.py and the very first line of that method is

X = check_array(X, accept_sparse='csc', copy=copy, dtype=FLOAT_DTYPES).

This check fails if any of the data in the provided dataframe X cannot be successfully converted to a float.

I agree that the documentation of sklearn.preprocessing.OneHotEncoder is very misleading in that regard.

</div
 
 

関連する質問

0  Sklearn OneHotEncoderが単一のデータフレーム列で機能しないのはなぜですか?  ( Why wont sklearn onehotencoder work with a single dataframe column ) 
単一のPandas DataFrame列の1ホットエンコーディングを取得しようとしています。これが私が持っているものです: <事前> <コード> OH_encoder = OneHotEncoder(handle_unknown='ignore', spars...

0  Pipeline + StandardScaler + OHE + CLF + GRIDSearchCV + ColumnTranFormer  ( Pipeline standardscaler ohe clf gridsearchcv columntranformer ) 
私のLILプロジェクトのためのPipeline + StandardScaler + OHE + CLF + GRIDSearchCV + ColumnTranFormerを使用してデータモデリングしようとしていました。 私はコードを除いてちょうど罰金を尽くす...

1  Pandas DataFrameのOnHotencodingとリスト  ( Onhotencoding and lists in a pandas dataframe ) 
Pandas DataFrame: <事前> <コード> import pandas as pd d={'col1':[[1,2,3],[4,5,6]],'col2':[[7,8,9],[10,11,12]]} df=pd.DataFrame(d) ...

1  NumpyのPythonのポジションのベクトルからのフォードループなしの1ホットエンコーディング?  ( One hot encoding without for loop from vector of positions in python with numpy ) 
私は私が「1ホットエンコード」したいデータをいくつか持っていて、それは位置の1次元ベクトルとして表されます。 x を TextView0 に展開できる関数はありません。 Jake Vanderplasの講演 <事前> <コード> TextView...

0  Pythonに「新しい.csvファイルに書き込む」または「新しい.csvファイルとして保存する方法」  ( How to write to new csv file or save as new csv file in python ) 
CSVファイルを持っている、私は1つのホットエンコードを適用したい、新しいデータフレーム(データセット)を新しいCSVファイルとして保存します。しかし、新しいファイルが保存されると、5行のダミーとオリジナルのデータセットのすべての行だけが書き込まれます。 ...

11  Chisel:効率的な1つのホットMUXを実装する方法?  ( Chisel how to implement a one hot mux that is efficient ) 
テーブルはテーブルを持っています。テーブルの各行には状態(レジスタ)が含まれています。特定の行を1つ選択するロジックがあります。 「選択された」信号を受信する1行だけが1行だけです。その後、選択された行からの状態がアクセスされます。状態の一部はモジュールのIO...

-1  トークン化された文字列をJavaScriptを使用して整数に変換します  ( Convert a tokenized string into integers by using javascript ) 
これを見ました質問同様の質問をしたいです。 ライブラリを使用せずに、このフォーマットのトークン化された文字列の配列を取りますか: <事前> <コード> UITableViewCells1 下記の辞書が表示されている場合は、トークン化配列と同じ形式を持つが、文...

53  複数のデータフレーム列でget_dummiesを実行しますか?  ( Running get dummies on several dataframe columns ) 
998877612 のような関数を慣性的に実行する方法は、単一の列を想定し、複数のDataFrame列に複数の列を返しますか? ...

6  DNAシーケンスのための1つの熱い符号化を生成する方法  ( How to generate one hot encoding for dna sequences ) 
私は一組のDNA配列に対して1つの熱い符号化を生成したいと思います。例えば、配列ACGTCCAは、転位方法で以下のように表すことができる。しかし、以下のコードは、垂直形でそれを好む水平方向の1つのホットエンコーディングを生成します。誰かが私を助けてくれる? <...

26  OneHotEncoderからの機能名  ( Feature names from onehotencoder ) 
私は1つのカテゴリカル変数を符号化するために、片側の変数を符号化しています(例:SEXとAGEGROUP)。エンコーダからの結果の結果名は、「x0_female」、 'x0_male'、 'x1_0.0'、 'x1_0.0'などのようなものです。 <事前> <...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有