第12章 副作用

    公共机房内。

    齐凡一边翻着书,一边调试着代码。

    波士顿房价预测线性回归。

    其实就是以线性回归的方式,根据一份波士顿地区的历史房价数据,预测未来的房价走势。

    齐凡腹诽,不愧是资本主义国家,即便是举个例子,都是充满了金钱的味道。

    其实这所谓的预测房价就是个扯淡,所谓的波士顿房价预测也没有任何意义,不过就是拿这一份数据集来演示线性回归而已。

    至于线性回归,齐凡已经了解的差不多了。

    它的公式巨简单。

    【y=x+】

    不过,y、、x、都是向量,并非是初高中数学多元一次方程中的未知数。

    普通的“x”是这样的:x=1。

    向量的“x”是这样的:x=[0,1,2,3,4,5,6,7,8,9]。

    但向量运算除了有其自身一套规则之外,其实和非向量运算也差不多。

    向量本质上不过是将数据升维而已,也可以理解成是数据属性的扩充。

    就拿波士顿房价数据集来说。

    “x”代表了各项评估指标。

    [‘crim‘,‘zn‘,‘indus‘,‘chas‘,‘nx‘,‘rm‘,‘age‘,‘dis‘,‘rad‘,‘tax‘,‘ptrati‘,‘‘,‘lstat‘]

    crim:城镇人均犯罪率。

    zn:住宅用地超过25000平方英尺的比例。

    indus:城镇非零售商用土地的比例。

    chas:查理斯河空变量(如果边界是河流,则为1;否则为0)。

    nx:一氧化氮浓度。

    rm:住宅平均房间数。

    age:1940年之前建成的自用房屋比例。

    dis:到波士顿五个中心区域的加权距离。

    rad:辐射性公路的接近指数。

    tax:每10000美元的全值财产税率。

    ptrati:城镇学生数:教师数的比例。

    :1000(k-0.63)^2,其中k指代城镇中黑人的比例。

    lstat:人口中地位低下者的比例。

    -----------------

    “y”代表了最终的输出结果。

    由于房价预测只有一个输出结果,也就是房价。所以y这个向量只有一维,而一维的向量其实就是個普通变量。

    整个计算过程,就是要根据数据集给定的x和y的值,来预测出一对最精确的和的值。

    齐凡脑海中出现了一张二维坐标系。

    那几百个房价数据样本,就是坐标系中不同的点。而所谓的线性预测,其实就是找到一条直线,能最大程度将这些样品上的点串起来。

    至于为什么是一条直线,而不是曲线,因为它是线性的。

    当然,其实这个并非二维空间的问题。

    x向量代表的样本属性有13个,y向量代表的最终输出是1个,那加起来总共有14维。

    别说是14维,就算是4维的图形也没法在三维世界中画出来。

    但是,不画出来也没事。可以降维嘛,将14维等价理解成二维的xy坐标系,对于计算是没有任何影响的。

    齐凡在贤者饮料加持下,心无旁骛。他的视野中只有电脑屏幕和摊开的书本。

    齐凡对numpy科学计算库的使用还不熟练,每当遇到问题,就只能靠谷哥搜索来解决。

    numpy是一套科学计算库,支持对向量的计算,当然它的作用远不仅止于此。

    用代码实现普通的加减乘除计算是很简单的,可要是实现向量计算就搞笑了。如果自己写一套软件来实现向量计算,那属实是一件极其麻烦的事情,甚至有些天方夜谭。

    好在世界上的有一种组织--开源软件基金会。它们把大量的需要耗费极大人力才能完成的软件,无偿的开放给全世界使用。比如齐凡正在使用的numpy就是。

    开源是一件功德无量的事情。如果齐凡此刻没有numpy,那他不知还要多花多少时间先造工具。就如一名厨师没有菜刀,不得不先买块铁自己锻造打磨一把。

    也正因为此,闭源的巨硬公司口碑向来不咋滴。

    这个例程还算初级,齐凡很快就写好了代码。然后开始调试。