我想用scikit learn lib在Python中创建MultiOutputClassifier。我想知道模型的特点和准确性。 我数据库中的所有数据都是分类的(字符串值)。 我知道为什么,但我总是得到这个错误:
ValueError: could not convert string to float: '<=50K'
错误在这行:
model = cls.fit(features_train, result_train)
代码如下:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn import tree
from sklearn.multioutput import MultiOutputClassifier
df = pd.read_csv('income_education.csv')
#creating features and results for my model
features = df.iloc[:,-1]
results = df.iloc[:,:-1]
#spliting my data into train and test
features_train, features_test, result_train, result_test = train_test_split(features, results, test_size = 0.3, random_state = 42)
classifier = MultiOutputClassifier(tree.DecisionTreeClassifier())
#model fitting
cls = classifier
model = cls.fit(features_train, result_train)
pred = model.predict([cv.transform(['more'])])
print(pred)
# How to check accuracy of this classifier
这仅仅是因为分类器需要浮点值,而您提供的是字符串。您需要使用LabelEncoder为标签对字符串进行编码,并使用OneHotEncoding、OrdinalEncoder等对特性进行编码
这里查看这些链接以获取有关使用sklearn编码分类(字符串)值的更多信息
更新 阅读Scikit的官方文档,学习对分类值进行编码at this link。你知道吗
代码中的第一个问题是需要对分类列进行编码,而且还需要onehotencoding。第二个问题是需要替换两个变量,即特性和结果
相关问题 更多 >
编程相关推荐