机器学习——线性回归
一、简介
1.1 线性回归的概念
利用回归方程 (函数) 对一个或多个自变量 (特征值) 和因变量 (目标值) 之间关系进行建模的一种分析方式。
1.2 一元线性回归
求一个自变量(特征值)与因变量 (目标值) 之间关系并进行建模,与类比二元一次方程的方程(y = kx+b,k称为斜率,b称为截距)得到一元线性回归的方程为:
y = wx+b,这里的w称为权重,b称为偏置。
1.3 多元线性回归
求多个自变量(特征值)与因变量 (目标值) 之间关系并进行建模,类比一元线性回归的方程得到多元线性回归的方程为:
y = w1x1 + w2x2 + w3x3 +……+ b,这里w1x1 + w2x2 + w3x3 +……可以利用矩阵的思想化简为


二、LinearRegression()方法的使用
2.1 导入需要的包
from sklearn.linear_model import LinearRegression
通过sklearn.linear_model.LinearRegression()创建一个线性回归模型的对象。
1.参数:
fit_intercept: 必选(默认True):是否计算截距 b。True=计算,False=模型强制过原点(b=0)
normalize:是否对特征 X 进行归一化(默认 False),注意对于不同版本的sklearn,LinearRegression()方法可能没有此参数。
copy_X :是否对X复制,如果选择false,则直接对原数据进行覆盖。(即经过中心化,标准化后,是否把新数据覆盖到原数据上)
n_jobs:计算时设置的任务个数(number of jobs)。如果选择-1则代表使用所有的CPU。这一参数的对于目标个数>1(n_targets>1)且足够大规模的问题有加速作用。
2.2 训练模型
使用fit()方法来训练模型
lr_model.fit(
X=X_train, # 必选:训练集特征矩阵
y=y_train, # 必选:训练集目标变量
sample_weight=np.array([...]) # 可选:样本权重数组,形状 (n_samples,),为每个样本分配权重(默认 None,所有样本权重相等)
)
2.3 进行预测
使用predict()方法进行预测
lr_model.predict( X ) # 必选参数 ,使用训练得到的估计器对输入为X的集合进行预测(X可以是测试
集,也可以是需要预测的数据)。
2.4 评估模型
使用score()方法来评价模型的性能,会给出一个表示模型拟合优度的R^2
lr_model.score(
x=X_test, # 必选:评估用特征矩阵
y=y_test, # 必选:评估用真实目标变量
sample_weight=np.array([...]) # 可选:样本权重数组,形状 (n_samples,),默认 None
)
三、评估模型
需要一个评判标准:损失函数
损失函数越小,误差越小,模型建立更符合实际。
误差概念:用预测值 y - 真实值 y 就是误差
损失函数:衡量每个样本预测值与真实值效果的函数,也叫代价函数、成本函数、目标函数
用于描述 每个样本点 和 其预测值之间关系的,等于各个样本的误差和,让损失函数最小,就是让误差和小,线性回归效率,评估就越高
3.1 种类

让损失函数最小的方法:
1. 利用梯度逐步逼近最优解
2. 通过求方程法(求导、求偏导)
四、实例
import pandas as pd
from sklearn.linear_model import LinearRegression
data = pd.read_csv("多元线性回归.csv", encoding='gbk', engine='python')
corr = data[["体重", "年龄", "血压收缩"]].corr()
lr_model = LinearRegression()
x = data[['体重', '年龄']]
y = data[['血压收缩']]
lr_model.fit(x,y)#训练模型
score = lr_model.score(x,y)
print(lr_model.predict(x))
print(lr_model.predict([[80,60]]))
print(lr_model.predict([[80,60],[70,20]]))
#coef_为权重
#intercept_为偏置
a = lr_model.coef_
b = lr_model.intercept_
print("线性回归模型为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}".format(a[0][0],a[0][1],b[0]))
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)