Python 将数据帧转换为numpy阵列时重塑形状
我有一个Pandas数据框架,它有4行和N列,我将1列作为分类器的特征。如下所示Python 将数据帧转换为numpy阵列时重塑形状,python,scikit-learn,Python,Scikit Learn,我有一个Pandas数据框架,它有4行和N列,我将1列作为分类器的特征。如下所示 0 [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0] 1 [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1] 2 [0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0] 3 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0,
0 [1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0]
1 [0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1]
2 [0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0]
3 [0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0]
该列本质上是16个二进制编码特征的列表
但当我把它输入分类器时,下面的错误出现了
Traceback (most recent call last):
clf.fit(X,y)
X, y = check_X_y(X, y, 'csr')
ensure_min_features, warn_on_dtype, estimator)
array = np.array(array, dtype=dtype, order=order, copy=copy)
ValueError: setting an array element with a sequence.
我想错误是因为fit方法需要一个NxM矩阵,而它得到的形状是
(4,)
所以基本上
我想尝试将形状(4,)转换为形状(4,16)
我尝试了以下功能:
X = np.asarray(train_data['presence_vector'])
X.reshape((4,16))
X = train_data['presence_vector'].values
X.reshape((4,16))
X = train_data['presence_vector'].as_matrix()
X.reshape((4,16))
这一切都不管用。本应该用通常的方法。如果有比下面更好的解决方案
reshaped=[]
for l in X:
reshaped.append(l)
X_new=np.array(reshaped)
print(X_new.shape)
(4, 16)
你只是不能将形状(4,)重塑为形状(4,16),因为它们有不同数量的元素。这不能解决你的问题(顺便说一句,这是完全不清楚的)。我知道在编程上这些“可能”有不同的元素,但我“知道”它总是有相同数量的元素。我只是想知道是否有一个没有循环的解决方案。