NumPy TypeError:只能将整数标量数组转换为标量索引

2024-10-04 01:35:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我想通过将physiological类附加到linnerud数据来创建linnerud_df数据帧

import numpy as np
import seaborn as sns; sns.set(style="ticks", color_codes=True)
import sklearn.datasets
import pandas as pd

linnerud = sklearn.datasets.load_linnerud()
linnerud_df = pd.DataFrame(
 data= np.c_[linnerud.data, [linnerud.target_names[v] for v in linnerud.target]],
 columns= linnerud.feature_names + ['physiological'])
cols = linnerud_df.columns.drop('physiological')
linnerud_df[cols] = linnerud_df[cols].apply(pd.to_numeric)
g = sns.pairplot(linnerud_df, hue='physiological')

错误:

TypeError                                 Traceback (most recent call

last) <ipython-input-137-aa5a883812a9> in <module>
      1 linnerud = sklearn.datasets.load_linnerud()
      2 linnerud_df = pd.DataFrame(
----> 3  data= np.c_[linnerud.data, [linnerud.target_names[v] for v in linnerud.target]],
      4  columns= list(linnerud.feature_names).append('physiological'))
      5 cols = linnerud_df.columns.drop('physiological')

<ipython-input-137-aa5a883812a9> in <listcomp>(.0)
      1 linnerud = sklearn.datasets.load_linnerud()
      2 linnerud_df = pd.DataFrame(
----> 3  data= np.c_[linnerud.data, [linnerud.target_names[v] for v in linnerud.target]],
      4  columns= list(linnerud.feature_names).append('physiological'))
      5 cols = linnerud_df.columns.drop('physiological')

TypeError: only integer scalar arrays can be converted to a scalar index

Tags: columnsinimporttargetdfdatanamesas
1条回答
网友
1楼 · 发布于 2024-10-04 01:35:58
In [2]: import sklearn.datasets
In [3]: linnerud = sklearn.datasets.load_linnerud()

In [5]: linnerud.target_names
Out[5]: ['Weight', 'Waist', 'Pulse']
In [6]: linnerud.target
Out[6]: 
array([[191.,  36.,  50.],
       [189.,  37.,  52.],
       [193.,  38.,  58.],
       [162.,  35.,  62.],
       [189.,  35.,  46.],
       [182.,  36.,  56.],
       [211.,  38.,  56.],
       [167.,  34.,  60.],
       [176.,  31.,  74.],
       [154.,  33.,  56.],
       [169.,  34.,  50.],
       [166.,  33.,  52.],
       [154.,  34.,  64.],
       [247.,  46.,  50.],
       [193.,  36.,  46.],
       [202.,  37.,  62.],
       [176.,  37.,  54.],
       [157.,  32.,  52.],
       [156.,  33.,  54.],
       [138.,  33.,  68.]])

target_names是一个列表,因此只能由标量(整数)索引target是一个二维数组,因此v是一个具有形状(3,)的一维数组。它不能用于索引名称

In [7]: linnerud.keys()
Out[7]: dict_keys(['data', 'feature_names', 'target', 'target_names', 'frame', 'DESCR', 'data_filename', 'target_filename'])

相关问题 更多 >