admin管理员组文章数量:1531667
神经网络三大基本框架
Pytorch、TensorFlow、Keras
【波士顿房价问题】:
dir(#数据库名称)
查看数据库中都有什么属性
#数据库名称[#属性名称]
查看属性中的具体数据内容
pandas:panel data set 即面板数据;可以理解为Excel,但比Excel更方便编程
1:correlation,salient feature显著特征
significant(salient)feature:决定因变量最重要的特征称为显著特征
pandas中有一个.corr() 函数,用于衡量两组变量的相关性,∈[-1,1]
-1为负相关,1为正相关。自变量为CRIM,ZN,INDUS等等,因变量为price。
可以看到CRIM对price的影响为-0.388305,CRIM与price的相关性为负数:代表CRIM越小,房价越高(即呈负相关);
RM与price的相关性为0.695360:正相关,且最绝对值接近于1,代表这个特征较为显著;
(#dataframe为用pandas创建的一个表格)
【问题】:如何根据房屋里卧室的数量来估计房子的面积呢?
方法一:建立一个字典来索引,但是字典里没有的数据就会存在索引不到的问题。
X_rm = dataframe['RM'].values
Y = dataframe['price'].values
rm_to_price = {r : y for r , y in zip(X_rm , Y)} #一一映射创建字典
方法二:字典的优化,当找不到数据时,找一个与目标数据相接近的历史数据
Python 字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。
def find_price_by_similar(history_price, query_x, topn=3)
#输入history_price为字典,query_x为想要查询的rm(房间数),topn为最接近的三个值
most_similar_items = sorted(history_price.items(), key = lambda e : (e[0] - query_x)**2[:topn]
#匿名函数为:根据欲索引元素求字典元素[0]的平方差,即求出与索引最接近的topn个索引,输出仍为索引:索引值的形式
most_similar_prices = [price for rm, price in most_similar_items]
#rm : price for rm, price in most_similar_items创建price为索引值(因变量),rm为索引(自变量)的字典;因为history_price字典中自有一套对映射关系,price也对应着history_price中因变量
#区别于上面的创建字典,price for rm, price in most_similar_items,只取price的值
average_prices = np.mean(most_similar_prices)
return average_prices #返回最接近的topn个价格的平均值
#topn的意思是获得最接近的topn个数据
#sorted是排序函数,根据key进行从小到大排序
find_price_by_similar(rm_to_price, 4)
#rm_to_price为从数据集读出整理成的字典
MIT计算机系一句名言:代码是给人看的,偶尔运行一下
2:K-Neighbor-Nearest => KNN 找到K个最近的邻居,在数据量比较大的时候,这种方法比较低效(find_price_by_similar其实就是knn算法的原理)
缺点:knn类似从书中一个个去找数据
Lazy Learning:当内容很多时,需要花费很多时间
机器学习:通过我们现有的知识(观察到的数据),去解决我们没见过的问题(预测分类)
3:通过拟合函数关系,输入x找到y
一个更有效的学习方法
如果我们能够找到x和y之间的函数关系,我们每次要计算得时候,输入给这个函数就能直接获得预测值 =>拟合函数关系
目标:找到一组k和b使得拟合效果最好。
4:判断拟合效果Loss
什么叫做拟合效果好?=>Loss函数(判断标准)
MSE(Mean Squared Error):
越接近于0,效果越好。
此处的为kx+b,求k和b使得拟合效果最好。
①直接用微积分的方法做计算(最小二乘法取极值),缺点:预测函数太复杂了,没法求极值;
5:蒙特卡洛模拟获得最优的k和b
②用随机迭代的方法获得最优值(Random Approach/蒙特卡洛模拟),随机取k,b代入求得,缺点:前面更新很快,到后面更新越来越慢;(没有方向,瞎找)
、、
6:梯度下降获得最优的k和b
③梯度下降gradient descent(我们希望更新很快,一直在更新,有方向的【supervisor】)
通过计算梯度,我们就可以知道k的移动方向,应该让k向左走而不是向右走(或k向右走而不是向左走),也可以知道什么时候会到最低点(梯度为0的地方)。
梯度是loss对k或b的偏导,目的是为了找到使得loss最小的k和b。
版权声明:本文标题:01从零开始理解神经网络 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/xitong/1725269897a1015781.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论