L's tale


  • 首页

  • 归档

  • 标签

  • 分类

  • 关于

KNN算法-初步了解

发表于 2018-05-27 | 分类于 机器学习

       最近闲暇时间研究一下机器学习的算法应用,随笔记录一些自己看到的精华部分和实验结果,先从最简单的邻近算法开始吧。

算法实现思想

       邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一。所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。

使用场景

       kNN算法的核心思想是如果一个样本在特征空间中的k个最相邻的样本中的大多数属于某一个类别,则该样本也属于这个类别,并具有这个类别上样本的特性。该方法在确定分类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 kNN方法在类别决策时,只与极少量的相邻样本有关。由于kNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,kNN方法较其他方法更为适合

重点参数

  • n_neighbors:指定K值(参考K个邻居的值)
  • weights:权重
    • uniform:k个邻居的权重平等
    • distance:距离越近权重越高
    • callable:自定义举例与权重的关系
  • algorithm:算法
    • ball_tree
    • kd_tree
    • brute
    • auto:交给fit函数决定算法

实验

       利用datasets库生成200个样本分为3类,并取样本的X,Y的最大最小值分别±1,为测试样本的最大最小值,步长为0.02生成测试集合,具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/usr/bin/python
# -*- coding: UTF-8 -*-

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import ListedColormap
from sklearn import neighbors
from sklearn.datasets.samples_generator import make_classification
# 生成样本集合,200个样本,2个特征维度,3个分类标签
X, y = make_classification(n_samples=200, n_features=2, n_redundant=0,
n_clusters_per_class=1, n_classes=3)
clf = neighbors.KNeighborsClassifier(n_neighbors=15, weights='distance')
clf.fit(X,y)
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
h = 0.02
# np.arange(start,end,step)生成一个数组
# np.meshgrid(array1,array2)生成两个同行同列的多维数组
xx, yy = np.meshgrid(np.arange(x_min, x_max, h),np.arange(y_min, y_max, h))
# np.ravel将多维数组降成一维
# np.c_将两个一维数组相同的index值,拼接成一个新的二维数组
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
# Create color maps
cmap_light = ListedColormap(['#AAFFAA', '#FFAAAA', '#AAAAFF']) #给不同区域赋以颜色
cmap_bold = ListedColormap(['#FF0000', '#003300', '#0000FF'])#给不同属性的点赋以颜色
#将预测的结果在平面坐标中画出其类别区域
# shape(二维数组)返回a,b a=行数,b=维数
# reshape(一维数组, a.b)返回一个a行, b维的
Z = Z.reshape(xx.shape)
plt.figure()
plt.pcolormesh(xx, yy, Z, cmap=cmap_light)
# 也画出所有的训练集数据
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold)
plt.xlim(xx.min(), xx.max())
plt.ylim(yy.min(), yy.max())
plt.show()

利用matplotlib绘制测试集合预测结果的伪彩图和样本集合散点图,结果如下:
image

参考

https://baike.baidu.com/item/%E9%82%BB%E8%BF%91%E7%AE%97%E6%B3%95/1151153?fr=aladdin
http://scikit-learn.org/stable/modules/generated/sklearn.neighbors.KNeighborsClassifier.html

青海行

发表于 2018-05-12 | 分类于 旅行

       湖泊-雪山-隔壁-沙漠-草原,八天的青海甘肃大环线行程中见识到了和江南不一样的景色,这里的壮阔的自然景象能够直击心灵。一路上和小伙伴们相处的很愉快,也谢谢司机师傅一路上对我们的关照,祝大家在今后的生活和工作中一切顺利,后会有期~下面附上几张美美的图片。

七彩丹霞

image

可鲁克湖

image

翡翠湖

image

七彩丹霞日落

image

十五月圆

image

月牙泉日落

image

风吹草地现牛羊

image

青海湖

image

敦煌石窟外抓拍的一个飞机,很像一颗流星哦~

image

三体读后感

发表于 2018-04-18 | 分类于 读后感

       4月17日凌晨我读完了三体三部曲,这部小说给我带来的回味很多,我从以前就是一个喜欢宏观层面的人,所以比较善于找方法,对处理细节方面就不太拿手。小说中构建的世界观让我沉浸其中无法自拔,仿佛自己从头到尾经历了一边。

《三体1:地球往事》

image

       其实早在上学时期我就尝试阅读过三体这部小说,那个时候知道这是一部关于科幻类的但开头却一直说文革时期的事,那时的我读不懂没多久就放弃了,再次阅读的时候,被书中开头描述的文革时期彻底震撼。子斗父,徒斗师,第一步的女主角叶文洁的父亲深受文革时期的迫害,死在了她的面前,后来妹妹死于武斗,被下方到林场后又被自以为是好友白暮霖陷害,直到开启红岸工程后很久才被平反,叶文洁彻底对人类失去了信心。
  叶文洁全身心投入研究后,发现宇宙辐射背景和太阳是个信号放大器,红岸工程对宇宙发出了第一声呼喊,在善良的三体监控员的警告下,叶文洁还是毫不犹豫回复了三体世界的信息,幻想三体世界来拯救邪恶的人类。但导致太阳系的方向和距离暴露,同时生活在水生火热中的三体世界开启了对太阳系征程,拉开了人类与三体世界400年斗争的序幕。

《三体2:黑暗森林》

image

       黑暗森林我觉得是三部曲中最精彩的部分,在叶文洁被捕前跟罗辑有一次短暂的对话。对话的内容以宇宙社会学引起了罗辑的兴趣,叙述了宇宙社会学的基本雏形。三体率先派出智子封锁人类科技,在三体舰队到来前实时监控着地球的一举一动。联合国意识到任何计划都是透明的,在智子无处不在、无所不知的情况下只有人大脑中的思想不会被暴露,便开启了面壁计划。罗辑是四位面壁者中的一个,也是三体世界觉得最危险的人。为了针对面壁计划,地球三体组织也派出三位破壁者。唯独罗辑自己是自己的破壁者,三体世界知道他脑中的思想有更多人知道的话,对三体世界是危险的。面壁者与破壁者博弈的情节是我觉得书中最精彩的部分,每一个面壁者的思想和计划藏得都如此之深,却被破壁者一一破解,最后只留下了罗辑一人。
       罗辑慢慢的参悟叶文洁所说的话,对百光年外的一颗恒星发起了“诅咒”,200年后检测到那个恒星系毁灭的画面,当时的联合舰队组织没有想到罗辑200年前的诅咒真的生效了。罗辑也通过实验证明了自己的想法,由叶文洁提供的宇宙社会学雏形推理出了–黑暗森林法则。
       当三体舰队抵达太阳系时,罗辑站在杨冬和叶文洁的墓前对着智子发出怒吼,若三体舰队再敢向前航行一步便广播三体母星的坐标,这是一种同归于尽的行为,因为太阳系离三体母星仅有4光年的距离。罗辑成功建立黑暗森林威慑,三体舰队退出太阳系外数百个天文单位。

两个基本公理:

  1. 生存是文明的第一需要
  2. 文明不断增长和扩张,但宇宙中的物质总量保持不变

    猜疑链和技术爆炸

    “文明间的善意和恶意。善和恶这类字眼放到科学中是不严谨的,所以需要对它们的含义加以限制:善意就是指不主动攻击和消灭其他文明,恶意则相反。这是最低的善意了吧。” ——刘慈欣《三体2:黑暗森林》
    一个文明不能判断另一个文明是善文明还是恶文明
    一个文明不能判断另一个文明认为本文明是善文明还是恶文明
    一个文明不能判断另一个文明是否会对本文明发起攻击
    一个文明无法判断另一个文明对自己是善意或恶意的
    一个文明无法判断另一个文明认为自己是善意或恶意的
    一个文明无法判断另一个文明判断自己对她是善意或恶意的
    ……

猜疑链性质:

  1. 由于距离间隔以及文化、物种差异,宇宙文明间猜疑链一经形成即坚不可摧。
  2. 猜疑链导致文明无法互相判断彼此之间的善恶并最终驱使两方相互敌视。
  3. 猜疑链的结果与两文明具体道德取向无关。

技术爆炸:

文明进步的速度和加速度不见得是一致的,弱小的文明很可能在短时间内超越强大的文明。可能由内因或者外因(例如宇宙文明的交流)引发。

《三体3:死神永生》

image

       本以为三体3会像其他小说一样越写越烂坑越多,因为相较之下黑暗森林已经很完美了。《死神永生》中星际战争、光速飞船、光粒打击、维度武器这些以前从未了解过的事物拓展了我的视野,尽管有些也是作者幻想出来的甚至没有科学依据,依然给了我很大的震撼。这和黑暗森林人与人之间的斗争描写是不同的,真正的大场面,大手笔。
       身患绝症的云天明买下一颗星星送给暗恋着的大学同学程心,而程心因参与(PIA)向三体舰队发射探测器的工作,却想让航天专业背景的他放弃安乐死,作为被执行人将大脑捐献给阶梯计划。云天明的大脑被送往了太空,为了阶梯计划的顺利进行,程心进入冬眠等待云天明的消息。冬眠苏醒后的程心继任罗辑被推举为下一任执剑人,而三体文明瞄准交接完成后,对人类世界发起攻击,三体水滴从太阳系外到达地球只需要10分钟的时间。程心刚成为执剑人几分钟就要面临抉择人类和三体世界的命运,如果她按下按钮两个世界都将面临黑暗森林打击,如果不按人类则会沦陷,最后她还是败了。水滴进入地球直接把宇宙广播站全部毁灭,使人类失去建立黑暗森林威胁的能力,最终人类被奴役,大部分人类集中移民到澳大利亚。
       除了地球上的广播站,万有引力号是恒星级战舰中唯一一艘拥有广播能力的宇宙飞船,在警示下继续逃离的“蓝色空间”号,受到具有发射引力波能力的“万有引力”号与两个同行的“水滴”追击,其上的人员进入四维空间摧毁水滴并占领了“万有引力”号,启动引力波广播向宇宙公布了三体星系的坐标。“万有引力”号代替程心完成了执剑人的任务,三体世界收到广播信号后,开始逃离太阳系,不久后三体星系遭到了毁灭。
       相距三体星系仅四光年的太阳系,思考着如何应对随时会到来的针对地球的打击行动,这个时候云天明约会程心见面,给她带来了三个故事。从故事中解得了曲率驱动光速飞船的研究方向,但人们以为黑暗森林打击手法只有光粒一种,便放弃了研究光速飞船,开启掩体计划。最后歌者发现太阳系特殊的运行体制后,担心光粒打击无法彻底摧毁太阳系,便使用更高级的维度打击武器“二向箔”。在维度打击手段下,太阳系从三维空间被压成二维空间,只有光速飞船可以脱离其蔓延速度,但人类却放弃了这条路,导致了太阳系人类文明的灭亡。

后记

       我也像作者一样坚信着宇宙中存在着千万文明,文明间的战争也早已开始。抬头看着夜空,那一颗明亮闪烁的星星,可能也是文明闪烁的最后光辉。人类文明仅是时间长河中的一小段,真的想亲眼看看未来的世界。
image

L's tale start

发表于 2018-04-18 | 分类于 心情

L的故事

起初想做个技术类的博客,后来想了一下还是做一个生活记录类的博客比较符合我的想法。我想把我脑子里闪过的一些念头记录,想把我看过的书中难以忘却的情节记录,想把我看过的美景记录,想把无处说的话在这说出来,所以我把站名起为L的故事,我姓的首字母,也就是我的故事,同时L也是我最喜欢的动漫人物之一 :)


人生在世,及时行乐。

image

123
L.Lawliet

L.Lawliet

24 日志
7 分类
29 标签
© 2020 L.Lawliet