zoukankan      html  css  js  c++  java
  • day04-K-近邻算法

    
    # coding=utf-8
    from sklearn.datasets import load_iris
    from sklearn.preprocessing import StandardScaler,MinMaxScaler
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.model_selection import train_test_split
    
    def knc():
        # 水仙花数据
        # li.data 即为数据的特征值,是二维的
        # li.target 即为数据的目标值
        li = load_iris()
    
        # 准备数据
        x_train,x_test,y_train,y_test = train_test_split(li.data,li.target,test_size=0.25)
    
        # 标准化
        ss = StandardScaler()
        x_train = ss.fit_transform(x_train)
        # 需要用训练集的标准来标准化测试集
        x_test = ss.transform(x_test)
    
        print(x_train[:10])
    
        # 预测
        knn = KNeighborsClassifier(n_neighbors=4)
    
        knn.fit(x_train,y_train)
    
        print("预测的值为:",knn.predict(x_test))
        print("实际的值为:",y_test)
        print("预测的准确率为:",knn.score(x_test,y_test))
    
        return None
    
    if __name__ == '__main__':
        knc()
    
    
    

    结果

    
    [[-0.87970794  0.97328587 -1.29559474 -1.27424663]
     [-0.76085717  0.97328587 -1.2390009  -1.27424663]
     [ 0.78420285 -0.59356448  0.51540821  0.45968149]
     [ 1.85385979 -0.59356448  1.36431584  0.99319784]
     [ 1.25960594  0.07794281  0.68518973  0.45968149]
     [-1.71166333 -0.14589295 -1.35218859 -1.27424663]
     [ 0.54650131 -0.81740025  0.68518973  0.85981875]
     [ 1.0219044  -0.14589295  0.74178357  0.72643967]
     [-1.47396179  0.30177858 -1.29559474 -1.27424663]
     [-0.76085717 -0.81740025  0.11925131  0.32630241]]
    预测的值为: [1 2 1 0 2 2 1 2 0 0 1 0 1 1 2 0 2 2 2 1 0 1 0 2 1 1 2 2 0 0 0 1 1 2 0 2 2
     2]
    实际的值为: [1 2 2 0 2 2 1 2 0 0 1 0 1 2 2 0 2 2 1 1 0 1 0 2 1 1 2 2 0 0 0 1 1 2 0 2 1
     2]
    预测的准确率为: 0.8947368421052632
    
    

    K-近邻算法
    这个算法的思想很简单,使用类似两点之间距离计算的公式来计算训练集中所有的特征值与预测的数据的特征值,计算出其距离,然后选择距离最短的数据,即“邻居”
    正是由于这个思路,所以有异常点的话对预测的影响很大,所以需要对数据集进行标准化
    k的意思是几个邻居的意思,即几个与之距离最短的数据的目标值
    该算法适用于小数据场景,而且算法中的k需要自己去尝试

  • 相关阅读:
    第十五周学习进度
    梦断代码阅读笔记03
    第二阶段绩效评估
    团队十日冲刺20
    团队十日冲刺19
    团队十日冲刺18
    Java中的变量之成员变量、本地变量与类变量
    Java中new一个对象是一个怎样的过程?JVM中发生了什么?
    HashMap三百问
    容器之List接口下各实现类(Vector,ArrayList 和LinkedList)的线程安全问题
  • 原文地址:https://www.cnblogs.com/wuren-best/p/14269222.html
Copyright © 2011-2022 走看看