吴恩达机器学习作业1-线性回归讲解版奔雷手

这篇博客详细介绍了吴恩达机器学习课程的作业1,主要涵盖线性回归。内容包括单变量和多变量线性回归,批量梯度下降算法的实现,以及正规方程的讲解。博主通过代码示例解释了如何计算代价函数、执行梯度下降以及进行特征归一化,同时对比了梯度下降和正规方程的优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

机器学习作业 1 - 线性回归 奔雷手

1.单变量线性回归

导入需要使用的包

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

导入数据集。提醒:一定要把数据文件ex1data1.txt放在和程序同一个文件夹里,否则需要使用绝对路径访问文件
将csv文件读入并转化为数据框形式,路径,指定哪一行作为表头。默认设置为0(即第一行作为表头),如果没有表头的话,要修改参数,设置header=None,
指定列的名称,用列表表示。一般我们没有表头,即header=None时,这个用来添加列名
在默认情况下,head命令显示文件的头5行内容

path =  'ex1data1.txt'
data = pd.read_csv(path, header=None, names=['Population', 'Profit'])
data.head()  #预览数据
Population Profit
0 6.1101 17.5920
1 5.5277 9.1302
2 8.5186 13.6620
3 7.0032 11.8540
4 5.8598 6.8233

对于此处数值数据,结果的索引将包括计数,平均值,标准差,最小值,最大值以及较低的百分位数和50。默认情况下,较低的百分位数为25,较高的百分位数为75.50百分位数与中位数相同。

data.describe()
Population Profit
count 97.000000 97.000000
mean 8.159800 5.839135
std 3.869884 5.510262
min 5.026900 -2.680700
25% 5.707700 1.986900
50% 6.589400 4.562300
75% 8.578100 7.046700
max 22.203000 24.147000

数据可视化,(绘制散点图 kind: 取值为 line 或者 scatter, 后者为默认值 xy轴名字 图像大小)

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

在这里插入图片描述

现在让我们使用梯度下降来实现线性回归,以最小化成本函数。 以下代码示例中实现的方程在“练习”文件夹中的“ex1.pdf”中有详细说明。

首先,我们将创建一个以参数θ为特征函数的代价函数
J(θ)=12m∑i=1m(hθ(x(i))−y(i))2J\left( \theta \right)=\frac{1}{2m}\sum\limits_{i=1}^{m}{ { {\left( { {h}_{\theta }}\left( { {x}^{(i)}} \right)-{ {y}^{(i)}} \right)}^{2}}}J(θ)=2m1i=1m(hθ(x(i))y(i))2

np.power(x1,x2)数组的元素分别求n次方。x2可以是数字,也可以是数组,但是x1和x2的列数要相同
代码中的函数就是对算法的描述

def computeCost(X, y, theta):
    # your code here  (appro ~ 2 lines)
    inner = np.power((
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值