回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我试图在数据集的第3列中对有序的分类值进行编码,其中“Tiny Mongra”的值最小,“1st Wand”的值最高。它与使用小尺寸、中尺寸和大尺寸尺寸同义,当前数据集表示一粒大米的大小。在</p>
<p>运行此代码段时,我一直收到以下错误:</p>
<pre><code>Traceback (most recent call last):
File "<ipython-input-1-ae4501cc0ac1>", line 19, in <module>
X[:, 2] = ordinalencoder_X_3.fit_transform(X[:, 2])
File "/Users/anhad/anaconda3/lib/python3.6/site-packages/sklearn/base.py", line 462, in fit_transform
return self.fit(X, **fit_params).transform(X)
File "/Users/anhad/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/_encoders.py", line 794, in fit
self._fit(X)
File "/Users/anhad/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/_encoders.py", line 61, in _fit
X = self._check_X(X)
File "/Users/anhad/anaconda3/lib/python3.6/site-packages/sklearn/preprocessing/_encoders.py", line 47, in _check_X
X_temp = check_array(X, dtype=None)
File "/Users/anhad/anaconda3/lib/python3.6/site-packages/sklearn/utils/validation.py", line 552, in check_array
"if it contains a single sample.".format(array))
ValueError: Expected 2D array, got 1D array instead:
array=['1st Wand' '1st Wand' '1st Wand' ... '1st Wand' '1st Wand' '1st Wand'].
</code></pre>
<p>在进一步的检查中,我发现错误并不是警告我关于分类数据的列表,而是指我想要编码的列。出于某种原因,它认为列是一个1D数组:</p>
^{pr2}$
<p>这很奇怪,因为我使用LabelEncoder来拟合数据集中的其他分类值,它们工作得很好。在</p>
<p>这是一个数据链接。见“数据”表:</p>
<p><a href="https://docs.google.com/spreadsheets/d/12nAU5QztVnVroRYDsRDsZGUyBpBTwAD5yMmbMaAxnHQ/edit?usp=sharing" rel="nofollow noreferrer">https://docs.google.com/spreadsheets/d/12nAU5QztVnVroRYDsRDsZGUyBpBTwAD5yMmbMaAxnHQ/edit?usp=sharing</a></p>
<p>这是完整的代码。参考最后一部分:</p>
<pre><code>import numpy as np
import pandas as pd
# Importing the <a href="https://www.cnpython.com/pypi/dataset" class="inner-link">dataset</a>
dataset = pd.read_csv('Ryze Price NN Data.csv')
X = dataset.iloc[:, 1:7].values
y = dataset.iloc[:, 7].values
# Encoding categorical data
from sklearn.preprocessing import LabelEncoder, OneHotEncoder, OrdinalEncoder
labelencoder_X_1 = LabelEncoder()
X[:, 0] = labelencoder_X_1.fit_transform(X[:, 0])
labelencoder_X_2 = LabelEncoder()
X[:, 1] = labelencoder_X_2.fit_transform(X[:, 1])
# SEE THIS PART
category_array = ["Tiny Mongra","Mini Mongra","Mongra","Super Mongra","Mini Dubar","Dubar","Super Dubar","Mini Tibar","Tibar","Super Tibar","2nd Wand","Super 2nd Wand","1st Wand"]
ordinalencoder_X_3 = OrdinalEncoder(categories=category_array)
X[:, 2] = ordinalencoder_X_3.fit_transform(np.array(X[:,2])
</code></pre>
<p>我希望分类数据的编码如下:
“小猫鼬”应编码为0
.
.
“第一根魔杖”应编码为12</p>