人工智能00013 深度学习与图像识别书评13 机器学习基础02 多元线性回归

4.1.2 多元线性回归

4.1.1节中,我们介绍了一元线性回归(自变量或者说特征只有一个)的内容,在现实社会中,一种现象常常是与多个自变量(或者说特征)相联系,由多个自变量的最优组合共同来预测或者估计因变量(预测值)会更符合实际情况。

例如,房子售价预测的关系中,房子的售价往往与房子的住房面积、房间数量、与市中心的距离(地段),旁边是否有便利的交通等因素息息相关。表达式的形式一般如下:

多元线性回归与一元线性回归类似,都是使得尽可能的小。

多元线性回归也可以使用最小二乘法进行计算,最终得出θ0、θ1、θ2等参数。 多元线性回归的算法实现思路 首先稍微整理下思路:

我们希望将公式稍做修改,将原来的y_predict=θ0+θ1x1+θ2x2+…+θnxn整理成y=θ0x0+θ1x1+θ2x2+…+θnxn,其中x0恒等于1,细心的读者会发现,

y=θ0x0+θ1x1+θ2x2+…+θnxn可以看作是两个矩阵的 点乘运算(对于点乘运算还不了解的读者,可以参看之前第2章的Numpy的相关内容)。

要达成这样的目标,我们希望将所有的参数(包括权重和截距)都整理为θ=(θ0,θ1,θ2,…,θn)。

参数向量本身是一个行向量,我们需要做一次矩阵转置使之成为列向量。而对于所有训练数据的特征,我们可以整理为,其中x0恒等于1,i表示样本编号,范围从1到m,即m个训练样本。

这样,我们就可以将这个公式简化为yi=xi·θ这里我们再详细解释一下,x矩阵的每一行代表一个数据,其中第一列的值恒等于1(点乘计算后代表的值其实是截距:

1*θ0=θ0)。之后的每一列代表的是这一行数据的一组特征。

θ为列向量,θ0代表截距,其余都是相应特征的权重。 与前文提到过的说明一样,我们不会做复杂的公式推导,最终,我们的问题将转换为求出θ向量(包含了截距与权重),使得尽可能的小。

这里我们直接给出参数θ的计算公式:  这个公式就是多元线性回归的正规方程解(NormalEquation)。

下面我们根据这个公式使用Python实现多元线性回归。

实现代码具体如下:

import numpy as np

from numpy import linalgclass MLinearRegression:

 def __init__(self):

   self.coef_ = None         #代表的是权重

   self.interception_ = None     #代表的是截距

   self._theta = None         #代表的是权重+截距

 '''规范下代码,X_train代表的是矩阵X大写,y_train代表的是向量y小写

def fit(self,X_train, y_train):

assert X_train.shape[0] == y_train.shape[0], \

"训练集的矩阵行数与标签的行数保持一致"

ones = np.ones((X_train.shape[0], 1))

X_b = np.hstack((ones, X_train))

#将X矩阵转为X_b矩阵,其中第一列为1,其余不变

self._theta = linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y_train) self.interception_ = self._theta[0]

self.coef_ = self._theta[1:]

   return self

 def predict(self,X_predict):

   ones = np.ones((X_predict.shape[0], 1))

   X_b = np.hstack((ones, X_predict))

#将X矩阵转为X_b矩阵,其中第一列为1,其余不变

   return X_b.dot(self._theta)      

#得到的即为预测值

 def mean_squared_error(self, y_true, y_predict):

   return np.sum((y_true - y_predict) ** 2) / len(y_true)

 def score(self,X_test,y_test):

#使用r square

   y_predict = self.predict(X_test)

   return 1 - (self.mean_squared_error(y_test,y_predict) / (np.var(y_test)))

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,033评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,725评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,473评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,846评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,848评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,691评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,053评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,700评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,856评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,676评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,787评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,430评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,034评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,990评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,218评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,174评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,526评论 2 343

推荐阅读更多精彩内容