AttributeError列表对象没有属性添加

Abb*_*hid 5 python numpy machine-learning scikit-learn

Python对我来说是新的,我正在使用python做一些机器学习代码.我的情况是我正在从我的sql读取数据并试图给这个数据一个形状,所以我可以用它来进行MLP训练.

我的代码如下:

connection = mysql.connector.connect(host='localhost', port=3306, user='root', passwd='mysql', db='medicalgame')

cur = connection.cursor()
query = ""
cur.execute(query)
# X_train will be a list of list and later we'll convert it to a numpy ndarray
X_train = []

for row in cur:
    X_train.add(row)
connection.close()

X_train should be ready
X_train = np.asarray(X_train)
print 'The shape of X_train is', X_train.shape
Run Code Online (Sandbox Code Playgroud)

在调试期间,我得到的查询结果是这样的:(6,1,1,1,2,u'F',1,0,0,19)任何人都可以帮助我怎么做,我修复错误并给出形状我的X_train,以便MLP接受它作为输入?

Jea*_*bre 7

信息很清楚.list没有方法,add因为它是有序的(它有一个dunder __add__方法,但这是在列表之间添加).你可以,insert但你想append.所以正确的方法是:

X_train = []

for row in cur:
    X_train.append(row)
Run Code Online (Sandbox Code Playgroud)

但是直接转换为列表的首选方式(迭代cur元素以简单且高效的方式创建列表):

X_train = list(cur)
Run Code Online (Sandbox Code Playgroud)

但是你不能这样做,因为你的列表包含虚假数据.幸运的是,您可以在嵌套列表解析中过滤掉它们,如下所示:

X_train = [[x for x in r if type(x)==int] for r in cur]
Run Code Online (Sandbox Code Playgroud)

这将构建您的列表列表,但过滤掉非整数值并将其提供给numpy.asarrayyield(使用您的示例数据):

[[ 6  1  1  1  2  1  0  0 19]
 [ 6  1  1  1  2  1  0  0 14]]
Run Code Online (Sandbox Code Playgroud)