机器学习笔记 (四)线性回归

线性回归

  1. 简单线性回归
  2. 多元线性回归
  3. 广义线性模型
  4. 线性判别分析

简单线性回归

在这里插入图片描述

简单线性回归实现

  1. 第一步:数据预处理
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

dataset = pd.read_csv('studentscores.csv')
X = dataset.iloc[ : ,   : 1 ].values
Y = dataset.iloc[ : , 1 ].values

from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split( X, Y, test_size = 1/4, random_state = 0) 
  1. 第二步:训练集使用简单线性回归模型来训练
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor = regressor.fit(X_train, Y_train)
  1. 第三步:预测结果
Y_pred = regressor.predict(X_test)
  1. 第四步:可视化
  • 训练集结果可视化
plt.scatter(X_train , Y_train, color = 'red')
plt.plot(X_train , regressor.predict(X_train), color ='blue')
plt.show()
  • 测试集结果可视化
plt.scatter(X_test , Y_test, color = 'red')
plt.plot(X_test , regressor.predict(X_test), color ='blue')
plt.show()

多元线性回归

在这里插入图片描述

多元线性回归实现

  1. 第1步: 数据预处理
  • 导入库
import pandas as pd
import numpy as np
  • 导入数据集
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[ : , :-1].values
Y = dataset.iloc[ : ,  4 ].values
  • 将类别数据数字化
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder = LabelEncoder()
X[: , 3] = labelencoder.fit_transform(X[ : , 3])
onehotencoder = OneHotEncoder(categorical_features = [3])
X = onehotencoder.fit_transform(X).toarray()
  • 躲避虚拟变量陷阱
X = X[: , 1:]
  • 拆分数据集为训练集和测试集
from sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size = 0.2, random_state = 0)
  1. 第2步: 在训练集上训练多元线性回归模型
from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, Y_train)
  1. 第3步: 在测试集上预测结果
y_pred = regressor.predict(X_test)

广义线性模型

线性模型虽简单,但却又丰富的变化。对于线性模型的预测值,有两种情况:

  • 希望线性模型的预测值逼近真实标记y,这就是线性回归模型;
    \begin{align*}
    y=\vec{W}^{T}\vec{X}+b
    \end{align*}
  • 希望线性模型的预测值逼近y的衍生物,例如:假设示例所对应的输出标记是在指数尺度上变化,那就可将输出标记的对数作为线性模型逼近的目标。这就是对数线性回归(log-linear regression)。
    \begin{align*}
    \ln y=\vec{W}^{T}\vec{X}+b
    \end{align*}

广义线性模型

上述的对数线性回归模型,已是线性模型的扩展,它实际上在试图让

\begin{align*}
e ^ {\vec{W}^{T}\vec{X}+b}
\end{align*}

逼近y。但是在形式上仍然是线性回归,实际上已是在求取输入空间到输出空间的非线性函数映射,这里的对数函数起到了将线性回归模型的预测值与真实标记联系起来的作用。

更一般地,考虑到单调可微函数g(·),令

\begin{align*}
y=g ^ {-1}(\vec{W}^{T}\vec{X}+b)
\end{align*}

这样得到的模型称为“广义线性模型”,其中函数g(·)称为“联系函数”。显然,对数线性回归是广义线性模型在g(·)=ln(·)时的特例。

对数几率回归

上面描述的使用线性模型进行回归学习,但若要做的事分类任务,根据广义线性模型:

只需找一个单调可微函数将分类任务的真是标记y与线性回归的预测值联系起来。

考虑二分类任务输出标记为{0,1},而线性回归模型产生的预测值
\begin{align*}
z=\vec{W}^{T}\vec{X}+b
\end{align*}
是实值,于是,我们需要将实值z转换为0/1值,最理想的是“单位阶跃函数”,但是单位阶跃函数不连续,不能直接用作g(·)。于是我们找到“对数几率函数”:
\begin{align*}
y=\frac{1}{1+e ^ {\vec{W}^{T}\vec{X}+b}}
\end{align*}
于是,我们可以得到对数几率回归模型(也有文献称为“逻辑回归”,“对率回归”):
\begin{align*}
\ln \frac{y}{1-y}=\vec{W}^{T}\vec{X}+b
\end{align*}
虽然它的名字是“回归”,但实际确实一种分类学习方法。它是直接对分类可能性进行建模,无需事先假设数据分布,避免了假设分布不准确所带来的问题。它不仅预测出“类别”,而是可得到近似概率预测,这对许多需要利用概率辅助决策的任务很有用。此外对率函数有很好的数学性质,是任意阶可导的凸函数。现有的许多数值优化算法都可以直接用于求取最优解。

线性判别分析

线性判别分析(Linear Discriminant Analysis,简称 LDA)是一种经典的线性学习方法,也称为“Fisher 判别分析”。

LDA的思想非常朴素:给定训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近、异类样例的投影点尽可能的远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值