计算机数值分析:曲线拟合最小二乘法(python实现

曲线拟合最小二乘法
其中使用了机器学习之中得正规化方程直接计算得到theta

# coding=gbk;
# 要输入的数据data=165 187 123 126 150 172 123 125 141 148
import numpy as np;
import matplotlib.pyplot as plt;
def Data_in(list0,list1,list2):
    list0=input("请输入离散点的值:").split(" ");
    for i in range(0,len(list0)):
        if i%2==0:  #如果是奇数  那么指的也就是x
            list1.append(float(list0[i]));
        else:  #如果是偶数 那么就是y
            list2.append(float(list0[i]));
    return list0,list1,list2;

def draw_rawData(x1,y1):
    plt.scatter(x1,y1,color="green");
    plt.xlabel("value of x");
    plt.ylabel("value of y");
    return plt;

list_temp=[]; x=[]; y=[];
list_temp,x,y=Data_in(list_temp,x,y);
list_x=x.copy()
list_y=y.copy()
plt1=draw_rawData(list_x,list_y);
plt1.show()
input("Program paused.Press ENTER to continue"); 

m=len(y);
x=np.c_[np.ones(m),x];
y=np.c_[y];
theta=np.zeros(2);
theta=np.c_[theta];
theta=((np.linalg.inv((x.T).dot(x))).dot(x.T)).dot(y);  #正规化方程

plt2=draw_rawData(list_x, list_y);
x1=np.arange(100,180,0.1)
y1=theta[0][0]+x1*theta[1][0];
plt.plot(x1,y1,c='r')
plt2.title('final');
plt2.show();

运行结果:

计算机数值分析:曲线拟合最小二乘法(python实现_第1张图片

遇事不决,可问春风

你可能感兴趣的:(计算机数值分析,计算机数值分析,python)