python实现knn房价预测_机器学习:KNN算法Python实现

KNN(K-Nearest Neighbor) K 近邻算法,K近邻就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。KNN算法用于监督学习分类模型,预测结果是离散的机器学习算法。

KNN算法原理:

1、计算每个测试数据与每个训练数据的距离(相识度);

2、按照距离升序,对训练集数据进行排序;

3、获取距离最近的k个邻居,获取这k个邻居中的众数(取其中一个就行);

4、测试样本的预测结果就取众数的目标值。

KNN算法Python:手写数字案例

手写字为0,1构成的数字,为txt文件,首先我们将txt文件读取处理,32*32 展开成1024个特征值,txt文件名(7_151.txt)部分为目标值。

这样我们就可以构成训练集,测试集。

  手写数字txt文件,读取,并以numpy.ndarray的形式分别存为train.npy, test.npy。

import numpy as np

import os

def build_data(file_path):

"""

加载手写数字数据,转为numpy.ndarray

:param file_path: 文件路径

:return: data_arr 保存后的np.narray

"""

file_name_list = os.listdir(file_path)

data_arr = np.zeros(shape=(len(file_name_list), 1025))

for file_index, file_name in enumerate(file_name_list):

file_content = np.loadtxt(file_path + '/' + file_name, dtype=np.str)

file_str = ''.join(file_content)

data_arr[file_index, : 1024] = [int(s) for s in file_str]

data_arr[file_index, -1] = int(file_name.split('_', 1)[0])

return data_arr

def save_file(file_path, data):

"""

保存训练集、测试集数据

:param file_path: 文件路径

:param data: 要保存的数据

:return: None

"""

if not os.path.exists('./data'):

os.makedirs('./data')

np.save('./data/' + file_path, data)

print("{}保存成功!".format('./data/' + file_path + '.npy'))

def main():

train = build_data('./trainingDigits')

test = build_data('./testDigits')

print(train)

print(train.shape)

print(test)

print(test.shape)

save_file('train', train)

save_file('test', test)

if __name__ == '__main__':

main()

加载数据

数据集、测试集,前1024列为特征值,最后一列为目标值。实现knn算法

score_list 对应k_list的准确率,k值不同,准确率不同。结果展示

KNN算法的优点:

1、非常简单的分类算法没有之一,人性化,易于理解,易于实现;

2、适合处理多分类问题,比如推荐用户;

3、可用于数值型数据和离散型数据,既可以用来做分类也可以用来做回归;

4、对异常值不敏感。

KNN算法的缺点:

1、时间复杂度,空间复杂度高;

2、k值不同,预测结果会不同;

3、惰性学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值