美文网首页
新2019计划:机器学习100天—K近邻法【5】

新2019计划:机器学习100天—K近邻法【5】

作者: 克里斯托弗的梦想 | 来源:发表于2019-03-11 20:48 被阅读0次

    K近邻法

    k近邻算法是一种简单且也最常用的分类算法,它也可以应用回归计算。
    k-NN是无参数学习,这意味着它不会对底层数据的分布做出任何假设。
    若要对未标记的对象进行分类,则会计算该对象对标记的对象之间的距离,确定其k近邻点,然后使用周边数量最多的最近邻点的类标签来确定该对象的类标签。对于实际中输入的变量,最常用的距离度量是欧式距离。

    k值的确定:
    k值小意味着噪声会对结果产生较大的影响,而k值打则会使计算成本变高。这很大程度上取决于你的实际情况,有些情况下最好是遍历每个可能的k值,然后自己根据实际来选择k值。

    knn算法如何工作:
    k-nn用于分类时,输出是一个类别,对于离散分类,返回k个点出现频率最多的类别作为预测分类。其中有三个关键元素:一组标记的对象,例如:一组已存储的记录、对象之间的距离以及K的值-最近邻的数量。

    常见的距离度量方法
    1、汉明距离
    2、曼哈顿距离
    3、闵式距离

    数据集展示
    import numpy as np
    import matplotlib.pyplot as plt
    import pandas as pd
    
    dataset = pd.read_csv('Social_Netword_Ads.csv')
    X = dataset.iloc[:, [2, 3]].values
    y = dataset.iloc[:, 4].values
    
    # 数据集划分训练集和测试集
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state = 0)
    
    # 特征缩放
    from sklearn.preprocessing import StandardScaler
    sc = StandardScaler()
    X_train = sc.fit_transform(X_train)
    X_test = sc.transform(X_test)
    
    # k-nn对训练集数据训练
    from sklearn.neighbors import KNeighborsClassifier
    classifier = KNeighborsClassifier(n_neighbors = 5, metric = 'minkowski', p = 2)
    classifier.fit(X_train, y_train)
    
    # 对测试集进行预测
    y_pred = classifier.predict(X_test)
    
    # 生成混淆矩阵
    from sklearn.metrics import confusion_matrix
    cm = confusion_matrix(y_test, y_pred)
    

    相关文章

      网友评论

          本文标题:新2019计划:机器学习100天—K近邻法【5】

          本文链接:https://www.haomeiwen.com/subject/dnlipqtx.html