sklearn处理有String类型的数据

sklearn处理有String类型的数据

  • 因为老师给的数据中既有数值型也有字符串类型的数据,用sklearn的时候会有"ValueError: could not convert string to float"的错误,意识到sklearn能直接处理的只有数值型的数据,花了一下午时间终于找到了一些一些解决方法。
    附上链接:数据预处理
    sklearn的决策树能够处理字符串数据吗
    一个讨论帖

最后自己的实现代码如下:

import graphviz
import pandas as pd
from sklearn import tree
from sklearn.model_selection import train_test_split

filename = 'crx.data'
re = pd.read_csv(filename)
data = re.dropna(axis=0, how='any')

data_symbol = data.iloc[:, 0:15]
data_target = data.iloc[:, 15]
# d = pd.get_dummies(data, sparse=True)
# print(data_symbol)
# print(data_target)
symbol = pd.get_dummies(data_symbol, sparse=True)

Xtrain,Xtest,Ytrain,Ytest = train_test_split(symbol,data_target,test_size=0.3)
# print(Xtrain)
# print(Xtest)
clf = tree.DecisionTreeClassifier()

clf = clf.fit(Xtrain,Ytrain)
score = clf.score(Xtest,Ytest)


dot_data = tree.export_graphviz(clf
                                ,class_names=["+","-"]
                                ,filled=True
                                ,rounded=True)


graph = graphviz.Source(dot_data)

graph.view()

部分数据如下,col16为分类标签
sklearn处理有String类型的数据_第1张图片
最后的决策树:
sklearn处理有String类型的数据_第2张图片
感觉特征标签应该再定义一下,之后应该会不断改进

你可能感兴趣的:(python,sklearn)