web-dev-qa-db-ja.com

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

デバッグ中、私が得たクエリ結果は次のようになります:(6、1、1、1、2、u'F '、1、0、0、19)誰でも私を助けることができますか、エラーを修正して形を与えます私のX_train、MLPが入力としてそれを受け入れるように?

6
Abbas Zahid

メッセージは明確です。 listにはメソッドがありませんaddordered(それは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]]