python线性回归模型_Python机器学习/LinearRegression(线性回归模型)(附源码)

LinearRegression(线性回归)

1.线性回归简介

线性回归定义:

我个人的理解就是:线性回归算法就是一个使用线性函数作为模型框架($y = w*x + b$)、并通过优化算法对训练数据进行训练、最终得出最优(全局最优解或局部最优)参数的过程。

y:我们需要预测的数值;

w:模型的参数(即我们需要通过训练调整的的值)

x:已知的特征值

b:模型的偏移量

我们的目的是通过已知的x和y,通过训练找出合适的参数w和b来模拟x与y之间的关系,并最终通过x来预测y。

分类:

线性回归属于监督学习中的回归算法;

线性回归作为机器学习的入门级算法,很适合刚接触机器学习的新手。虽然线性回归本身比较简单,但是麻雀虽小,五脏俱全,其中涉及到的“线性模型”、“目标函数”、“梯度下降”、“迭代”、“评价准则”等思想与其他复杂的机器学习算法是相通的,深入理解线性回归后可以帮助你更加轻松的学习其他机器学习算法。

2.线性回归模型解析

2.1 线性回归模型示意图

1437134-20190219213410534-1268849052.jpg

2.2模型的组成部件

2.2.1 假设函数(Hypothesis function)

$h_w(x) = b + w_0x_0 + w_1x_1 + ··· +w_nx_n$

使用向量方式表示:

$X=\begin{bmatrix}

\ x_0

\\ x_1

\\\vdots

\\ x_n

\end{bmatrix},W=\begin{bmatrix}

\ w_0

\\ w_1

\\\vdots

\\ w_n

\end{bmatrix}$

则有:$h_w(x) = W^TX+ b$

2.2.2 损失函数:(Cost function)

这里使用平方差作为模型的代价函数

$J(w) = \frac{1}{2m}\sum_{i=1}^{m}(h_w(x^{(i)}) - y^{(i)})^2$

2.2.3 目标函数:(Goal function)

$minimize(J(w))$

2.2.4 优化算法:(optimization algorithm)

梯度下降法(Gradient descent)

关于梯度下降法这里不详细介绍;

3.使用python实现线性回归算法

ContractedBlock.gif

ExpandedBlockStart.gif

1 #-*- coding: utf-8 -*-

2 importnumpy as np3 from matplotlib importpyplot as plt4

5

6 #生成训练使用数据;这里线性函数为 y = 1.5*x + 1.3

7 defdata_generate():8 #随机生成100个数据

9 x = np.random.randn(100)10 theta = 0.5 #误差系数

11 #为数据添加干扰

12 y = 1.5*x + 1.3 + theta*np.random.randn(100)13 returnx,y14

15 classLinearRegression():16 '''

17 线性回归类18 参数:19 alpha:迭代步长20 n_iter:迭代次数21 使用示例:22 lr = LinearRegression() #实例化类23 lr.fit(X_train,y_train) #训练模型24 y_predict = lr.predict(X_test) #预测训练数据25 lr.plotFigure()用于画出样本散点图与预测模型26 '''

27 def __init__(self,alpha=0.02,n_iter=1000):28 self._alpha = alpha #步长

29 self._n_iter = n_iter #最大迭代次数

30

31 #初始化模型参数

32 definitialPara(self):33 #初始化w,b均为0

34 return0,035

36 #训练模型

37 deffit(self,X_train,y_train):38 #保存原始数据

39 self.X_source =X_train.copy()40 self.y_source =y_train.copy()41

42 #获取训练样本个数

43 sample_num =X_train.shape[0]44 #初始化w,w0

45 self._w, self._b =self.initialPara()46

47 #创建列表存放每次每次迭代后的损失值

48 self.cost =[]49

50 #开始训练迭代

51 for _ inrange(self._n_iter):52 y_predict =self.predict(X_train)53 y_bias = y_train -y_predict54 self.cost.append(np.dot(y_bias,y_bias)/(2 *sample_num))55 self._w += self._alpha * np.dot(X_train.T,y_bias)/sample_num56 self._b += self._alpha * np.sum(y_bias)/sample_num57

58 defpredict(self,X_test):59 return self._w * X_test +self._b60

61 #画出样本散点图以及使用模型预测的线条

62 defplotFigure(self):63 #样本散点图

64 plt.scatter(self.X_source,self.y_source,c='r',label="samples",linewidths=0.4)65

66 #模型预测图

67 x1_min =self.X_source.min()68 x1_max =self.X_source.max()69 X_predict = np.arange(x1_min,x1_max,step=0.01)70 plt.legend(loc='upper left')71

72 plt.plot(X_predict,self._w*X_predict+self._b)73 plt.show()74

75 if __name__ == '__main__':76 #创建训练数据

77 x_data,y_data =data_generate()78

79 #使用线性回归类生成模型

80 lr =LinearRegression()81 lr.fit(x_data,y_data)82

83 #打印出参数

84 print(lr._w,lr._b)85 #画出损失值随迭代次数的变化图

86 plt.plot(lr.cost)87 plt.show()88 #画出样本散点图以及模型的预测图

89 lr.plotFigure()90

91 #预测x

92 x = np.array([3])93 print("The input x is{0},then the predict of y is:{1}".format(x,lr.predict(x)))

线性回归代码

更多线性回归的代码参考github:线性回归

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: "python机器学习基础源码.zip" 是一个压缩文件,其中包含了一些用Python编写的机器学习的基础源码机器学习是一门研究如何使计算机能够通过数据学习和改进的领域。通过使用机器学习算法和模型,我们可以让计算机自动从数据中发现规律和模式,并利用这些知识来做出预测和决策。 在这个压缩文件中,可能会有一些用于演示不同机器学习算法的源码。这些算法可以用于分类、回归、聚类、降维等各种机器学习任务。其中一些常见的机器学习算法可能包括决策树、支持向量机、朴素贝叶斯、神经网络等。 这些源码文件可能包含了一些常见的Python机器学习库的使用示例,例如Scikit-learn、Tensorflow、Keras等。这些库提供了许多高效的机器学习算法和工具,可以帮助开发者更方便地实现机器学习任务。 通过研究这些源码,我们可以学习到如何使用Python编写机器学习算法,如何准备数据、训练模型、评估性能等。同时,我们也可以了解到机器学习领域中的一些常见问题和解决方案。 总之,"python机器学习基础源码.zip" 这个压缩文件提供了一些机器学习的基础源码,是学习和实践机器学习的很好的资源。 ### 回答2: Python机器学习基础源码.zip是一个压缩文件,其中包含了Python机器学习的基础源码Python是一种强大的编程语言,也是数据科学和机器学习领域广泛使用的语言之一。机器学习是一种人工智能的分支,旨在让计算机能够通过数据学习,从而做出预测或进行决策。 Python机器学习基础源码.zip中的文件可能包含了各种用Python编写的机器学习算法或模型的源代码,例如线性回归、逻辑回归、决策树、支持向量机等等。这些源码的编写是为了解决机器学习问题,如分类、回归、聚类等。 学习源码对于理解机器学习算法的原理和实现非常有帮助。因为源码展示了算法的具体实现细节,包括数据准备、特征工程、模型构建、训练和预测等步骤。通过阅读和理解源码,我们可以更好地理解算法的工作原理,进一步优化和改进算法,或者将其应用于自己的项目中。 要使用Python机器学习基础源码.zip,首先需要解压缩文件,可以使用压缩软件如WinRAR或7-Zip等。然后,您可以查看源码文件,并在自己的机器上运行这些代码,了解算法的运行过程和输出结果。您还可以修改代码,测试不同的参数或修改算法逻辑,以适应自己的需求。 总之,Python机器学习基础源码.zip对于学习和实践机器学习领域非常有价值。通过研究源码,您可以加深对机器学习算法的理解,掌握其应用,并在实践中不断完善和优化算法。 ### 回答3: "python机器学习基础源码.zip" 是一个包含有关 Python 机器学习基础的源代码的压缩文件。Python 机器学习是一种应用机器学习算法和技术的方法,使用 Python 编程语言实现。该文件可能包含许多脚本和模块,用于展示与机器学习相关的基本概念和算法。 这个压缩文件可能包含以下类型的文件: 1. 数据集文件:用于训练和测试机器学习模型的数据集,这些文件可能采用常见的格式,如 CSV 或 JSON。 2. 模型训练文件:包含训练机器学习模型的源代码,这些文件可能使用各种 Python 库实现,如 scikit-learn 或 TensorFlow。 3. 模型评估文件:包含评估已训练模型性能的源代码,这些文件可能包括精确度、召回率、准确度和 F1 分数等指标的计算。 4. 数据预处理文件:包含对数据进行预处理和清洗的代码,例如数据缩放、特征选择和特征工程等操作。 5. 可视化文件:包含用于可视化机器学习模型和结果的源代码,例如绘制学习曲线、特征重要性图和混淆矩阵等图形。 这些源代码文件可以帮助学习者理解机器学习的基本概念,并为他们提供一个基础,用于进一步学习和实践更复杂的机器学习任务。学习者可以通过阅读和运行这些源代码,了解机器学习模型的构建过程、训练和评估技术,以及如何应用这些技术来解决现实世界的问题。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值