Pandas 从列表到pd数据帧,再将问题重塑为神经网络的目标
我正在建立一个简单的神经网络,它是基于顺序的,并且从csv文件中检索列车测试数据。 共有13个特征,15个样本,目标是五个选项中的任意一个(例如,五种颜色中的任意颜色)。用作xtrain的13个特征值存储在13个不同的列中,这是预期的。详情如下:Pandas 从列表到pd数据帧,再将问题重塑为神经网络的目标,pandas,dataframe,neural-network,Pandas,Dataframe,Neural Network,我正在建立一个简单的神经网络,它是基于顺序的,并且从csv文件中检索列车测试数据。 共有13个特征,15个样本,目标是五个选项中的任意一个(例如,五种颜色中的任意颜色)。用作xtrain的13个特征值存储在13个不同的列中,这是预期的。详情如下: feat_1 feat_2 feat_3 ... feat_11 feat_12 feat_13 0 0.090826 0.923077 0.015069 ... 0.957858
feat_1 feat_2 feat_3 ... feat_11 feat_12 feat_13
0 0.090826 0.923077 0.015069 ... 0.957858 0.567030 0.526956
1 0.129642 0.910377 0.055787 ... 0.923693 0.567030 0.586102
2 0.116605 0.909931 0.000000 ... 0.884767 0.526956 0.586102
.
.
.
13 0.080155 0.919048 0.000000 ... 0.945022 0.586102 0.576427
14 0.124639 0.857820 0.279808 ... 0.937488 0.523185 0.576427
[15 rows x 13 columns] <class 'pandas.core.frame.DataFrame'> (15, 13)
feat_1 feat_2 feat_3。。。壮举11壮举12壮举13
0 0.090826 0.923077 0.015069 ... 0.957858 0.567030 0.526956
1 0.129642 0.910377 0.055787 ... 0.923693 0.567030 0.586102
2 0.116605 0.909931 0.000000 ... 0.884767 0.526956 0.586102
.
.
.
13 0.080155 0.919048 0.000000 ... 0.945022 0.586102 0.576427
14 0.124639 0.857820 0.279808 ... 0.937488 0.523185 0.576427
[15行x 13列](15,13)
但是目标(y_列)不在不同的列中,而不是在一列中,并且每个y_列都保存为列表。当它被称为y_train时,它看起来是这样的:
0 [1, 0, 0, 0, 0]
1 [0, 0, 1, 0, 0]
.
.
13 [0, 0, 0, 1, 0]
14 [0, 1, 0, 0, 0]
Name: target_comb_list, dtype: object <class 'pandas.core.series.Series'> (15,) ytrain
0[1,0,0,0,0]
1 [0, 0, 1, 0, 0]
.
.
13 [0, 0, 0, 1, 0]
14 [0, 1, 0, 0, 0]
名称:target\u comb\u list,数据类型:object(15,)ytrain
当输入到培训中时,显示错误:
ValueError:为输出传递了形状为(15,1)的目标数组
当用作损失时的形状(无,5)binary\u交叉熵
我认为这个问题可以通过将pd.series列表转换成pd.dataframe来解决,但我没有成功。我试图将其转换为数据帧
y_列=pd.数据帧(y_列)
但它显示了以下错误:
ValueError:为输出传递了形状为(15,1)的目标数组
形状(无,5)
我还尝试将每个列表更改为系列,而不是放入数据帧,但也失败了。
有什么最佳方法可以解决此问题吗?您可以先将其强制转换为列表,将其转换为numpy数组:
np.array(list(target_comb_list))
然后,如有必要,您可以将其转换为数据帧:
pd.DataFrame(np.array(list(target_comb_list)))
您使用什么创建网络?尝试将y数组转换为15x5 numpy数组。我认为
DataFrame.explode
在这里可能有用。@Robby:我试图将整个系列更改为np.array,然后再更改为DataFrame。我还尝试将该系列的每个元素(实际上是“列表”)更改为np数组,然后更改为df。但这两个案例都失败了,发生了什么?我尝试了上面的代码,它可以很好地处理与您类似结构的数据。它在形状上显示了相同的错误。然后我使用了DataFrame.explode
,然后对其进行了重塑。现在它正在工作。