00:00
简单的说一下,再重新新建一个这样的一个程序。呃,我我这里就不去不去弄这些了,我就直接把代码先拿过来,大家会想到我们实际在做这个应用的时候,怎么样去怎么样去使用这些机器学习的算法呢?啊,之前跟大家说过是不是直接调库啊啊,当然了,调库之前我们还是也也可以把这个先拿过来,对不对,先导入画一个图,散点图,损失函数,大家会想到是不是也一样啊。对,好,那接下来大家会想到,呃,我接下来要做的就是去去直接调库了,调库的话需要引入什么库呢?这里面给大家写一下啊from要引入SK,大家会想到这是不是机器学习的一个库啊呃,它里边有什么,有一个什么类呢?叫做linear model的一个一个类。
01:02
所以这是一个什么线性模型对不对?呃,然后我们from这个是要引入它里边的一个方法import什么东西呢?Import一个叫做linear regression,那大家知道这是不是就是线性回归啊,对吧?直接把这个东西引入就可以了,好那么我们看一下它怎么用啊,直接定义一个LR就是线性回归对不对?定义这样一个东西,我们把这个方法linear regression,哎,这样就直接相当于我们创建了一个线性回归模型,这样一个对象对不对,实例化的这样一个对象,好接下来大家会想到,那我们是不是就应该把数据传进去做一个做一个拟合啊,呃,这里数据大家稍微注意一下啊,就是我们做拟合的时候调什么方法呢?它这里边本身就有一个点fit方法。
02:01
呃,可以直接这么去用,那这里面大家可能会想到,那我前面不是有XY了吗?是不是把XY直接传进去就可以啊,但是如果大家直接这么去,直接这么去拟合的话,他会报错,为什么呢?里边的数据结构不一样,大家看他他说了个什么呢?期望的是一个二维的数组,二阶的数组对不对?所以相当于是一个矩阵对不对?我们这里传进去的XY都是什么,都是一维的对吧?所以我们这里稍微做一个转换啊,什么转换呢?呃,就是x.xx new啊,它等于什么呢?做一个re shift,它有一个这样的一个方法,Re shift,什么负一一,这代表什么意思呢?前面的负一代表re shift,大家会想到是不是要改变它的形状啊,所以它这个改变形状的意思就是针对none派里边的这个二维数组。这个N瑞就相当。
03:02
当于是一个矩阵去改变它的形状的,那改变形状后边是不是就是你改变成多少行多少列啊,前面的负一表示行数不限,就随意的意思对吧?那后边的一是不是表示是不是要最后变成一列啊,它本身X是不是就是一列,我们现在把它reha之后,它是不是还是一列,只不过这个数据类型是不是就变变成二维的了,相当于变成了一个一个矩阵了,对不对,变成了一个N行一列的一个矩阵啊,所以这是这样的一个方法啊,那大大家如果要是这个想要去看一下的话,我们在这里看一眼啊,大家看现在是不是变成这个样子了。那之前的这是不是就是一个矩阵形式,二维数组对不对,之前的X是什么样子,之前X是不是一维的这样的一个形式啊啊,所以我们其实就是要做这样的一个处理啊,那当然了,可以这个y new也Y做一个对不对,同样也是。
04:10
负一一好,那么接下来就可以直接调用它去做拟合了,当然这里边就不是XY,是X new和y new对不对?大家看现在如果去拟合的话,它是不是就不报错了。然后接下来大家会想到你这个光拟合这他这也没没返回什么东西,对吧,我也不知道到底出现什么状况了啊,不要着急,它的拟合的结果都从这个LR里面可以调出来,比方说大家想知道我们是不是想拿到那个W跟B啊,那W就是什么呢?LR里边有一个有一个参数叫做。大家看这个参数有一个下划线,就是表示它内置的一个一个,呃,这个变量对不对,一个属性Co efficient,这是不是表示就是参数的那个意思对不对,系数的意思对吧?就是系数,所以LR里面的系数就是W,所以前面我们如果F已经训练完了之后,直接就能把这个W拿出来。
05:18
大家可以想到B是不是也能直接从里面拿,那这个,当然它也有一个特殊的名字叫叫intercept,大家知道这个是什么意思吗?Intercept是截距的意思对吧?呃,我们这里从训练好的模型中提取系数和截距,好,这就是,这就是我们想要拿到的这些东西,那当然了,你如果把这个做出来,我们定义的这些打印的方法是不是也可以去做一下啊,当然这个下面那个cos list就没有了啊,我们把这个copy过来。
06:09
好,大家可以在这里看一眼。大家可以看到拿到的W跟B是什么呢?最后是不是W是1.3224 B是7.99,最后的COST110.257,这个跟哪个比较接近啊对,是不是我们用这个最小二乘法算出来的这个很接近啊,当然最后的精度上可能稍微有点不同,就是在做这个计算的过程当中,我们没有做任何的这种精度保保留,对不对啊,那可能跟这个算出来的算法不一样,但是大家可以想象得到。Python官方的这个SK learn这个库里边,它实现的线性回归的算法是用什么实现的?对,是不是就是最小二层直接去实现的呀,对,因为它会更精确一些,好呃,当然了,就是大家如果想把这个散点图画出来的话,下面是不是一样啊,你把这个画出来,大家自然能够想到诶,这里边。
07:10
哦,大家会想到这里边我拿到的这个W跟B是不是这并不是一个数啊,大家会看到这不是一个数对吧?所以我们这里边把这个拿到的东西我们取一下吧,大家会想到这个拿到这个coefficient是不是一个二阶的数组啊,那我直接拿他的零,零是不是拿到的就应该是一个一维的数据啊,后面这个拿到一个零是不是也应该是这样一个东西啊,好,现在就是一个一个数了,对吧。现在是不是我们打印出来都是一个数,好那接下来好,大家看到画出来这一条直线是不是跟这里。线性回归最小二乘最小二乘法算出来这条直线非常的接近啊,那肯定吧,你W跟B都很接近,那这个肯定接近了啊,这就是我们用调库的方法做了一个简单的实现,当然这个调铺就其实就是你把那个包引入进来,知道是什么东西,把它调出来就完事儿,对不对,就非常的简单。
我来说两句