zoukankan      html  css  js  c++  java
  • 3 . 使用 scikit-learn 决策树实现简单预测

    各环境安装

    我使用的是python3环境

    安装scikit-learn:pip3 install scikit-learn

    安装numpy:pip3 install numpy

    安装scipy:pip3 install scipy

    安装matplotlib:pip3 install matplotlib

    我的原始数据是Excel文件,将它保存为csv格式,如allElectronicData.csv

    from sklearn.feature_extraction import DictVectorizer
    import csv
    from sklearn import preprocessing
    from sklearn import tree
    from sklearn.externals.six import StringIO
    
    allElectronicsData = open(r'C:UsersLenovoDesktopAllElectronics.csv','rt')
    #打开这个csv文件储存到allElectronicsData
    reader = csv.reader(allElectronicsData)#reader = csv.reader(f) 此时reader返回的值是csv文件中每行的列表,将每行读取的值作为列表返回,此时reader是一个列表
    headers = next(reader)#python中有个csv包(build-in),该包有个reader,按行读取csv文件中的数据,也就是读取列表中的数据
    #此时headers是特征列表
    
    #print(headers)
    featureList = []#创建两个列表
    labelList = []
    
    for row in reader:#遍历reader列表的每一行
        labelList.append(row[len(row)-1])#将reader的每一行的最后的元素添加到labelLiat列表的末尾(也就是yes 和 no 的那个属性)
        rowDict = {}
        for i in range(1,len(row)-1):#从第2列开始遍历当前一行的每一列属性元素
            rowDict[headers[i]] = row[i]#将每一行的特征和相对的属性生成一个字典
        featureList.append(rowDict)#把生成的字典加入到列表
    #print(featureList)
    
    vec = DictVectorizer()#把featureList列表特征向量化
    dummyX = vec.fit_transform(featureList).toarray()#然后转换成01列表
    
    #print('dummyx: '+str(dummyX))
    #print(vec.get_feature_names())#打印特征的名字
    
    #将预测数据二值化
    lb = preprocessing.LabelBinarizer()  #创建一个LabelBinarizer的实例lb
    dummyY = lb.fit_transform(labelList)  #调用 lb 的fit_transform函数,将yes 和 no 转化成01
    #print("dummyY: "+ str(dummyY))  #打印结果
    
    # 创建决策树
    clf=tree.DecisionTreeClassifier(criterion='entropy')#指明为那个算法
    clf=clf.fit(dummyX,dummyY)
    #print('clf:'+str(clf))
    
    
    # 预测数据
    one=dummyX[2, :]
    #print('one'+str(one))
    # one输出为one[1. 0. 0. 0. 1. 1. 0. 0. 1. 0.]
    # 上面的数据对应下面列表:
    #['age=middle_aged', 'age=senior', 'age=youth', 'credit_rating=excellent', 'credit_rating=fair', 'income=high', 'income=low', 'income=medium', 'student=no', 'student=yes']
    
    # 设置新数据
    new=one
    new[4]=1
    new[3]=0
    predictedY=clf.predict(new.reshape(-1,10))# 对新数据进行预测
    print('predictedY:'+str(predictedY)) # 输出为predictedY:[1],表示愿意购买,1表示yes
  • 相关阅读:
    [LUOGU] 1364 医院设置
    [POJ] 3278 Catch That Cow
    [OpenJudge] 2727 仙岛寻药
    [POJ] 2386 Lake Counting
    [POJ]1118 Lining up
    [LUOGU]1141 01迷宫
    [POJ]1111 Image Perimeters
    python之路——初识函数
    python----------文件操作
    Python中的split()函数的用法
  • 原文地址:https://www.cnblogs.com/Romantic-Chopin/p/12451077.html
Copyright © 2011-2022 走看看