吴恩达老师机器学习-ex1

news2024/9/24 4:17:57

线性回归

有借鉴网上部分博客

第一题 单变量

先导入相关库

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

读取数据,并展示前五行

data=pd.read_csv(path,header=None,names=["Population","Profit"])
data.head()

先绘制一个散点图,查看数据分布,并规定x,y轴的名字

data.plot(kind="scatter",x="Population",y="Profit",figsize=(12,8))
plt.show

新增一列X_{0},已便构造矩阵

#新增一列x0
data.insert(0,"x0",1)
data.head()

先查看数据有多少列,然后读取相应的列的数据构造矩阵,同时构造一个零矩阵

cols=data.shape[1]
X=data.iloc[:,0:cols-1]
Y=data.iloc[:,cols-1:cols]

X=np.matrix(X.values)
Y=np.matrix(Y.values)
theta=np.zeros((2, 1))

构造代价函数。 代价函数公式:J(\theta _{0},\theta _{1})=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta }(x^{(i)})-y^{(i)})^{2}

def cost_fuc(X,Y,theta):
    cost_matrix=np.power(X*theta-Y,2)
    cost_finite=np.sum(cost_matrix)/(2*len(X))
    return cost_finite

构造梯度下降函数

def gradient_descent(X,Y,theta,alpha,times):
    for i in range(times):
        theta[0]=theta[0]-alpha*(1/len(X))*(np.sum(X*theta-Y))
        theta[1]=theta[1]-alpha*(1/len(X))*(np.multiply((X*theta-Y),X[1])).sum()
        temp0=theta[0]
        temp1=theta[1]
        cost = cost_func(X, Y, theta)
        pass
    return theta

调用函数,并绘制线性回归图

theta_last= gradient_descent(x,y,theta,0.02,1500)

data.plot(kind="scatter",x="Population",y="Profit",figsize=(12,8),label='Prediction')
x = np.linspace(data.Population.min(), data.Population.max(), 100)
y = theta[0] + theta[1] * x

plt.plot(x, y)
plt.show()

第二题 多变量

导入相关库并读取文件数据

​
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
path = "./ex1data2.txt"
data = pd.read_csv(path,header=None,names=["size","bedrooms","price"])
data.head()
#展示两个散点图
path = "./ex1data2.txt"
data = pd.read_csv(path,header=None,names=["size","bedrooms","price"])
data.head()
data.plot(kind="scatter",x="bedrooms",y="price")
plt.show()

由于特征值的数字大小差距较大,进行特征缩放,并构造相关的xy数组

#特征缩放
data = (data - data.mean())/data.std()
data.head()
data.insert(0,"x0",1)
data.head()
cols=data.shape[1]
X=data.iloc[:,0:cols-1]
Y=data.iloc[:,cols-1:cols]

X=X.values
Y=Y.values
theta=np.zeros((3, 1))

代价函数

#代价函数
def cost_func(x,y,theta):
    cost_matrix = np.power(x@theta-y,2)
    cost_finite = np.sum(cost_matrix)/(2*len(x))
    return cost_finite

梯度下降函数

#梯度下降
def gradient_descent(X,Y,theta,alpha,times):
    costs = []
    for i in range(times):
        theta = theta - (X.T @ (X@theta - Y)) * alpha / len(X)  #迭代梯度下降
        cost = cost_func(X, Y, theta)
        costs.append(cost)
        pass
    return theta,costs

显示图像

alpha_iters = [0.003,0.03,0.0001,0.001,0.01]#设置alpha
counts = 200#循环次数
fig,ax = plt.subplots()
for alpha in alpha_iters:#迭代不同学习率alpha
    _,costs = gradient_descent(X,Y,theta,alpha,counts)#得到损失值
    ax.plot(np.arange(counts),costs,label = alpha)#设置x轴参数为迭代次数,y轴参数为cost
    ax.legend()  #加上这句  显示label
    
ax.set(xlabel= 'counts',   #图的坐标轴设置
       ylabel = 'cost',
       title = 'cost vs counts')#标题
plt.show()#显示图像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1938110.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++基础入门(二)(函数重载,引用,内联函数,nullptr)

目录 一. 函数重载 1. 概念 2. 实现 (1). 参数类型不同 (2). 参数个数不同 (3). 参数类型顺序不同 3. 注意事项 (1). 返回值不能作为重载的条件 (2). 不能仅按函数返回类型重载 (3). 与缺省参数的问题 二. 引用 1. 概念和定义 2. 引用的特性 (1). 引用在定义时必须…

【云原生】Kubernetes微服务Istio:介绍、原理、应用及实战案例

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…

Spring Boot集成Spring Batch快速入门Demo

1.什么是Spring Batch? Spring Batch 是一个轻量级的开源框架,它提供了一种简单的方式来处理大量的数据。它基于Spring框架,提供了一套批处理框架,可以处理各种类型的批处理任务,如ETL、数据导入/导出、报表生成等。S…

Windows 、Linux、MacOS 进程管理机制

本心、输入输出、结果 文章目录 Windows 、Linux、MacOS 进程管理机制前言Windows 进程管理机制Linux 进程管理macOS 进程管理内存不够了,几个操作系统如何处理Windows 、Linux、MacOS 进程管理机制 编辑 | 简简单单 Online zuozuo 地址 | https://blog.csdn.net/qq_15071263 …

Webstorm-恢复默认UI布局

背景 在使用Webstorm的时候,有时候进行个性化设置,如字体、界面布局等. 但是设置后的效果不理想,想要重新设置回原来的模样,却找不到设置项. 这里提供一种解决方案,恢复默认设置,即恢复到最初刚下载好后的设置. 操作步骤 步骤一:打开setting 步骤二:搜索Restore Default,找到…

AI智能名片微信小程序在IP合作中的创新应用与品牌赋能策略

摘要:在数字化时代,品牌与IP(Intellectual Property)的合作已成为推动品牌增长、深化市场影响力的关键策略。AI智能名片微信小程序,作为新兴的数字营销工具,凭借其智能化、便捷化、社交化的特性&#xff0c…

Kafka架构详解之分区Partition

目录 一、简介二、架构三、分区Partition1.分区概念2.Offsets(偏移量)和消息的顺序3.分区如何为Kafka提供扩展能力4.producer写入策略5.consumer消费机制 一、简介 Apache Kafka 是分布式发布 - 订阅消息系统,在 kafka 官网上对 kafka 的定义…

shell详细介绍(清晰明了)

一、shell的介绍 Shell ⼀个命令解释器,它接收应⽤程序/⽤户命令,然后调⽤操作系统内核。 Shell还是⼀个功能强⼤的编程语⾔,易编写、易调试、灵活性强。 (1) Linux提供的shell解释器有 (2) bash 和 sh的关系 (3) Centos默认的Shell解析器…

前端学习(三)之CSS

一、什么是CSS html定义网页的结构和信息(骨架血肉)css定义网页的样式(衣服)js定义用户和网页的交互逻辑(动作) 通过CSS,可以指定页面中各个元素的颜色、字体、大小、间距、边框、背景等样式&…

YOLOv8改进 | Neck | 注意力尺度序列融合的检测框架ASF-YOLO

秋招面试专栏推荐 :深度学习算法工程师面试问题总结【百面算法工程师】——点击即可跳转 💡💡💡本专栏所有程序均经过测试,可成功执行💡💡💡 专栏目录 :《YOLOv8改进有效…

spring boot(学习笔记第十四课)

spring boot(学习笔记第十四课) Spring Security的密码加密,基于数据库认证 学习内容: Spring Security的密码加密基于数据库认证 1. Spring Security的密码加密 如果用户的密码保存在数据库中是以明文保存,对于公司的安全将是灾难性的&…

SpringBoot中fastjson扩展: 自定义序列化和反序列化方法实战

❃博主首页 &#xff1a; 「码到三十五」 &#xff0c;同名公众号 :「码到三十五」&#xff0c;wx号 : 「liwu0213」 ☠博主专栏 &#xff1a; <mysql高手> <elasticsearch高手> <源码解读> <java核心> <面试攻关> ♝博主的话 &#xff1a…

安全防御---防火墙综合实验3

安全防御—防火墙综合实验3 一、实验拓扑图 二、实验要求 12&#xff0c;对现有网络进行改造升级&#xff0c;将当个防火墙组网改成双机热备的组网形式&#xff0c;做负载分担模式&#xff0c;游客区和DMZ区走FW3&#xff0c;生产区和办公区的流量走FW1 13&#xff0c;办公区…

【软件配置】不使用ROS系统,不进行编译,纯python环境配置rosbag,从而解析.bag文件

【软件配置】不使用ROS系统&#xff0c;不进行编译&#xff0c;纯python环境配置rosbag&#xff0c;从而解析.bag文件 【anaconda】conda创建、查看、删除虚拟环境&#xff08;anaconda命令集&#xff09;_conda 创建环境-CSDN博客 【Windows配置三】Python3.6安装rosbag_ros…

4.基础知识-数据库技术基础

基础知识 一、数据库基本概念1、数据库系统基础知识2、三级模式-两级映像3、数据库设计4、数据模型&#xff1a;4.1 E-R模型★4.2 关系模型★ 5、关系代数 二、规范化和并发控制1、函数依赖2、键与约束3、范式★3.1 第一范式1NF实例3.2 第二范式2NF3.3 第三范式3NF3.4 BC范式BC…

鸿蒙智联:一统多设备,跨端融合新魔法

在当今科技飞速发展的时代&#xff0c;操作系统的优劣直接影响着用户的体验和设备的性能。而鸿蒙系统&#xff0c;宛如一颗璀璨的新星&#xff0c;凭借其卓越的跨端能力&#xff0c;为我们展现了一个全新的科技世界。 鸿蒙系统的最大魅力之一&#xff0c;就在于它能够实现一个系…

【嵌入式开发之数据结构】树的基本概念、逻辑结构和四种常用的遍历算法及实现

树&#xff08;Tree&#xff09;的定义及基本概念 树的定义 树(Tree)是个结点的有限集合T&#xff0c;它满足两个条件&#xff1a; 有且仅有一个特定的称为根&#xff08;Root&#xff09;的节点&#xff1b;其余的节点分为个互不相交的有限合集&#xff0c;其中每一个集合又…

【无重叠空间】python刷题记录

润到贪心篇。 class Solution:def eraseOverlapIntervals(self, intervals: List[List[int]]) -> int:#十行贪心大神if not intervals:return 0#按照第第二个元素进行排序&#xff0c;贪心思想&#xff0c;参考活动安排都是以结束时间进行排序的intervals.sort(keylambda x:…

分离式网络变压器的集成化设计替代传统网络变压器(网络隔离滤波器)尝试

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是应用了分离式网络变压器设计的的新型网络变压器&#xff08;网络隔离变压器&#xff09; 今天我们一起来看这款新型网络变压器&#xff0c;它就是应用分离式网络变压器集成到电路板上&#xff0c;加上外…

git协同开发与冲突解决

协同开发流程 基本的使用方法 # 1 多人开发同一个项目-张三&#xff1a;本地 版本库-李四&#xff1a;本地 版本库-我&#xff1a; 本地 版本库----远程仓库&#xff1a;本地版本库内容--》推送到远程仓库-----# 2 演示&#xff08;我是项目管理员&#xff09;-1 增加几个开发…