机器学习线性模型基础

线性模式不是特指某一模型,而是一类模型。在机器学习领域,常用的线性模型包括线性回归、岭回归、套索回归、逻辑回归和线性SVC等。

线性模型的一般公式

import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-5,5,100)   #生产线段
y = 0.5*x + 3
plt.plot(x,y,c='orange')
plt.title('Straight Line')


图中直线便是直线方程y=0.5x+3的图像,而线性模式正式通过训练数据集确定自身的系数(斜率)和截距的。

线性模型的图形表示

假设两个点

它们的坐标是(1,3)和(4,5),那么我们可以画一条直线穿过这两个点,并计算出这条直线的方程。

from sklearn.linear_model import LinearRegression
X = [[1],[4]]
y = [3,5]
lr = LinearRegression().fit(X,y)
z = np.linspace(0,5,20)
plt.scatter(X,y, s=80)
plt.plot(z,lr.predict(z.reshape(-1,1)),c='k')
plt.title('Straight Line')


确定这条直线的方程:

print('nnn直线方程为:')
print('==============n')
print('y = {:.3f}'.format(lr.coef_[0]),'x','+{:.3f}'.format(lr.intercept_))
print('n=========================')
print('nnn')

直线方程为:
y = 0.667 x +2.333

如果有三个点
X = [[1],[4],[3]]
y = [3,5,3]

其他代码略
得到如下图像:

直线没有穿过任何一个点,而是位于一个和3个点的距离相加最小的位置。
直线方程为:
y = 0.571 x +2.143

实际应用中,数据量要远远大于2个或3个。
from sklearn.datasets import make_regression

#生成用于回归分析的数据集
X,y = make_regression(n_samples=50, n_features=1, n_informative=1, noise=50, random_state=1)

#使用线性模型对数据进行拟合
reg = LinearRegression()

reg.fit(X,y)
#z是等差数据,用来画出线性模型的图形
z= np.linspace(-3,3,200).reshape(-1,1)
plt.scatter(X,y,c='b',s=60)
plt.plot(z,reg.predict(z),c='k')
plt.title('Linear Regression')

print('nnn代码运行结果:')
print('直线的系数是:{:.2f}'.format(reg.coef_[0]))
print('直线的截距是:{:.2f}'.format(reg.intercept_))
print('nnn')

代码运行结果:
直线的系数是:79.52
直线的截距是:10.92

使用线性模型的前提条件是,假设目标是数据特征的线性组合。但需要特别注意的是,使用一维数据集进行验证会让结果有一点偏颇,而对于特征变量较多的数据集,线性模型就显得十分强大。尤其是,当训练数据集的特征变量大于数据点的数量的时候,线性模型可以对续联数据集做出近乎完美的预测。

用于回归分析的线性模型有很多种类,它们之间的区别在于如何从训练集中确定模型参数,以及如何控制模型复杂度。

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权,转载请注明出处。
文章名称:《机器学习线性模型基础》
文章来自:泰恩数据
文章链接:https://tyne.cc/278.html
本站资源仅供个人学习使用,请勿用于商业用途。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址