Python で sklearn 0.14 モジュールを使用して決定木を作成しています。OneHotEncoder を使用して、いくつかの機能をカテゴリ機能に変換したいと考えていました。ドキュメントによると、どの機能を変換する必要があるかを示すインデックスの配列を提供できるはずです。ただし、次のコードを試してください。
xs = [[64, 15230], [3, 67673], [16, 43678]]
encoder = preprocessing.OneHotEncoder(n_values='auto', categorical_features=[1], dtype=numpy.integer)
encoder.fit(xs)
次のエラーが表示されます。
Traceback (most recent call last): File
"C:\Users\sara\Documents\Shipping
Project\PythonSandbox\CarrierDecisionTree.py", line 35, in <module>
encoder.fit(xs) File "C:\Python27\lib\site-packages\sklearn\preprocessing\data.py", line
892, in fit
self.fit_transform(X) File "C:\Python27\lib\site-packages\sklearn\preprocessing\data.py", line
944, in fit_transform
self.categorical_features, copy=True) File "C:\Python27\lib\site-packages\sklearn\preprocessing\data.py", line
795, in _transform_selected
return sparse.hstack((X_sel, X_not_sel)) File "C:\Python27\lib\site-packages\scipy\sparse\construct.py", line 417,
in hstack
return bmat([blocks], format=format, dtype=dtype) File "C:\Python27\lib\site-packages\scipy\sparse\construct.py", line 532,
in bmat
dtype = upcast( *tuple([A.dtype for A in blocks[block_mask]]) ) File "C:\Python27\lib\site-packages\scipy\sparse\sputils.py", line 53,
in upcast
raise TypeError('no supported conversion for types: %r' % (args,)) TypeError: no supported conversion for types: (dtype('int32'),
dtype('S6'))
代わりに、配列 [0, 1] を categorical_features に提供すると、正しく機能し、両方の機能が適切に変換されます。'all' を categorical_features に使用すると、同じ正しい動作が発生します。ただし、最初の機能ではなく、2 番目の機能のみを変換したいと考えています。一度に 1 つの機能を変換することで手動でこれを行うことができることは理解していますが、後でさらに多くの機能を使用するため、OneHotEncoder のすべての美しさを使用したいと考えていました。