機械学習実戦2-12-2

2523 ワード

機械学習実戦という本は私のような初心者に向いています.本では重要な機械学習アルゴリズムとpython実装コードを紹介した.プログラミング能力が一般的なため、私は勉強の過程で多くの分からないコードに出会った.心を込めて注釈をして、書き続けて、自分を向上させて、入門の学習者を助けることができることを望んでいます.筆者の能力には限界があり、間違ったところは読者に指摘して理解してほしい.
第二章K~近隣アルゴリズム
準備:
from numpy import*import operatordef createDataSet():group=array([1.0,1.1],[1.0,1.0],[0,0],[0,0.1])#データセット.4つの点座標labels=['A','A','B','B']#ラベルを含む
    return group,labels
プログラムリスト2-1
def classify0(inX,dataSet,labels,k):#inX:    ,dataSet:     ,   CReatDataSet     group,labels:    ,k           
    dataSetSize = dataSet.shape[0]#         
    diffMat = tile(inX,(dataSetSize,1)) - dataSet#tile        ,inX       ,   datasetsize ,  ,   dataset              
    sqDiffMat = diffMat**2#              ,           ,         
    sqDistances = sqDiffMat.sum(axis=1)#sum   axis 1     ,     0  ~
    distances = sqDistances**0.5#   ,         ,        
    sortedDistIndicies = distances.argsort()#                   (argsort  ),          ,    
    classCount = {}
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]#         K     ,sorteddistindicies[i]    group       , labels        
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1#             ,       +1,get        , voteilabel   ,      0
        sortedClassCount = sorted(classCount.iteritems(),key = operator.itemgetter(1),reverse = True)#sorted      , reverse True     ,operator   itemgetter  ,          。     iteritems() python3.0      ,   items(),          
        return sortedClassCount[0][0]#    ,                      
プログラムリスト2-2
#        Numpy     
def file2matrix(filename):
    fr = open(filename)#    ,           ,      ,    open('F:\\    \\MLiA_SourceCode\\machinelearninginaction\\Ch02\\datingTestSet.txt')
    arrayOLines = fr.readlines()#      ,         
    numberOfLines = len(arrayOLines)#      ,       
    returnMat = zeros((numberOfLines,3))#     numberOfLines ,3     
    classLabelVector = []
    index = 0
    for line in arrayOLines:
        line = line.strip()#strip           
        listFromLine = line.split('\t')#   tab('\t')              
        returnMat[index,:] = listFromLine[0:3]#listFromLine[0:3]       ,    returnMat[index,:]     ,      index   ,          index  
        classLabelVector.append(int(listFromLine[-1]))#    -1  ,          
        index += 1
        return returnMat,classLabelVector
自分でずっと书くことができることを望んで、同じくいくつかの人を助けることができることを望んで、みんなはいっしょに进歩します