使用决策树预测隐形眼镜类型

任务描述

本关任务:编写一个例子讲解决策树如何预测患者需要佩戴的隐形眼镜类型。使用小数据集,我们就可以利用决策树学到很多知识:眼科医生是如何判断患者需要佩戴的镜片类型,一旦理解了决策树的工作原理,我们甚至也可以帮助人们判断需要佩戴的镜片类型。

相关知识

为了完成本关任务,你需要掌握:1.如何处理隐形眼镜数据集,2.如何使用决策树来进行预测

如何处理隐形眼镜数据集

隐形眼镜数据集包含很多患者眼部状况的观察条件以及医生推荐的隐形眼镜类型。隐形眼镜类型包括硬材质、软材质以及不适合佩戴隐形眼镜。数据来源于UCI数据库,为了更容易显示数据,我么对数据做了简单的更改。

  1. import pandas as pd
  2. if __name__ == '__main__':
  3. with open('lenses.txt', 'r') as fr: #加载文件
  4. lenses = [inst.strip().split('\t') for inst in fr.readlines()]#处理文件
  5. lenses_target = [] #提取每组数据的类别,保存在列表里
  6. for each in lenses:
  7. lenses_target.append(each[-1])
  8. lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate'] #特征标签
  9. lenses_list = [] #保存lenses数据的临时列表
  10. lenses_dict = {} #保存lenses数据的字典,用于生成pandas
  11. for each_label in lensesLabels: #提取信息,生成字典
  12. for each in lenses:
  13. lenses_list.append(each[lensesLabels.index(each_label)])
  14. lenses_dict[each_label] = lenses_list
  15. lenses_list = []
  16. print(lenses_dict) #打印字典信息
  17. lenses_pd = pd.DataFrame(lenses_dict) #生成pandas.DataFrame
  18. print(lenses_pd)

我们讲原始的数据信息进行处理,将原始数据处理成有序的数据。

数据处理

编程要求

根据提示,在右侧编辑器补充代码,添加使用决策树预测的代码

测试说明

平台会对你编写的代码进行测试:


开始你的任务吧,祝你成功!

代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from six import StringIO
from sklearn import tree

if __name__ == '__main__':
    with open('./src/step3/lenses.txt', 'r') as fr:                               #加载文件
        lenses = [inst.strip().split('\t') for inst in fr.readlines()]#处理文件
    lenses_target = []                                                #提取每组数据的类别,保存在列表里
    for each in lenses:
        lenses_target.append(each[-1])
    print(lenses_target)

    lensesLabels = ['age', 'prescript', 'astigmatic', 'tearRate']     #特征标签
    lenses_list = []                                                  #保存lenses数据的临时列表
    lenses_dict = {}                                                  #保存lenses数据的字典,用于生成pandas
    for each_label in lensesLabels:                                   #提取信息,生成字典
        for each in lenses:
            lenses_list.append(each[lensesLabels.index(each_label)])
        lenses_dict[each_label] = lenses_list
        lenses_list = []
    # print(lenses_dict)                                              #打印字典信息
    # print(lenses_dict)                                              #打印字典信息
    ###########
    # 请在此处添加你的代码
    lenses_pd = pd.DataFrame(lenses_dict)                             #生成pandas.DataFrame
    lenses_pd = lenses_pd[lensesLabels]
    print(lenses_pd)                                                  #打印pandas.DataFrame
    le = LabelEncoder()                                               #创建LabelEncoder()对象,用于序列化
    for col in lenses_pd.columns:                                     #为每一列序列化
        lenses_pd[col] = le.fit_transform(lenses_pd[col])
    print(lenses_pd)
    clf = tree.DecisionTreeClassifier(max_depth = 4)                  #创建DecisionTreeClassifier()类
    clf = clf.fit(lenses_pd.values.tolist(), lenses_target)         #使用数据,构建决策树
    #############

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值