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
在调试期间,我得到的查询结果如下: (6,1,1,1,2,u' F',1,0,0,19) 任何人都可以帮助我怎么做,我修复错误并给我的X_train赋予形状,以便MLP接受它作为输入?
答案 0 :(得分:6)
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]]