это первый раз, когда я подхожу к анализу данных, и я пытаюсь выполнить задачу классификации. Я пытаюсь предсказать цену автомобиля. У меня есть следующий DataFrame (уже очищенный):
price vehicleType yearOfRegistration gearbox powerPS model kilometer fuelType brand notRepairedDamage
2 9000 suv 2004 automatik 163 grand 125000 diesel jeep not-declared
3 1500 kleinwagen 2001 manuell 75 golf 150000 benzin volkswagen nein
4 3000 kleinwagen 2008 manuell 69 fabia 90000 diesel skoda nein
6 1500 cabrio 2004 manuell 109 2_reihe 150000 benzin peugeot nein
8 12500 bus 2014 manuell 125 c_max 30000 benzin ford not-declared
... ... ... ... ... ... ... ... ... ... ...
371520 3000 limousine 2004 manuell 225 leon 150000 benzin seat ja
371524 1000 cabrio 2000 automatik 101 fortwo 125000 benzin smart nein
371525 9000 bus 1996 manuell 102 transporter 150000 diesel volkswagen nein
371526 3000 kombi 2002 manuell 100 golf 150000 diesel volkswagen not-declared
371527 25000 limousine 2013 manuell 320 m_reihe 50000 benzin bmw nein
Итак, как вы можете видеть, есть категориальные атрибуты. Поэтому я должен их кодировать. Я сделал это следующим образом:
encoding = DataFrameMapper([
(['vehicleType', 'gearbox', 'model', 'fuelType', 'brand', 'notRepairedDamage'],
OneHotEncoder(handle_unknown='ignore')),
(["yearOfRegistration", "powerPS", "kilometer"], OneHotEncoder(handle_unknown='ignore'))
])
encoding_target = DataFrameMapper([
(['price'], None)
])
Здесь я должен упомянуть, что у меня был столбец с названием «Имена» с именем и опционально для автомобиля. Мне пришлось отбросить это, поскольку в фрейме данных содержится 250 тыс. Строк, и если я пытаюсь кодировать этот столбец, я получаю ошибку памяти.
Затем я приступил к подгонке и преобразованию:
encoding.fit(data)
encoding_target.fit(data)
X = encoding.transform(data.loc[:, data.columns != "price"])
y = encoding_target.transform(data[['price']])
Затем я создал разделив поезд / тест
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = .2, random_state = 0)
, а затем просто вызвал конструктор дерева решений как:
tree = DecisionTreeClassifier()
tree.fit(X_train, y_train)
y_pred = tree.predict(X_test)
accuracy_score(y_test, y_pred)
Я получил оценку 0,38. Который действительно низкий. Итак, я хотел бы спросить вас, заключается ли проблема в том, как я кодирую фрейм данных для использования его со sklearn. Да, есть ли лучший способ? Таким образом, у меня также возникают проблемы с перекрестной проверкой, и я не чувствую, что фрейм данных полностью пригоден для использования с другими алгоритмами. Спасибо:)