Python中文本数据的多输出分类器

2024-04-23 16:27:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用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

Tags: tofromtestimportdfmodel错误train
2条回答

这仅仅是因为分类器需要浮点值,而您提供的是字符串。您需要使用LabelEncoder为标签对字符串进行编码,并使用OneHotEncodingOrdinalEncoder等对特性进行编码

这里查看这些链接以获取有关使用sklearn编码分类(字符串)值的更多信息

更新 阅读Scikit的官方文档,学习对分类值进行编码at this link。你知道吗

代码中的第一个问题是需要对分类列进行编码,而且还需要onehotencoding。第二个问题是需要替换两个变量,即特性和结果

相关问题 更多 >