AttributeError列表对象没有添加属性



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
在调试期间,我得到的查询结果是这样的:(1, 1, 1, 2, u' f ', 1, 0, 0, 19)谁能帮助我如何,我可以修复错误,并给形状我的X_train,使MLP接受它作为输入?

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

X_train = []
for row in cur:
    X_train.append(row)

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

X_train = list(cur)

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

X_train = [[x for x in r if type(x)==int] for r in cur]

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

[[ 6  1  1  1  2  1  0  0 19]
 [ 6  1  1  1  2  1  0  0 14]]

相关内容

  • 没有找到相关文章

最新更新