• 机器学习笔记(五) K-近邻算法


     K-近邻算法

    (一)定义:如果一个样本在特征空间中的k个最相似的样本中的大多数属于某一个类别,则该样本也属于这个类别。

    (二)相似的样本,特征之间的值应该是相近的,使用k-近邻算法需要做标准化处理。否则预测出来的效果很差。

    (三)算法的优缺点:

      优点:比较简单,易于实现,无需估计参数,无需训练。

      缺点:计算量大,内存开销大,必须指定k值,k值若选取不当则分类精度不能保证。

    (四)适用场景:适用于小数据场景,几千~几万个样本。

    实例:

    from sklearn.model_selection import train_test_split
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.preprocessing import StandardScaler
    import pandas as pd
    def knnCls():
        """
        k-邻近算法
        :return:
        """
        # 读取数据
        data=pd.read_csv('训练集数据文件的路径')
    
        # 处理数据
        # 1.根据查询的条件,选择特定范围的数据样本
        data=data.query("x>1.0 & x<1.25 & y>2.5 & y<2.75")
    
        # 处理时间数据  把时间戳变成有年月日时分秒的格式
        time_value=pd.to_datetime(data['time'],unit='s')
    
        # 把日期格式转化为字典
        time_value=pd.DatetimeIndex(time_value)
    
        # 构造一些特征
        data['day']=time_value.day    # data里面的特征多一个
        data['hour'] = time_value.hour
        data['weekday'] = time_value.weekday
    
        # 把时间戳特征删除
        data = data.drop(['time'],axis=1)   # 删除time这一列
    
        # 取出数据当中的特征值和目标值
        y=data['place_id']
        x=data.drop(['place_id'],axis=1)
    
        # 进行数据的分割,划分训练集和测试集数据
        x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.25)
    
        # 特征工程(标准化)
        std=StandardScaler()
        # 对测试集和训练集的特征值进行标准化
        x_train=std.fit_transform(x_train)
        x_test=std.fit_transform(x_test)
    
        # 进行算法流程
        knn=KNeighborsClassifier(n_neighbors=5)
        # fit ,predict,score
        knn.fit(x_train,y_train)
    
        # 得出预测结果
        y_predict=knn.predict(x_test)
    
        # 得出准确率
        print(knn.score(x_test, y_test))   # 通过第一个参数x_test可以算出预测的目标值
        return None
    
    
    if __name__=='__main__':
        knnCls()
  • 相关阅读:
    目前服务器所需要的技能
    c++11 初始化列表 bind function 示例
    c++11 时间相关操作练习
    C++ Crypto++ RSA加密资料收集
    多线程查找大量数据加锁的速度降低
    c++沉思录 学习笔记 第六章 句柄(引用计数指针雏形?)
    c++沉思录 学习笔记 第五章 代理类
    boost asio 一个聊天的基本框架
    c++11 并发 条件变量 超时等待的代码练习
    centos 6.5 hadoop 2.3 初配置
  • 原文地址:https://www.cnblogs.com/doctorXiong/p/10600907.html
Copyright © 2020-2023  润新知