来自 澳门金莎娱乐手机版 2019-12-23 06:55 的文章
当前位置: 金沙澳门官网网址 > 澳门金莎娱乐手机版 > 正文

多元线性模型原理和python代码

多元线性模型原理和python代码,线性模型python

本文分享网站: 

1)目标:通过壹特质量的线性组合;来展开预测模型。即:

图片 1

 其中 图片 2图片 3;w和b学成后,模型就显著了。 其实 图片 4可知成梯次属性值的权值。

2)质量衡量: 求出均方误差并使它最小化,正是大家须要的w和b:

图片 5

均方绝对误差是各数据偏离真实值的离开平方和的平平均数量,也即标称误差平方和的平平均数量,可这里没看见他除以m。当然,平方和细小,除以m也是小小的。

用十分的小二乘法来使下面式子最小,正是使样板到直线上的欧式间距最小。

A.小小的二乘:找到一个(组)估计值,使得实际值与测度值的间隔渺小。本来用两者差的相对化值汇总并使之最小是最精良的,但相对值在数学上求最小值比较劳碌,因此代替做法是,找叁个(组)忖度值,使得实际值与推断值之差的平方加总的来讲后的值最小,称为最小二乘。“二乘”的西班牙语为least square,其实Slovak语的字面意思是“平方最小”。这个时候,将那么些差的平方的和式对参数求导数,并取生机勃勃阶导数为零,正是OLSE。

3)平时的,我们相见的缕缕三天性能,所以本身用矩阵的情势来清除。X 表示m*(d+1卡塔尔大小的矩阵,表示属性值,y是符号,w*是大家要求得权值。

图片 6

这里的图片 7 =  (w,b卡塔尔 ,是冠上加冠组合的向量。w是向量,b是一个值,相当于弥补的抽样误差。

就是均方差的矩阵形式,假设它最小,只要对 图片 8求导就能够。 获得:

图片 9

令上式=0,可见我们渴求的参数。

图片 10

那就是大家能够编制程序用的公式,这种艺术的名称为正规方程法。上边式子怎么求出来的?

2X^T(Xw-y) = 0  ,

2X^TXw-2X^Ty = 0

X^TXw = X^Ty 

若X^TX满秩,则可逆,故两侧同偶然间左乘(X^TX)^-1 就能够。

故得:

w =((X^TX)^-1卡塔尔X^Ty ,即为上边结果。

下边是咱们的Python代码:

# -*- coding: utf-8 -*-
"""
Created on Tue Oct 10 23:10:00 2017
Version:python3.5.1
@author: Stone
"""
import pandas as pd
from numpy.linalg import inv
from numpy import dot

# 正规方程法
# 拟合线性模型: Sepal.Length ~ Sepal.Width + Petal.Length + Petal.Width
# 该模型以萼片宽度+花瓣宽度+花瓣长度 来推测萼片长度。
#  即模型:Sepal.Length = Sepal.Width * x1 + Petal.Length * x2 + Petal.Width * x3 + b


iris = pd.read_csv('iris.csv')  #读取iris.csv 文件
temp = iris.iloc[:,2:5] #表示在你定义的矩阵iris中,分别是行[0,end),列[2:5)    # iloc直接确定行列数,左闭右开

temp['x0'] = 1    #为了把误差b加入w*=(w,b)向量(周志华的《机器学习》P55页的 w*上面有个‘^’符号,这里不好输入),temp表格后面加以1列X0,并每行赋值1,就是为了把b吸收进入w*。
X = temp.iloc[:,[0,1,2,3 ]]   #赋值矩阵X为0,1,2,3列,150行。 列名为 Sepal.Width,Petal.Length,Petal.Width,x0
Y = iris.iloc[:,1]   #选取标记列:Sepal.Length ,就是我们的拟合目标Sepal.Length。
Y = Y.values.reshape(len(iris), 1)
#values是返回值 reshape()重塑数组,如这里变成新的1列iris表格长度的列表,形如[[a],[b],...]
#书上Y是标记,就是我们要拟合的目标。

theta_n = dot(dot(inv(dot(X.T, X)), X.T), Y)  # theta = (X'X)^(-1)X'Y  dot是按照矩阵乘法的规则来运算,inv()是求逆矩阵的 X.T是X矩阵的转制
print(theta_n)  #打印权重系数

print('请依次输入需要预测的Sepal.Width,Petal.Length,Petal.Width:')
x1,x2,x3 = map(float,input().split())
t = (0.65083716*x1 + 0.70913196*x2 - 0.55648266*x3 + 1.85599749 )
print('预测的花萼长度为:',t)
#测试了下,三种数据的误差还可以,至少能拟合了。
#上面x1,x2,x3,b的系数值就是我们求出来的权值。

本代码使用的iris 练习集下载地址: 

输出如下图:

图片 11

原始花萼的长短数据为5.4,所以拟合是马到功成的,至于精度就不好说了。

线性回归:正是找到若干样品属性值(自变量)与标记值(作者的拟合目的,因变量)的线性关系。刚学这几个,有错误,望提出。

由于第一遍发这种文章,制版和公式都不佳,我们见谅。

参考: 1. 

            2. 周志华的《机器学习》

本文分享网站: 1)目的:通过壹天性子的线性组合;...

本文由金沙澳门官网网址发布于澳门金莎娱乐手机版,转载请注明出处:多元线性模型原理和python代码

关键词: