机器学习:单元线性回归(python简单实现)
文章简介
使用python简单实现机器学习中单元线性回归算法。
算法目的
该算法核心目的是为了求出假设函数h中多个theta的值,使得代入数据集合中的每个x,求得的h(x)与每个数据集合中的y的差值的和最小。简单来说就是需要生成一个函数,它尽可能贴近实际数据中的每个值,方便我们预测。
核心算法
- 假设函数
即需要求的函数,为了简单在此只设置一个x对应一个y,求theta0和theta1

- 代价函数

目的是J最小,也就是每个y到达函数的距离之和最小。 - 批量梯度下降函数

带假设函数和代价函数带入到下降函数中可得

算法实现
import numpy as np
import matplotlib.pyplot as plt
def hypoFunction(x, theta):
h = np.dot(x, theta)
return h
def costFunction(h, y):
"""
代价函数
h:hypothesis,
theta:特征向量系数
y:特征值对应的实际值
"""
m = len(y)
J = 1 / (2 * m) * np.sum(np.power(h - y, 2))
return J
def gradientDecent(x, y, h, theta, alpha, number):
"""梯度下降函数
number:设置的梯度下降次数"""
# for i in range(number):
m = len(y)
n = len(theta)
J_history = np.zeros((number,1))
for i in range(number):
theta = theta - (alpha/m) * x.T.dot(h-y)
h = hypoFunction(x, theta)
J_history[i] = costFunction(h,y)
print(theta)
return h
def paint(x,y,hypothesis):
plt.plot(x,y,"ro")
plt.plot(x,hypothesis)
plt.show()
def main():
x = np.array([[1,1], [1,2], [1,3], [1,4], [1,5], [1,6]])
y = np.array([[1], [2], [3], [4], [5], [6]])
theta = np.array([[10],[0]])
alpha = 0.1
h = hypoFunction(x, theta)
J = costFunction(h, y)
h= gradientDecent(x, y, h, theta, alpha, 20000)
x = x[:,-1]
print(x)
paint(x,y,h)
pass
if __name__ == "__main__":
main()
简单解释
- 因为设置了两个theta,为了方便运算以及满足矩阵乘法的要求,所以x多添加了一列1。
- theta初始值可以任意设置。
- alpha大小初始值不要过大,否则有可能导致梯度下降函数不收敛。如果初始值过小,则会导致需要计算很多次才能达到全局最优解。
机器学习:单元线性回归(python简单实现)的更多相关文章
- 【机器学习】线性回归python实现
线性回归原理介绍 线性回归python实现 线性回归sklearn实现 这里使用python实现线性回归,没有使用sklearn等机器学习框架,目的是帮助理解算法的原理. 写了三个例子,分别是单变量的 ...
- 机器学习3- 一元线性回归+Python实现
目录 1. 线性模型 2. 线性回归 2.1 一元线性回归 3. 一元线性回归的Python实现 3.1 使用 stikit-learn 3.1.1 导入必要模块 3.1.2 使用 Pandas 加载 ...
- 机器学习4- 多元线性回归+Python实现
目录 1 多元线性回归 2 多元线性回归的Python实现 2.1 手动实现 2.1.1 导入必要模块 2.1.2 加载数据 2.1.3 计算系数 2.1.4 预测 2.2 使用 sklearn 1 ...
- 机器学习之线性回归(纯python实现)][转]
本文转载自:https://juejin.im/post/5a924df16fb9a0634514d6e1 机器学习之线性回归(纯python实现) 线性回归是机器学习中最基本的一个算法,大部分算法都 ...
- 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression)
http://blog.csdn.net/zouxy09/article/details/20319673 机器学习算法与Python实践之(七)逻辑回归(Logistic Regression) z ...
- 【机器学习】多项式回归python实现
[机器学习]多项式回归原理介绍 [机器学习]多项式回归python实现 [机器学习]多项式回归sklearn实现 使用python实现多项式回归,没有使用sklearn等机器学习框架,目的是帮助理解算 ...
- 机器学习算法与Python实践之(四)支持向量机(SVM)实现
机器学习算法与Python实践之(四)支持向量机(SVM)实现 机器学习算法与Python实践之(四)支持向量机(SVM)实现 zouxy09@qq.com http://blog.csdn.net/ ...
- 机器学习算法与Python实践之(三)支持向量机(SVM)进阶
机器学习算法与Python实践之(三)支持向量机(SVM)进阶 机器学习算法与Python实践之(三)支持向量机(SVM)进阶 zouxy09@qq.com http://blog.csdn.net/ ...
- 机器学习算法与Python实践之(二)支持向量机(SVM)初级
机器学习算法与Python实践之(二)支持向量机(SVM)初级 机器学习算法与Python实践之(二)支持向量机(SVM)初级 zouxy09@qq.com http://blog.csdn.net/ ...
随机推荐
- mongodb主从复制(读写分离)
1.[启动主服务器]mongod --port 1111 --dbpath D:\Program Files\Mongodb\master --logpath D:\Program Files\Mon ...
- IBM刀箱服务器的SW
刀箱交换机说明: 1.刀箱交换机可以看到的24个口都是ext端口,其中因为授权原因,只激活了前10个端口. 2.交换机配置中的inta端口为服务器直接连接的端口,inta1-inta14,这些都是对应 ...
- C语言typedef的用法详解
C语言允许为一个数据类型起一个新的别名,就像给人起"绰号"一样. 起别名的目的不是为了提高程序运行效率,而是为了编码方便.例如有一个结构体的名字是 stu,要想定义一个结构体变量就 ...
- 学习 CLR 源码:连续内存块数据操作的性能优化
目录 C# 原语类型 1,利用 Buffer 优化数组性能 2,BinaryPrimitives 细粒度操作字节数组 提高代码安全性 3,BitConverter.MemoryMarshal 4,Ma ...
- 【LeetCode】137. 只出现一次的数字 II(剑指offer 56-II)
137. 只出现一次的数字 II(剑指offer 56-II) 知识点:哈希表:位运算 题目描述 给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 .请你找出并返回 ...
- js扩展函数收集
1,checkbox序列化 2,form表单对象化 3,数组字符串化
- C标准库学习
前言 C标准库源码可通过下列两个网站进行查看:The GNU C Library.Welcome to uClibc-ng! - Embedded C library 以下学习记录也是以这两个网站提供 ...
- 秒懂 Java 的三种代理模式
前言 代理(Proxy)模式是一种结构型设计模式,提供了对目标对象另外的访问方式:即通过代理对象访问目标对象. 这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. ...
- P2491 消防/P1099 树网的核
P2491 消防/P1099 树网的核 双倍经验,双倍快乐. 题意 在一个树上选择一段总长度不超过\(s\)的链使所有点到该链距离的最大值最小. 输出这个最小的值. 做法 Define:以下\(s\) ...
- vulnhub-DC:2靶机渗透记录
准备工作 在vulnhub官网下载DC:1靶机https://www.vulnhub.com/entry/dc-2,311/ 导入到vmware 打开kali准备进行渗透(ip:192.168.200 ...