利用sklearn.linear_model.LinearRegression预测体重

import numpy as np
#创建数据
data = np.array([[150,50],
                [152,52],
                [160,55],
                [164,57],
                [165,58],
                [168,59],
                [170,60],
                [171,61],
                [173,61],
                [173,61],
                [176,63],
                [177,64],
                [180,67],
                [183,70],
                [184,71]], np.int32)
#提取特征和标签
x = data[:,0:-1]#从第0列开始到倒数第2列停止
y = data[:,-1] #取出最后一列

print(np.shape(x), np.shape(y))
#可视化数据
import matplotlib.pyplot as plt
%matplotlib inline

plt.scatter(x,y)
plt.show()

在这里插入图片描述

#通过线性回归模型来拟合给定的数据
from sklearn.linear_model import LinearRegression
model = LinearRegression().fit(x,y)
print(model.predict([[169]]))  #注意model.predict()中要预测的数据跟训练数据x的sha
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据您提供的代码,您想要预测身高为190的学生体重,并且画出身高和体重之间的回归线。 您的代码中已经使用了sklearn库的线性回归模型来拟合身高和体重之间的关系,并且使用predict()方法来预测身高为190的学生体重。但是,在预测身高为190的学生体重之前,您需要对身高数据进行标准化处理,以提高模型的准确性。 以下是修改后的代码,其中使用了sklearn库中的preprocessing模块来进行身高数据的标准化处理: ``` import numpy as np import matplotlib.pyplot as plt from sklearn import linear_model import pandas as pd from sklearn import preprocessing def data_input(): data=pd.read_excel('22AI1.xlsx') data=data.dropna(axis=0) data = data.reset_index(drop=True) X=data.身高 Y=data.体重 X=np.array(X).reshape(-1,1) Y=np.array(Y).reshape(-1,1) return X, Y # 标准化身高数据 X = preprocessing.scale(data_input()[0]) Y=data_input()[1] clf=linear_model.LinearRegression() clf.fit(X,Y) # 标准化待预测的身高数据 X2 = preprocessing.scale(np.array([[160],[165],[170],[190]])) Y2=clf.predict(X2) res=Y2[-1][0] # 取出预测结果中身高为190的学生体重 print('预测身高190的学生体重为:{:.2f}'.format(res)) # 画图部分 plt.plot(X,Y,'ks') plt.plot(X2,Y2,'g-') plt.show() ``` 在这个修改后的代码中,我们首先使用了preprocessing.scale()方法对原始的身高数据进行了标准化处理,使其具有相同的尺度。然后,我们将标准化后的身高数据用于训练线性回归模型,并使用predict()方法来预测身高为190的学生体重。最后,我们从预测结果中取出身高为190的学生体重,并使用format()方法将结果打印出来。 在画图部分,我们将标准化后的身高数据和原始的体重数据用于绘制散点图,将标准化后的身高数据和预测结果用于绘制回归线。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值