本文已参加「新人创作礼」流动,一起开启掘金创作之路。 实践上,一个人的身高除了随年纪变大而增长之外,在肯定水平上还受遗传和饮食习惯以及其余因素的影响,然而饮食等其余因素对身高的影响很难掂量。咱们能够把问题简化一下,假设一个人的身高只受年龄、性别、父母身高、祖父母身高,外祖父母身高这几个因素的影响,并假设大抵合乎线性关系。

import copyimport numpy as npfrom sklearn import linear_model# 儿童年龄,性别(0女1男),父亲身高,母亲身高,祖父身高,祖母身高,外祖父身高,外祖母身高x = np.array([[1, 0, 180, 165, 175, 165, 170, 165],              [3, 0, 180, 165, 175, 165, 173, 165],              [4, 0, 180, 165, 175, 165, 170, 165],              [6, 0, 180, 165, 175, 165, 170, 165],              [8, 1, 180, 165, 175, 167, 170, 165],              [10, 0, 180, 166, 175, 165, 170, 165],              [11, 0, 180, 165, 175, 165, 170, 165],              [12, 0, 180, 165, 175, 165, 170, 165],              [13, 1, 180, 165, 175, 165, 170, 165],              [14, 0, 180, 165, 175, 165, 170, 165],              [17, 0, 170, 165, 175, 165, 170, 165]])# 儿童身高,单位:cmy = np.array([60, 90, 100, 110,              130, 140, 150, 164,              160, 163, 168])# 创立线性回归模型lr = linear_model.LinearRegression()# 拟合lr.fit(x, y)# 测试数据集xs = np.array([[10, 0, 180, 165, 175, 165, 170, 165],               [17, 1, 173, 153, 175, 161, 170, 161],               [34, 0, 170, 165, 170, 165, 170, 165]])for item in xs:    # 深复制,假如超过18岁当前就不再长高了    item1 = copy.deepcopy(item)    if item1[0] > 18:        item1[0] = 18    item2 = item1.reshape(1, -1)  # 将数组转换化为一行    pre_y = lr.predict(item2)  # 获取预测身高    print(item, ':', str(pre_y))print(lr.coef_)  # 线性回归函数的系数print(lr.intercept_)  # 线性回归函数的截距i = 1Y = "Y = "for b in lr.coef_:    Y += str(b) + " * X" + str(i) + "\n + "    i += 1Y += str(lr.intercept_)print(Y)  # 模型的线性回归函数方程

依据测试集预测儿童身高


 多元线性回归模型:


线性回归函数的系数 (获取B1.....Bk)


线性回归函数的截距 (获取截距B0)


依据线性回归函数的系数和截距,失去模型的线性回归函数方程