体重预测[线性回归]

在人们的日常生活中,体重偏高与偏低均是身体出现亚健康的体现,也是身体部分器官发病的前兆。影响体重的因素较多(如体内激素水平、饮食情况、心情原因等),而且与身高具有直接的相关性。因而,如何在指定身高下评估体重是否达标进而让人们提前预知身体状况具有一定实际意义。

训练数据测试数据
序号身高(米)体重(千克)序号身高(米)体重(千克)
10.861210.8311
20.961521.0817
31.122031.2627
41.353541.5141
51.554851.6050
61.635161.6764
71.715971.7566
81.857581.9089

cf63ca5b980ae3fce9bbaaeca9a037c9.png

代码:


'''一、问题描述:根据表1所示训练数据构建线性回归模型并求取测试数据的预测精度'''

import numpy as np

import matplotlib.pyplot as plt

from sklearn.linear_model import LinearRegression

x_train=np.array([[0.86],[0.96],[1.12],[1.35],[1.55],[1.63],[1.71],[1.85]])

y_train=np.array([[12],[15],[20],[35],[48],[51],[59],[75]])

x_test=[[0.83],[1.08],[1.26],[1.51],[1.60],[1.67],[1.75],[1.90]]

y_test=[[11],[17],[27],[41],[50],[64],[66],[89]]

'''二、数据处理:

数据归一化处理'''

X_train=(x_train-np.min(x_train))/(np.max(x_train)-np.min(x_train))

Y_train=(y_train-np.min(y_train))/(np.max(y_train)-np.min(y_train))

X_test=(x_test-np.min(x_test))/(np.max(x_test)-np.min(x_test))

Y_test=(y_test-np.min(y_test))/(np.max(y_test)-np.min(y_test))

'''======================================================================'''

'''三、利用线性回归构建模型'''

'''归一化'''

L=LinearRegression(fit_intercept=True)

L.fit(X_train,Y_train)

ys=L.score(X_test,Y_test)

print(ys)

'''未归一化'''

L.fit(x_train,y_train)

yn=L.score(x_test,y_test)

print(yn)

'''====================================================================='''

#精度对比图

plt.figure(1)

plt.xlim(0, 1)

plt.ylim(0, 1)

plt.xlabel("DataClass")

plt.ylabel("TestAccuracy")

Data_list=['Normalized','Not Normalized']

xlis=[0.3,0.7]

ylis=[ys,yn]

plt.bar(xlis,ylis,width=0.3,tick_label=Data_list,color=['g','b'])

for i in range(len(xlis)):

    plt.text(xlis[i], ylis[i],format(ylis[i],'.2f'))

plt.show()

'''======================================================================'''

#身高体重预测图

print("L的截距为:",L.intercept_[0])

print("L的斜率为:",L.coef_[0][0])

b=L.intercept_[0]

k=L.coef_[0][0]

Y_fit=k*np.array(x_test)+b

plt.figure(2)

plt.xlabel("height")

plt.ylabel("weight")

plt.scatter(x_test,Y_fit,color='black',label='fit')

plt.plot(x_test,Y_fit,color='red',label='fit_line')

plt.scatter(x_test,y_test,color='y',label='test')

plt.grid(True)

plt.legend(loc='upper left')

plt.show()

'''四、实验分析:

体重数据随身高数据的增大而增大,归一化数据的测试精度比未归一化数据测试精度高'''
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值