zoukankan      html  css  js  c++  java
  • 线性回归

    线性回归知识(参考链接)

     

     正规方程推导过程

    代码实现

      matlab

    x(1:10,1) = [-0.5,-0.45,-0.35,-0.35,-0.1,0,0.2,0.25,0.3,0.5];
    x(1:10,2) = 1;
    y = [-0.2,0.1,-1.25,-1.2,0,0.5,-0.1,0.2,0.5,1.2];
    y = transpose(y);
    figure;
    hold on
    scatter(x(:,1),y,'r','filled');
    axis([-1.0,1.0,-3.0,3.0])
    %求权重
    x_T = transpose(x);
    w = inv(x_T*x)*x_T*y;
    hat_y = x*w;
    disp('权重'); disp(w);
    x1 = linspace(-1,1,50);
    hat_y = x1*w(1)+w(2);
    plot(x1,hat_y,'g');
    axis([-1.0,1.0,-3,3]);
    title('线性回归')
    xlabel('x')
    ylabel('y')
    

     

     Python

     1 import numpy as np
     2 import math
     3 import matplotlib.pyplot as plt
     4  X = np.hstack((np.array([[-0.5,-0.45,-0.35,-0.35,-0.1,0,0.2,0.25,0.3,0.5]]).reshape(-1, 1), np.ones((10,1))*1))
     5 y = np.array([-0.2,0.1,-1.25,-1.2,0,0.5,-0.1,0.2,0.5,1.2]).reshape(-1,1)
     6 # 用公式求权重
     7 w = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
     8 hat_y = X.dot(w)
     9 print("Weight:{}".format{list(w)})
    10 x = np.linspace(-1, 1, 50)
    11 hat_y = x * w[0] + w[1]
    12 plt.figure(figsize=(4,4))
    13 plt.xlim(-1.0, 1.0)
    14 plt.xticks(np.linspace(-1.0, 1.0, 5))
    15 plt.ylim(-3, 3)
    16 plt.plot(x, hat_y, color='red')
    17 plt.scatter(X[:,0], y[:,0], color='black')
    18 plt.xlabel('$x_1$')
    19 plt.ylabel('$y$')
    20 plt.title('$Linear Regression$')
    21 plt.show()

     

  • 相关阅读:
    事务的特性(ACID)
    网络代理
    防止SpringMVC拦截器拦截js等静态资源文件
    Tomcat配置虚拟目录
    SpringMVC总结(SSM)
    Spring声明式事务总结
    Linux中MySQL忽略表中字段大小写
    MySQL之sql文件的导入导出
    MyBatis总结
    Linux网络
  • 原文地址:https://www.cnblogs.com/andrew-address/p/13057512.html
Copyright © 2011-2022 走看看