KNN(一)

对机器学习实战这本书的KNN部分进行整理,代码分两部分,一部分是myKNN.py,包含了所需的函数,另一部分是myKNN_run.py,对所需函数进行调用。python版本为3.X。

myKNN.py:

# coding: utf-8

# In[3]:


from numpy import *
import operator
import os

def classify0(inX, dataSet, labels, k):
    #inX:用于分类的输入向量,1*2
    #dataSet:训练样本集,4*2
    dataSetSize = dataSet.shape[0]
    #距离计算,用矩阵快
    diffMat = tile(inX, (dataSetSize, 1)) - dataSet# (A-B)
    #tile:重复
    sqDiffMat = diffMat**2
    sqDistances = sqDiffMat.sum(axis=1)
    distances = sqDistances**0.5
    #按距离从小到大排序
    sortedDistIndices = distances.argsort()
    #确定前k个点所在类别出现频率
    classCount = {}
    for i in range(k):
        voteIlabel = labels[sortedDistIndices[i]]
        classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1#字典统计每个label出现的次数
    #出现频率最高点为预测类别
    sortedClassCount = sorted(classCount.items(),key=operator.itemgetter(1),reverse=True)
    print(sortedClassCount)
    return sortedClassCount[0][0]

def file2matrix(filename):
    #将约会数据文件转成矩阵
    fr = open(filename)
    arrayOLines = fr.readlines()
    numberOfLines = len(arrayOLines)
    returnMat = zeros((numberOfLines,3))
    classLabelVector = []
    index = 0
    for line in arrayOLines:
        line = line.strip()
为了实现基于上述数据进行KNN(K-Nearest Neighbors)分类算法,您需要首先将提供的数据集处理成适合机器学习模型输入的形式,并选择一个合适的编程语言和库来编写分类器代码。这里提供一个使用Python语言结合`scikit-learn`库的基础示例流程: 1. **数据预处理**:给定的数据是以逗号分隔值形式存储的一维列表,我们需要将其转换为二维表格结构并区分特征与标签。由于缺乏具体目标变量定义,我们假设每行格式为`[特征1, 特征2, ..., 特征n, 标签]`。 2. **导入所需库**: ```python import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.neighbors import KNeighborsClassifier ``` 3. **加载数据**:将文本文件中的数据加载进NumPy数组中。 ```python data = np.genfromtxt('binary.txt', delimiter=',') ``` 4. **划分数据集**:将数据分为训练集和测试集。 ```python X = data[:, :-1] # 提取所有行的前n列作为特征 y = data[:, -1] # 取最后一列作为标签 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) ``` 5. **标准化特征**:对数值型特征进行标准化或归一化。 ```python scaler = StandardScaler() X_train = scaler.fit_transform(X_train) X_test = scaler.transform(X_test) ``` 6. **创建KNN分类器**:初始化并拟合模型。 ```python knn = KNeighborsClassifier(n_neighbors=3) # 假设邻居数量为3 knn.fit(X_train, y_train) ``` 7. **评估模型性能**:在测试集上评估准确率或其他评价指标。 ```python accuracy = knn.score(X_test, y_test) print(f'Accuracy: {accuracy}') ``` 请注意这个脚本只是一个基础框架,在实际应用时可能还需要进一步调整参数设置及验证策略等细节以优化模型表现。同时,请确保正确安装了所需的Python包并通过适当的方式指定输入文件路径。如果您的数据有特殊格式或者需要更复杂的预处理步骤,则需要相应地修改以上代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值