• 大小: 481KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-05-23
  • 语言: 其他
  • 标签:

资源简介

资源为机器学习实战第二章kNN所需相关代码和数据集,大家有用的可以下载哈

资源截图

代码片段和文件信息

# -*- coding: cp936 -*-
# 1:约会网站
from numpy import *
import operator
from os import listdir

#创造数据集
def createDataSet():
    group = array([[1.0 1.1] [1.0 1.0] [0 0] [0 0.1]])
    labels = [‘A‘ ‘A‘ ‘B‘ ‘B‘]
    return group labels

#第一个kNN分类器  inX-测试数据 dataSet-样本数据  labels-标签 k-邻近的k个样本
def classify0(inXdataSet labels k):
    #计算距离
    dataSetSize = dataSet.shape[0]
    diffMat = tile(inX (dataSetSize1))- dataSet
    sqDiffMat = diffMat ** 2
    sqDistances = sqDiffMat.sum(axis = 1)
    distances = sqDistances **0.5
    sortedDistIndicies = distances.argsort()
    classCount = {}
    #选择距离最小的k个点
    for i in range(k):
        voteIlabel = labels[sortedDistIndicies[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel0)+1
    #排序
    sortedClassCount = sorted(classCount.iteritems() key = operator.itemgetter(1)reverse = True)
    return sortedClassCount[0][0]


# 将文本记录到转换numPy的解析程序
def file2matrix(filename):
    #打开文件并得到文件行数
    fr = open(filename)
    arrayOLines = fr.readlines()
    numberOfLines = len(arrayOLines)
    #创建返回的numPy矩阵
    returnMat = zeros((numberOfLines 3))
    classLabelVector = []
    index =0
    #解析文件数据到列表
    for line in arrayOLines:
        line = line.strip()
        listFormLine = line.split(‘\t‘)
        returnMat[index:] = listFormLine[0:3]
        classLabelVector.append(int(listFormLine[-1]))
        index += 1
    return returnMat classLabelVector

#归一化特征值
def autoNorm(dataSet):
    minVals = dataSet.min(0);
    maxVals = dataSet.max(0);
    ranges = maxVals - minVals;
    normDataSet = zeros(shape(dataSet))
    m = dataSet.shape[0]
    normDataSet = dataSet - tile(minVals (m1))
    normDataSet = normDataSet/tile(ranges(m1))
    return normDataSet ranges minVals


#测试代码
def datingClassTest():
    hoRatio = 0.10    #测试数据占的百分比
    datingDataMat datingLabels = file2matrix(‘datingTestSet2.txt‘)
    normMat ranges minVals = autoNorm(datingDataMat)
    m = normMat.shape[0]
    numTestVecs = int(m*hoRatio)
    errorCount = 0.0
    for i in range(numTestVecs):
        classifierResult = classify0(normMat[i:] normMat[numTestVecs:m:]datingLabels[numTestVecs:m]3)
        print ‘the classifier came back with: %d the real answer is: %d‘ %(classifierResult datingLabels[i])
        if(classifierResult != datingLabels[i]): errorCount += 1.0
    print “the total error rate is: %f “ % (errorCount/float(numTestVecs))
    

#输入某人的信息,便得出对对方喜欢程度的预测值
def classifyPerson():
    resultList = [‘not at all‘ ‘in small doses‘ ‘in large doses‘]
    percentTats = float(raw_input(“percentage of time spent playing video games?“))
    ffMiles = float(raw_input(“frequent flier miles earned per year?“))
    iceCream = float(raw_input(“liters of ice cream consumed per year?“))
    datingDataMat datingLabels = file2matrix(‘datingTestSet2.txt‘)
    normMat ranges minVals = autoNorm(datingDataMat)
    inArr = array([ffMiles

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       4930  2014-07-18 16:26  kNN.py

     文件       1088  2010-10-07 21:35  testDigits\0_0.txt

     文件       1088  2010-10-07 21:35  testDigits\0_1.txt

     文件       1088  2010-10-07 21:35  testDigits\0_10.txt

     文件       1088  2010-10-07 21:35  testDigits\0_11.txt

     文件       1088  2010-10-07 21:35  testDigits\0_12.txt

     文件       1088  2010-10-07 21:35  testDigits\0_13.txt

     文件       1088  2010-10-07 21:35  testDigits\0_14.txt

     文件       1088  2010-10-07 21:35  testDigits\0_15.txt

     文件       1088  2010-10-07 21:35  testDigits\0_16.txt

     文件       1088  2010-10-07 21:35  testDigits\0_17.txt

     文件       1088  2010-10-07 21:35  testDigits\0_18.txt

     文件       1088  2010-10-07 21:35  testDigits\0_19.txt

     文件       1088  2010-10-07 21:35  testDigits\0_2.txt

     文件       1088  2010-10-07 21:35  testDigits\0_20.txt

     文件       1088  2010-10-07 21:35  testDigits\0_21.txt

     文件       1088  2010-10-07 21:35  testDigits\0_22.txt

     文件       1088  2010-10-07 21:35  testDigits\0_23.txt

     文件       1088  2010-10-07 21:35  testDigits\0_24.txt

     文件       1088  2010-10-07 21:35  testDigits\0_25.txt

     文件       1088  2010-10-07 21:35  testDigits\0_26.txt

     文件       1088  2010-10-07 21:35  testDigits\0_27.txt

     文件       1088  2010-10-07 21:35  testDigits\0_28.txt

     文件       1088  2010-10-07 21:35  testDigits\0_29.txt

     文件       1088  2010-10-07 21:35  testDigits\0_3.txt

     文件       1088  2010-10-07 21:35  testDigits\0_30.txt

     文件       1088  2010-10-07 21:35  testDigits\0_31.txt

     文件       1088  2010-10-07 21:35  testDigits\0_32.txt

     文件       1088  2010-10-07 21:35  testDigits\0_33.txt

     文件       1088  2010-10-07 21:35  testDigits\0_34.txt

............此处省略2857个文件信息

评论

共有 条评论

相关资源