import pandas as pd
from sklearn.preprocessing import LabelEncoder,OneHotEncoder
from sklearn.tree import DecisionTreeClassifier,export_graphviz
import pydotplus
import numpy as np
import graphviz
"""
函数说明:数据处理
Parameters:
filename - 数据文件
Returns:
"""
def dataDeal(filename):
with open(filename,'r') as fr:
lenses = [ins.strip().split('\t') for ins in fr.readlines()]
lenses_target = []
lincelist = []
linceDict = {}
for each in lenses:
lenses_target.append(each[-1]) # 目标
lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate'] # 特征标签
for label in lensesLabels:
for each in lenses:
lincelist.append(each[lensesLabels.index(label)])
linceDict[label] = lincelist
lincelist = []
lince_pd = pd.DataFrame(linceDict) # 将数据转化为DataFrame格式
le = LabelEncoder()
for col in lince_pd.columns:
lince_pd[col] = le.fit_transform(lince_pd[col]) # 数据序列化(对数据进行编码)
return lince_pd,lenses_target
if __name__ == '__main__':
lince_pd,lenses_target= dataDeal('lenses.txt')
clf = DecisionTreeClassifier(max_depth=4)
clf = clf.fit(lince_pd.values.tolist(),lenses_target)
print(clf.predict([[1,1,1,0]])) # 预测
lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate'] # 特征标签
dot_data = export_graphviz(clf, feature_names=lensesLabels, out_file=None)
dot = graphviz.Source(dot_data)
dot.view()
机器学习实战:决策树-隐形眼镜
最新推荐文章于 2022-08-02 15:45:26 发布