Привет, ребята, я пытаюсь использовать 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
с ведьмой, с которой я не очень знаком и не могу понять, почему они ее используют.
любые идеи о том, как это исправить?