这是一次统计学的作业
线性模型
今天我们所知道的回归是由达尔文(Charles Darwin)的表兄弟Francis Galton发明的。Galton
于1877年完成了第一次回归预测,目的是根据上一代豌豆种子(双亲)的尺寸来预测下一代豌
豆种子(孩子)的尺寸。Galton在大量对象上应用了回归分析,甚至包括人的身高。他注意到,
如果双亲的高度比平均高度高,他们的子女也倾向于比平均高度高,但尚不及双亲。孩子的高
度向着平均高度回退(回归)。Galton在多项研究上都注意到这个现象,所以尽管这个英文单
词跟数值预测没有任何关系,但这种研究方法仍被称作回归.
第一步:准备数据
建立一个函数名字,叫load_data,目的为打开一个TAB键分隔的文本文件,返回值数据与类标。
注意:目标数据集ex0有两三列,第一二列为数据,三列为标签
import numpy as np
#load data from file导入txt数据
def load_data(filename):
dataset = []
label = []
file = open(filename)
for line in file.readlines():
lineArr = line.strip().split('\t')
dataset.append(lineArr[0:2])
label.append(lineArr[-1])
return np.array(dataset,dtype=np.float64),\
np.array(label,dtype=np.float64).reshape(-1,1)
第二步 可视化画图
import matplotlib.pyplot as plt
#导入数据并且可视化一下
x,y = load_data("C:/Users/Nicht_sehen/Desktop/ex0.txt")
print(x.shape,y.shape)
print(x[0],y[0])
plt.scatter(x[:,1],y[:,0],marker='x',color = 'r')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
(200, 2) (200, 1)
[1. 0.067732] [3.176512]
第三步 带入正规方程求解,画画图看拟合效果
#简单的线性回归,使用求导公式就可以求得w的最优值
def normalEquation(X_train,y_train):
w = np.zeros((X_train