KNN初步

import tensorflow as tf
import matplotlib.pyplot as plt
#from tensorflow.examples.tutorials.mnist import input_data
import numpy as np
#from numpy import * #直接使用命名空间,后面不用使用.引用
import operator as op

def createData():
    group = np.array([[1, 1.1],
                      [1, 1],
                      [0, 0],
                      [0, 0.1]])
    labels = ['A', 'A', 'B', 'B']
    return group, labels
#k临近算法
# 计算数据集和当前点之间的距离
# 选择距离最小的k个点
# 从最近的k个点中按照投票方法统计出现各个标签出现次数放入classCount中
# 输入向量inx n行,两列
def classify(inX, dataSet, label, k):
    dataSetSize = dataSet.shape[0]
    diffMat = np.tile(inX, (dataSetSize, 1)) - dataSet
    sqdiffMat = diffMat**2 #只有在.dot才当做矩阵相乘
    sqDistance = sqdiffMat.sum(axis=1)
    distance = sqDistance**0.5
    sortdisindex = np.argsort(distance) #从小到大依次返回对应元素下标而非值
    classCount = {}
    for i in range(k):
        votelable = label[sortdisindex[i]]
        classCount[votelable] = classCount.get(votelable, 0)+1

    # 对字典排序方法: .iterms()得到字典返回的列表形似
    # a = {'a':1,'b':3} a.items() 返回a = [('a',1),('b',3)]
    # 使用operator.itemgetter(1)得到的是一个函数,用来得到一个列表中第几个元素
    # 使用sorted内置函数默认按从大到小顺序排列
    sortclassCount = sorted(classCount.items(), key=op.itemgetter(1), reverse=True)
    return sortclassCount[0][0] #sortclassCount ('A', 2)


group, labels = createData()
print(classify([0, 0], group, labels, 3))

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
决策树是一种经常用于分类和回归问题的机器学习算法。它基于一系列的决策规则和条件,通过逐步划分数据集来建立一个树状结构。每个内部节点代表一个特征或属性,每个分支代表该特征的可能取值,而每个叶节点代表一个类别或一个数值。通过在树上进行递归划分,我们可以根据输入特征的值来沿着树分支找到对应的类别或数值。 在构建决策树时,我们可以使用可视化来辅助决策树的生成过程,尤其在初步拟合阶段可以限制决策树的深度,这样可以更好地观察树的拟合情况并判断是否需要增加深度。此外,决策树还可以通过剪枝来防止过拟合,增强其泛化能力。剪枝包括预剪枝和后剪枝两种方法。 一个决策树的建立过程主要依赖于连续的逻辑判断来得出最后的结论。建立一棵决策树的关键在于如何选择合适的特征以及在每个内部节点如何进行划分。常用的划分准则包括基尼系数(CART决策树)等。 总之,决策树是一种常用的机器学习算法,它能够通过一系列的决策规则和条件来进行分类和回归任务。在决策树的构建过程中,可以使用可视化进行辅助观察和决策树的初步拟合情况,同时还可以通过剪枝方法来防止过拟合。决策树的建立过程主要依赖于逻辑判断和特征选择,其中常用的划分准则包括基尼系数等。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值