线性回归

线性回归

什么是线性回归

假如给定一组特征值,给定一个输出值,线性回归的目的就是找到一系列的参数,与特征值线性组合然后得到输出值。比如现在给你一组特征 x1=1,x2=2 x 1 = 1 , x 2 = 2 ,然后对应两个输出值y,其中 x1 x 1 对应y = 1, x2 x 2 对应y为2,所以这个时候你就能找到一个参数 θ=1 θ = 1 这样就有 y=θx y = θ x ,这个时候再来一个新的特征值比如 x3=3 x 3 = 3 你就可以带入这个线性方程得到对应y。所以线性方程的难点就在于怎么找到这一系列的参数。

通过上面的简单介绍,也能看出来线性回归一般用于回归问题,也就是其输出是一个连续值,与其相反的是分类问题,其输出是一些离散值。

线性回归数学推导

如果你想了解其原理,那么学习一下数学推导是有必要的,如果你仅仅想使用这个算法,可以跳过此步。

根据开始我们的介绍,我们明白了线性回归大概是干什么的了,下面给出其数学定义,假如一个样本有两个特征 x1,x2 x 1 , x 2 ,并且对应参数为 θ1,θ2 θ 1 , θ 2 ,然后在添加一个 θ0 θ 0 作为偏移量,所以这个时候你得到的一个回归方程为:

hθ(xi)=θ0+θ1xi1+θ2xi2 h θ ( x i ) = θ 0 + θ 1 x 1 i + θ 2 x 2 i
,而这个只是一个你估计的量,因为 θ θ 都会存在一些误差,而你的目的就是使得这个误差最小,假如有一个函数 yi=hθ(xi)+ξi y i = h θ ( x i ) + ξ i 这个为正确值,所以你的目的就是使得误差最小,也就是对于存在的每个 yihθ(xi) y i − h θ ( x i ) 最小,为了更加准确一点也就是是的函数(这个也可以通过概率论中的似然估计得到,这里不展开了):
J(θ)=12i=1m(yihθ(xi)) J ( θ ) = 1 2 ∑ i = 1 m ( y i − h θ ( x i ) )
的值最小,这里求最小值可以使用最小二乘法也可以使用梯度下降。或者改写成矩阵的形式进行求导,求极值点。

一些符号的解释: xji x i j 这个代表第 j 个样本的第 i 个特征值。 yj y j 代表第 j 个样本的输出。

使用sklearn进行iris鸢尾花测试

1、 首先进行库的导入:
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.cross_validation import train_test_split
from sklearn import datasets  

有些可能本次没有用上只是习惯性引入了。

2、加载数据集并划分为测试集以及训练集
# 读取数据集
iris = datasets.load_iris()
# 准备特征值
X = iris.data
# 准备标签y
y = iris.target
# 交叉验证分训练集和测试集
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state = 1)  
3、进行线性回归训练
# 进行线性回归算法,sklearn使用的是最小二乘法
linreg = LinearRegression()
# fit方法就是开始把数据喂入并进行训练
linreg.fit(X_train,y_train)
# 使用score函数把测试集喂入能测试出其准确率
print(linreg.score(X_test,y_test))  
4、可视化输出比较结果
# 进行模型评估 得到预测值
y_pre= linreg.predict(X_test)
# 画图看结果  画出预测值的散点以及真实值的散点 2*np.arange(len(y_pre))代表第0、1、2个样本,乘以2只是为了让点的x轴之间更加宽,易于观察
plt.scatter(2*np.arange(len(y_pre)),y_pre) 
plt.scatter(2*np.arange(len(y_pre)),y_test)
# 
plt.show()  

线性回归_1.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值