本分类包括AI人工智能、机器学习、算法、深度学习......
涉及知识很广:高等数学、线性代数、概率论、经济学等等方面的知识。
开始今天的文章:
背景:
首先,大家看下面这张图片,可以看出这就是一个锤子,但是让我们想想锤子是怎么生产出来的呢?
寻找材料->给锤子造型->高温打造->入水进一步塑性...
锤子的建造是不是根据我们需要的需求一步一步变化的呢?答案是当然的,是不是可以归纳为:
不同的输入对应不同的输出 显然,没问题 这是不是就和我们以前学的函数y=f(x)联系起来啦。
在美国,曾经有这么一个节目(Plinko),大概就是在现场挑选一名幸运观众到台上完成一个游戏,将圆球从大板上扔下来如果扔到对应的轨道里就获得相应的奖品。
这里是不是就可以把扔球的位置看做一个变量,结果看做一个对应的值呢 一个输入对应一个输出
来看一下这位观众中奖时的样子,大致看一下:
背景分享完了,下面我们直接奔向主题:
抓取原理,借助数学知识,解决实际的问题(例如:如何让我们每次扔圆球都扔到中奖的位置呢?),这里就是通过简单的公式去验证原理,而是通过代码实现的方式去证明。
圆球位置的变化会让结果也发生变化,很强大的理论。
可以理解为:输入对应输出
我们通过大量的实验来找到这里面的规律,我们就可以结合AI知识开发一个智能机器人,通过扔圆球来获得大奖。
简单来说就是,通过数据,数据会说话(转化为一种信息),建立一个模型(方法)来解决实际的问题,再通过数据来训练模型,最后我们就可以通过feature来预测label了!
人类通过回忆之前的经历,衍生出经验,对于下次类似的事情就有解决的办法,对应的解决措施。例如:上图的决策树,判断条件 判断结果。通过天气因素,判断车的到达时间,我们就可以通过收集大量的数据,选择一个模型,从而实现预测。
机器学习其实就是通过以前的数据,找出规律,建立模型,从而预测未来。机器学习是实现人工智能(AI)的一个途径。
机器学习和我们备战高考其实是一样的道理,我们通过做模拟题,找到出题规律,对一些题目建立模型,找到方法,我们模拟的分数越高,我们的高考成绩就会相应的预测的更好。
模拟一个扔圆球的游戏,来进行分析,最后预测不同位置所对应的不同结果。
通过map()函数,通过设置函数,对应一个新的列表。
Python中的numpy库有两种排序,一种是排序后返回列表,另一种是通过返回下标。
这里我们选择knn算法模型进行代码实现预测:
这样就可以通过这个简单的knn(一维方法)进行预测,预测的效果可能不是很精确,接下来就要采取措施提高模型优化。
解决方案:
- 调参增加数据维度增加测试数据改变模型,改变算法
重新优化数据集:
分为训练集和测试集(比例大概10:1)
k的选择
一般选择训练集的条数开根号,上下15个百分点适宜...
通过我们收集的预测导入得出:
补充:
处理数据,把数据充分打散,拆分成训练集和测试集
如何计算准确率:
如果找到最好的参数后,准确率还不够的话,我们就进入到下一步,增加变量的个数.
增加新的变量:
我们研究的数据都是基于数字,所以这里就将球颜色的信息转化为球的d性数据,如何转换呢?
可以在加载test_data数据的时候进可以转换,np.loadtxt(...)中的api coverters={数据列数(从0开始数):转换函数} 同时注意设置的编码 编码要与读取文件的编码匹配
假设变量是多维度的,那我们如何进行呢?
这里就要定义一个新的参考概念了,欧氏距离!
d=根号下所有变量与预测变量差的平方之和
那我们新的代码就可以写了,增加变量feature:
但是,这样做精确率并没有上升多少,为什么???
因为颜色这个指标的差距实在太小,我们需要换方法,在原来模型的基础上再次调优!
引入数据处理之数据归一化,数据整形:
让每一个变量都有发言权!不会再因为变量之间的差距过于小而没有效果。
其实就是设置一个比例,各个变量设置比例即可
代码实现:
可以看出还影响小球落地位置的因素,假设变量足够多,我们又该如何是好呢?难道继续采用挨个变量归一化设置标准欧式距离吗???
接下来,向量出场了!
向量之向量的点乘概念:
有必要说一下两个向量之间的夹角,如果夹角越小,他的余弦值就越大,代表两个向量就越接近,例如:我们的推荐系统,猜你喜欢,就是根据向量的点乘实现的。两个商品就好像是两个向量,如果他们之间的夹角越小,点乘的结果越大,两个商品就越相似,就越推荐相似的商品给客户。
以上就是使用基本的知识实feature对应的label结果...
谢谢大家的阅读!!!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)