首页 > 解决方案 > 带有字符串和预测 int 的 DecisionTreeClassifier

问题描述

我有一个从我的数据库数据库部分获取一些数据的代码并不那么重要,因为我对数据进行了排序没有任何问题。

但问题是在 ML 部分我想拟合 3 个字符串和 1 个整数来给我一些预测

代码:

import mysql.connector
from sklearn import tree

cnx = mysql.connector.connect(user='amin', password='123', host='127.0.0.1', database='truecar')
cursor = cnx.cursor()

query = "SELECT * FROM cars;"
cursor.execute(query)

x = []
y = []

for (id, name, mileage, condition, price) in cursor:
    car_spec = []
    car_spec.append(name)
    car_spec.append(mileage)
    car_spec.append(condition)

    x.append(car_spec)
    y.append(price)

cnx.close()


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

错误是:

ValueError: could not convert string to float: 'Toyota FJ Cruiser'

我知道它不能是字符串,但有没有办法做到这一点?

我的数据示例:

['Toyota FJ Cruiser', '168,766 miles', '4 accidents, 3 Owners, Fleet use']
$12,999

我希望我的代码能够学习输入列表并根据这些数据为我预测价格(我知道价格也不是整数,但我可以处理它......我只想让 sklearn 基于字符串而不是浮点数来预测事物)

标签: pythonmachine-learningscikit-learn

解决方案


分类器通常不适用于字符串。您需要数据转换为数字。

您可以用数字将每个类表示为字符串,参见分类编码 ,或者用 0/1 矩阵表示它,如果类存在,则每个类都成为二进制列标记,参见One-hot Encoding

使用这两个关键字,您应该能够继续。


推荐阅读