实验内容:
使用线性回归算法预测儿童身高
实验目的:
理解线性回归算法的原理,了解线性回归算法适用的问题类型,能够使用线性回归算法解决问题
实验内容:
一个人的身高除了随年龄变大而增长以外,在一定程度上收到遗传和饮食以及其他因素的影响,本次实验中,假定身高受年龄、性别、父母身高、祖父母身高、外祖父母身高的共同影响,并假定符合线性关系。已知若干样本,其中包含上述数据与身高的对应关系。使用线性回归模型预测儿童在其他条件都确定的情况下指定年龄可能会长成的身高,并假定18岁以后身高不再变化
实验数据:
#训练数据,每个子list分别表示儿童年龄、性别(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,166,173,165],
[6,0,180,165,175,163,171,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]]
)
#标签数据(儿童身高)
y=np.array[(60,90,100,110,130,140,150,164,160,163,168)]
#预测
Xs=np.array([[10,0,180,165,175,165,170,165],
[17,1,173,153,175,161,170,161],
[35,0,170,165,170,165,170,165]
])
#可以使用sklearn库中的回归函数
import copy
import numpy as np
from sklearn import linear_model
def linearRegressionPredict(x, y):
lr = linear_model.LinearRegression()
# 拟合
lr.fit(x, y)
return lr
# 儿童年龄,性别(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,166,173,165],
[6,0,180,165,175,163,171,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]]
)
# 儿童身高
y = np.array([60, 90, 100, 110,\
130, 140, 150, 164,\
160, 163, 168])
lr = linearRegressionPredict(x, y)
print('模型系数:', lr.coef_)
print('预测身高:', lr.intercept_)
xs = np.array([[10, 0, 180, 165, 175, 165, 170, 165],\
[17, 1, 173, 153, 175, 161, 170, 161],\
[35, 0, 170, 165, 170, 165, 170, 165]])
for item in xs:
i = copy.deepcopy(item)
if i[0] > 18:
i[0] = 18
print(item, ':', lr.predict(i.reshape(1,-1)))