程序,先用年龄和身高写出来。尽可能让点在直线周围,称为拟合。第二种数据是鸢尾花,分类
还有很多数据,iris鸢尾花,boston房产数据。
公式始终是xw+b,最后可以看成x乘系数1,(w/b)b
线性回归的算法
**一般都是准备数据,训练,可视化。
导入x数据和y数据。
**
产生一个空的数组,把x_data里的数据语言,有多少个数据(取0行),列数增加1,保留数据值再加上dtype,np.float浮点数。
Y值,本来是一行,变成多行一列,原来是横过来的数组,变成列的数组,计算就会方便,把y其中的0,变成1列,
**这里都属于数据加载.x数据放进去,把所有的行放进去,所有第一列的数据就等于x_data。
把第二列,所有的行,但是列数是第二列
**
第二列全是1
后面是2x2的矩阵模式
把数据准备好就开始训练
先求转置矩阵
、这种方式就可以把矩阵求出来
转置矩阵求和以后要求逆矩阵
专门一个求逆矩阵的公式inv
再乘上x的转置矩阵
再乘上y矩阵
得出的矩阵就是鼎鼎大名的W
这个W其实是个方程式,w.shape打印一个形状,是一个2乘1 的,一个特征就一个,结局就一个
进行可视化
这个拟合就需要用,W,x,y算出来,要用到理想的Y值,Y_IDEA等于x乘上w,np.matmul(X,W),ax.plot画成直线
蓝色
计算这个W,算法是没有问题的
scipy实现的方法就比较简单,这个可逆矩阵比numpy的效率稍微高点
查看有没有这个包
现在这是得出的结果
线性回归具备分类的作用,sklearn线性模型,下面是线性回归对象
这个对象,对数据是有要求的,需要格式化一下,要把形状一定要映射成-1
下面开始训练,拟合fit,进行拟合运算。把x放进去,期望的分值放进去Y_RG
打印出三个值,评估(得分率),斜率:coef,截距inyercept
实际上sklearn 的拟合线性回归也是这套算法
下面开始计算鸢尾花数据
先取前面x100个,y也是100个,用矩阵的方式批量运算比一个个算快得多
打印预测值,这里改成4位数据
-1就是无限,打印Y数据看看
真实的Y,前50个0,后50个1
通过线性聚合,前50个靠近0,后面靠近1,线性回归也具备分类的作用
把分类的值统计出来,这里的可信度,达到百分之96
4个斜率,一个斜率一个特征,这个斜率决定了,哪个特征起主要效果
后面这个特征起主要效果
上面这个2的特征
可分性是最强的
后面这两个是分类的主要依据
这样就起主要因素
再写,把准确度分析一下,前面样本如果小于0,就分为A类
这里就得到一个矩阵
这样就把A类的识别率,是高达92%的识别率
换成后面50个,如果大于0.9,属于B类
这样识别率高达100,分类的时候,第三第四特征起主要特征
23类的可线性,明显低于A类
tennsorflow如何实现,线性回归最主要的问题是对于非线性的数据不是特别好,不是每个特征都有作用
有时会出现过拟合的现象
现在这里连续的方式也具有分类的功能,算法依然是拟合,我们分类的时候就是0和1,算法其实也是在0和1徘徊
分类和拟合里,并不是特征越多越好,真正让拟合产生分类的效果的,哪几个特征让它趋于0或者就是0,可以把这种特征稀疏,尽量我们看到的特征拟合是1,或者靠近1
每一个算法具有使用场景
机器学习,深度学习基本就是拷贝这个算法,梯度下降,最小二乘法,后面就是搭框架
现在线性里还有漏洞,就是三个假设(线性的,独立分布,正态的