数据科学入门_第十二章_k近邻法

k近邻法

1 模型

最近邻法要求的仅仅是:
• 某种距离的概念
• 一种彼此接近的点具有相似性质的假设

2 案例:最喜欢的编程语言

# 每一条记录都是([longitude, latitude], favorite_language)的形式
cities = [([-122.3 , 47.53], "Python"), # 西雅图
([-96.85, 32.85], "Java"), # 奥斯汀
([ -89.33, 43.13], "R"), # 麦迪逊
# ……还有很多记录
]

第一步最好是先根据数据作图

# 键是语言,值是成对数据(longitudes, latitudes)
plots = { "Java" : ([], []), "Python" : ([], []), "R" : ([], []) }
# 我们希望每种语言都能有不同的记号和颜色
markers = { "Java" : "o", "Python" : "s", "R" : "^" }
colors = { "Java" : "r", "Python" : "b", "R" : "g" }
for (longitude, latitude), language in cities:
	plots[language][0].append(longitude)
	plots[language][1].append(latitude)
# 对每种语言创建一个散点序列
for language, (x, y) in plots.iteritems():
	plt.scatter(x, y, color=colors[language], 
		marker=markers[language],
		label=language, zorder=10)
plot_state_borders(plt) # 假设我们有一个实现这一步的函数
plt.legend(loc=0) # 让matplotlib选择一个位置
plt.axis([-130,-60,20,55]) # 设置轴
plt.title("最受欢迎的编程语言")
plt.show()

3 维数灾难

在更高的维度上,k 近邻法会因为“维数灾难”而遇到麻烦,其根源在于高维空间过于巨大。高维空间内的点根本不会表现得彼此邻近。

思考这个问题的一个不同的方法涉及更高维空间的稀疏性。(原谅我数学太差了 难,这块我也没看懂)

4 延伸学习

scikit-learn 里有许多最近邻模型(http://scikit-learn.org/stable/modules/neighbors.html)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值