今天学习了机器学习中的线性回归,线性回归能够帮助我们找到特征x与目标y之间的线性关系。通过最小二乘法算出权重,用 R² 来衡量 特征X 到底能解释多少目标 y 的波动。

后面做了一个实践,内容为利用线性回归来判断一个人的血压。

首先导入pandas库和线性回归模型,接着找到当前代码文件夹下的多元线性回归csv文件,用gbk编码解码里面的文字,用python解析文件内容,最后把所有数据存入一个叫 data 的表格里。这里是因为我的CSV文件(“多元线性回归.csv”)是在中文Windows系统下,通过Excel或记事本等软件默认保存的,这类软件在简体中文环境下通常使用 GBK 编码来存储文本;而Python的pandas库在默认情况下会使用UTF-8编码来尝试读取文件,两者的编码规则不一致,若直接读取,系统在解析文件中的中文字符(如列名“体重”、“血压”)时就会因字节无法匹配而报错或产生乱码,因此必须通过指定encoding='gbk'来强制告诉Python解释器使用正确的“解码规则”进行读取。同时,加上engine='python'是为了避免在Windows系统中因路径或文件名包含中文而引发C引擎的解析报错,确保文件能顺利加载。

import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv("多元线性回归.csv",encoding='gbk',engine='python')

再接着创建一个空的线性回归容器,从data表格里复制出两列,体重和年龄作为输入特征x;复制出血压收缩这一列作为输出目标y。然后训练模型。

lr_model = LinearRegression()
x = data[['体重','年龄']]
y = data[['血压收缩']]

lr_model.fit(x,y)

最后把刚刚用于训练的x全部样本的体重和年龄重新喂给模型,让模型算出每个样本对应的“预测血压值”。输出“体重”和“年龄”这两个变量,能够共同解释“血压收缩”这个指标总波动程度的百分比,即 R²。


更多推荐