关键词:

梯度下降:就是让数据顺着梯度最大的方向,也就是函数导数最大的放下下降,使其快速的接近结果。

Cost函数等公式太长,不在这打了。网上多得是。

这个非线性回归说白了就是缩小版的神经网络。

python实现:

 import numpy as np
import random def graientDescent(x,y,theta,alpha,m,numIterations):#梯度下降算法
xTrain =x.transpose()
for i in range(0,numIterations):#重复多少次
hypothesis=np.dot(x,theta) #h函数
loss=hypothesis-y cost=np.sum(loss**2) / (2*m)
print("Iteration %d / cost:%f"%(i,cost))
graient=np.dot(xTrain,loss)/m
theta=theta-alpha*graient
return theta def getData(numPoints,bias,variance):#自己生成待处理数据
x=np.zeros(shape=(numPoints,2))
y=np.zeros(shape=numPoints)
for i in range(0,numPoints):
x[i][0]=1
x[i][1] = i
y[i]=(i+bias)+random.uniform(0,1)*variance
return x,y X,Y=getData(100,25,10)
print("X:",X)
print("Y:",Y) numIterations=100000
alpha=0.0005
theta=np.ones(X.shape[1])
theta=graientDescent(X,Y,theta,alpha,X.shape[0],numIterations)
print(theta)

运行结果:

......输出数据太多,只截取后面十几行

Iteration 99988 / cost:3.930135
Iteration 99989 / cost:3.930135
Iteration 99990 / cost:3.930135
Iteration 99991 / cost:3.930135
Iteration 99992 / cost:3.930135
Iteration 99993 / cost:3.930135
Iteration 99994 / cost:3.930135
Iteration 99995 / cost:3.930135
Iteration 99996 / cost:3.930135
Iteration 99997 / cost:3.930135
Iteration 99998 / cost:3.930135
Iteration 99999 / cost:3.930135
[30.54541676 0.99982553]

其中遇到一个错误。

TypeError: unsupported operand type(s) for *: 'builtin_function_or_method' and 'float'

因为我第五行xTrain =x.transpose()。刚开始没加括号。直接用的xTrain =x.transpose

打印一下xTrain是

<built-in method transpose of numpy.ndarray object at 0x00000219C1D14850>

只是创建了一个transpose方法,并没有真的给x转置。加上括号就好了。再打印xTrain就能正常显示转置后的x了

菜鸟之路——机器学习之非线性回归个人理解及python实现的更多相关文章

  1. 菜鸟之路——机器学习之决策树个人理解及Python实现

    最近开始学习机器学习,以下会记录我学习中遇到的问题以及我个人的理解 决策树算法,网上很多介绍,在这不复制粘贴.下面解释几个关键词就好. 信息熵(entropy):就是信息不确定性的多少 H(x)=-Σ ...

  2. 菜鸟之路——机器学习之线性回归个人理解及Python实现

    这一节很简单,都是高中讲过的东西 简单线性回归:y=b0+b1x+ε.b1=(Σ(xi-x–)(yi-y–))/Σ(xi-x–)ˆ2       b0=y--b1x-    其中ε取 为均值为0的正态 ...

  3. 菜鸟之路——机器学习之KNN算法个人理解及Python实现

    KNN(K Nearest Neighbor) 还是先记几个关键公式 距离:一般用Euclidean distance   E(x,y)√∑(xi-yi)2 .名字这么高大上,就是初中学的两点间的距离 ...

  4. 菜鸟之路——机器学习之BP神经网络个人理解及Python实现

    关键词: 输入层(Input layer).隐藏层(Hidden layer).输出层(Output layer) 理论上如果有足够多的隐藏层和足够大的训练集,神经网络可以模拟出任何方程.隐藏层多的时 ...

  5. 菜鸟之路——机器学习之SVM分类器学习理解以及Python实现

    SVM分类器里面的东西好多呀,碾压前两个.怪不得称之为深度学习出现之前表现最好的算法. 今天学到的也应该只是冰山一角,懂了SVM的一些原理.还得继续深入学习理解呢. 一些关键词: 超平面(hyper ...

  6. 菜鸟之路——机器学习之HierarchicalClustering层次分析及个人理解

    这个算法.我个人感觉有点鸡肋.最终的表达也不是特别清楚. 原理很简单,从所有的样本中选取Euclidean distance最近的两个样本,归为一类,取其平均值组成一个新样本,总样本数少1:不断的重复 ...

  7. 菜鸟之路——机器学习之Kmeans聚类个人理解及Python实现

    一些概念 相关系数:衡量两组数据相关性 决定系数:(R2值)大概意思就是这个回归方程能解释百分之多少的真实值. Kmeans聚类大致就是选择K个中心点.不断遍历更新中心点的位置.离哪个中心点近就属于哪 ...

  8. 菜鸟之路——Linux基础::计算机网络基础,Linux常用系统命令,Linux用户与组权限

    最近又重新安排了一下我的计划.准备跟着老男孩的教程继续学习,感觉这一套教程讲的很全面,很详细.比我上一套机器学习好的多了. 他的第一阶段是Python基础,第二阶段是高等数学基础,主要将机器学习和深度 ...

  9. Python菜鸟之路:Django 路由补充1:FBV和CBV - 补充2:url默认参数

    一.FBV和CBV 在Python菜鸟之路:Django 路由.模板.Model(ORM)一节中,已经介绍了几种路由的写法及对应关系,那种写法可以称之为FBV: function base view ...

随机推荐

  1. 为什么表单中post接受数据是获取name值而不是id值

    感谢解惑者:http://blog.csdn.net/u013451157/article/details/78503831 表单(form)的控件名,提交的数据都用控件的name而不是id来控制.  ...

  2. [Asp.Net] Global.asax

    Global.asax.cs文件会被编译到对应的dll 但部署是还需要Global.asax文件  class Global中的方法才会在程序启动时执行

  3. JAVA设计模式初探之适配器模式(转)

    1. 概述 将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不 ...

  4. Android(java)学习笔记87:Android音视频MediaRecorder用法

    1. Android语音录制可以通过 MediaRecorder 和 AudioRecorder:  MediaRecorder本来是多媒体录制控件,可以同时录制视频和语音,当不指定视频源时就只录制语 ...

  5. 【洛谷1486】[NOI2004] 郁闷的出纳员(Splay的小运用)

    点此看题面 大致题意: 你是一个公司的出纳员,现在有\(n\)个操作,操作有4种:新来一个员工.增加全体员工工资.减少全体员工工资.查询第\(k\)多的工资.若一个员工的工资在某一时刻低于合同上的工资 ...

  6. 简析平衡树(二)——Treap

    前言 学完了替罪羊树,我决定再去学一学\(Treap\).一直听说\(Treap\)很难,我也花了挺久才学会. 简介 \(Treap\)这个名字真的挺有内涵: \(\color{red}{Tree}\ ...

  7. 五、react中父子组件间如何传值

    1.父组件向子组件传递数据:父组件绑定属性值传给子组件,子组件通过this.props()接受. 2.子组件向父组件传递数据:子组件绑定一个方法,方法中通过this.props.父组件方法名(参数)传 ...

  8. C#的接口基础教程之二 定义接口

    定义接口 从技术上讲,接口是一组包含了函数型方法的数据结构.通过这组数据结构,客户代码可以调用组件对象的功能. 定义接口的一般形式为: [attributes] [modifiers] interfa ...

  9. Java发出声卡蜂鸣生的方法

    方法一: Toolkit.getDefaultToolkit().beep(); 方法二: System.out.println('\007');//八进制数

  10. Django项目中"expected str, bytes or os.PathLike object, not list"错误解决:

    对于这个错误,也在于自己对django基础的掌握不是很牢固,忽略了MEDIA_ROOT的类型是string,而不是list. 错误的写法: MEDIA_ROOT = [ os.path.join(BA ...