проблема с использованием sklearn DecisionTreeClassifier в базе данных, ValueError: неправильная форма ввода (1, 4) - PullRequest
0 голосов
/ 15 апреля 2020

Привет, ребята, я пытаюсь использовать tree.DecisionTreeClassifier() в базе данных, в которой есть строки (и целые числа в виде строки). Я использовал LabelEncoder() для кодирования своих данных, но поскольку я новичок в python, у меня возникли некоторые проблемы.

вот код:

import mysql.connector
from sklearn import tree , preprocessing


x=[]
y=[]

cnx = mysql.connector.connect(user='root',password='', host='localhost',database='bama')

cursor = cnx.cursor()
query = ('SELECT page, gheymat, karkard, colour, shahr, model FROM jadval')

cursor.execute(query)

le = preprocessing.LabelEncoder()
le_shahr = preprocessing.LabelEncoder()
le_colour = preprocessing.LabelEncoder()
le_model=preprocessing.LabelEncoder()

c=[]
s=[]
k=[]
m=[]

for row in cursor:

    fkarkard=row[2]
    fpage=row[0]
    fcolour=row[3]
    fshahr=row[4]
    fmodel=row[5]
    fgheymat=row[1]



    if 'نیست' not in fkarkard and 'توافق' not in fgheymat and 'حواله' not in fgheymat and 'توضیحات' not in fgheymat and 'اقساط' not in fcolour:

        c.append(fcolour)
        m.append(fmodel)
        s.append(fshahr)
        k.append(fkarkard)

        y.append([fgheymat])
    else:
        pass
cursor.close()
cnx.close()

g = le.fit_transform(c)
s = le_shahr.fit_transform(s)
m = le_model.fit_transform(m)
k = le.fit_transform(k)

y = le.fit_transform(y)

x = list(zip(k,g,s,m))




clf = tree.DecisionTreeClassifier()
clf = clf.fit(x,y)

new = le.fit_transform([['  60000 ', 'مشکی', 'تهران', 'کولیوس']])

вот пример x, y:

x[0]=['  60000 ', 'colour', 'city', 'model']
y[0]=['3400000']

проблема в том, что эта ошибка появляется:

A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().
  y = column_or_1d(y, warn=True)
Traceback (most recent call last):
  File "C:\Users\ralav\Documents\python\final_project\machine laerning.py", line 64, in <module>
    new = le.fit_transform([['  60000 ', 'مشکی', 'تهران', 'کولیوس']])
  File "C:\Users\ralav\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sklearn\preprocessing\_label.py", line 251, in fit_transform
    y = column_or_1d(y, warn=True)
  File "C:\Users\ralav\AppData\Local\Programs\Python\Python38-32\lib\site-packages\sklearn\utils\validation.py", line 797, in column_or_1d
    raise ValueError("bad input shape {0}".format(shape))
ValueError: bad input shape (1, 4)

я знаю, что другие люди задавали подобные вопросы, и я искал, но почти во всех из них они используют csvfile вместо базы данных и использования numpy и pandas с ведьмой, с которой я не очень знаком и не могу понять, почему они ее используют.

любые идеи о том, как это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...