1
sklearnホットエンコーダを使用している州でホットエンコーディングを実行しようとしています。sklearnを使用している州の1つのホットエンコーディング
State
0 FL
1 CA
2 MD
3 NY
4 NY
5 NY
6 NY
は私が書いた:ここに私のパンダのデータフレームです
from sklearn.preprocessing import OneHotEncoder
enc=OneHotEncoder(sparse=False)
enc.fit(data)
そして、ここでエラーです:私は理解していない
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-78-a0b336acd757> in <module>()
----> 1 enc.fit(data)
/anaconda/envs/env3_insight/lib/python3.6/site-packages/sklearn/preprocessing/data.py in fit(self, X, y)
1842 self
1843 """
-> 1844 self.fit_transform(X)
1845 return self
1846
/anaconda/envs/env3_insight/lib/python3.6/site-packages/sklearn/preprocessing/data.py in fit_transform(self, X, y)
1900 """
1901 return _transform_selected(X, self._fit_transform,
-> 1902 self.categorical_features, copy=True)
1903
1904 def _transform(self, X):
/anaconda/envs/env3_insight/lib/python3.6/site-packages/sklearn/preprocessing/data.py in _transform_selected(X, transform, selected, copy)
1695 X : array or sparse matrix, shape=(n_samples, n_features_new)
1696 """
-> 1697 X = check_array(X, accept_sparse='csc', copy=copy, dtype=FLOAT_DTYPES)
1698
1699 if isinstance(selected, six.string_types) and selected == "all":
/anaconda/envs/env3_insight/lib/python3.6/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
380 force_all_finite)
381 else:
--> 382 array = np.array(array, dtype=dtype, order=order, copy=copy)
383
384 if ensure_2d:
ValueError: could not convert string to float: 'NY'
。私は、ホットエンコーディングを行うことの全体的なポイントは、しばしば文字列の情報を数値に変換することだと考えました...なぜ文字列を浮動小数点に変換できないと言っていますか?
:
はになります。 – ayhan
OneHotEncoderは、[documentation suggests](http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html)のように、数値データのみを受け入れます。最初に、 'FL'の場合は1、 'CA'の場合は2など、いくつかの数値を割り当ててからOneHotEncodingを使用します。文字列を数値に変換するには、@ayhanの提案にしたがってLabelEncoderを使用します。 –