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为分类标签
最后的决策树:
感觉特征标签应该再定义一下,之后应该会不断改进