题目概述: 整个2的部分需要根据城市人口数量,预测开小吃店的利润 数据在ex1data1.txt里,第一列是城市人口数量,第二列是该城市小吃店利润。

用到2个公式:
代价函数:

批量梯度下降 进行优化:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
#print(np.eye(5)) #简单练习
path ='ex1data1.txt'
data = pd.read_csv(path, header=None, names=['Population', 'Profit'])
#header=None即指定原始文件数据没有列索引,names为列索引添加名字
#print(data.head())     #header显示前5行
#print(data.describe()) #数据详细值分析
data.plot(kind='scatter', x='Population', y='Profit', figsize=(12,8))
#print(plt.show()) #输出图
data.insert(0, 'Ones', 1)#在第0列插入一列,这列值全为1
clos=data.shape[1]  #shape[1]取列数,[0]取行数
X=data.iloc[:,0:clos-1]#iloc,行全选,选0,1列,是前闭后开集合
y=data.iloc[:,clos-1:clos]#选最后一列
#print(X.head())  #验证X,y
#print(y.head())
X = np.matrix(X.values)#将X,y转化成矩阵
y = np.matrix(y.values)
theta=np.matrix([0,0]) #将theta转化成空矩阵
def computeCost(X, y, theta):#计算代价函数inner=np.power(((X*theta.T)-y),2)return np.sum(inner)/(2 * len(X))#len(X)为行数,即公式中的m
#print(computeCost(X, y, theta))#批量梯度下降(优化)def gradientDescent(X, y, theta, alpha, iters):#alpha学习率,iters迭代次数temp = np.matrix(np.zeros(theta.shape))#一个与theta相同维度的0矩阵parameters=int(theta.ravel().shape[1]) #ravel()将多维降为一维cost = np.zeros(iters)#保存迭代之后的costfor i in range(iters):error=(X*theta.T)-yfor j in range(parameters):term=np.multiply(error,X[:,j])temp[0,j]=theta[0,j] - np.sum(term)*(alpha/len(X))theta=tempcost[i]=computeCost(X, y, theta)return theta, cost
alpha = 0.01
iters= 1500
g,cost = gradientDescent(X, y, theta, alpha, iters)
print(g)
print(computeCost(X, y, g))#使用拟合值来计算代价函数(误差)# 画图x = np.linspace(data.Population.min(), data.Population.max(), 100) #横坐标在最大和最小之间分100份
f = g[0, 0] + (g[0, 1] * x)
fig, ax = plt.subplots(figsize=(12,8))
ax.plot(x, f, 'r', label='Prediction')
ax.scatter(data.Population, data.Profit, label='Traning Data')
ax.legend(loc=2)
ax.set_xlabel('Population')
ax.set_ylabel('Profit')
ax.set_title('Predicted Profit vs. Population Size')
print(plt.show())

多变量线性回归

ex1data2.txt里的数据,第一列是房屋大小,第二列是卧室数量,第三列是房屋售价 根据已有数据,建立模型,预测房屋的售价

虽然变成了多变量,之前的def gradientDescent()函数仍然可用,
原理一样,只需要换一个3个变量的数据集,但由于数据值之间相差较大,多了一个“归一化处理”
下面代码就不写之前写过的函数了;

path ='ex1data2.txt'
data2 = pd.read_csv(path, header=None, names=['Size', 'Bedrooms', 'Price'])
#header=None即指定原始文件数据没有列索引,names为列索引添加名字
#归一化处理
data2 = (data2 - data2.mean()) / data2.std()
#data2.mean()均值,data2.std()最大最小之间的差值
data2.insert(0, 'Ones', 1)
cols = data2.shape[1]# 初始化X2和y2
X2 = data2.iloc[:,0:cols-1]
y2 = data2.iloc[:,cols-1:cols]
# 转换成matrix格式,初始化theta
X2 = np.matrix(X2.values)
y2 = np.matrix(y2.values)
theta2 = np.matrix(np.array([0,0,0]))
g,cost = gradientDescent(X2, y2, theta2, alpha, iters)
print(g)
print(computeCost(X2, y2, g))#使用拟合值来计算代价函数(误差)

正规方程


用第一个数据集的完整代码:

import numpy as np
import pandas as pd
path ='ex1data1.txt'
data = pd.read_csv(path, header=None, names=['Population', 'Profit'])
data.insert(0, 'Ones', 1)#在第0列插入一列,这列值全为1
clos=data.shape[1]  #shape[1]取列数,[0]取行数
X=data.iloc[:,0:clos-1]#iloc,行全选,选0,1列,是前闭后开集合
y=data.iloc[:,clos-1:clos]#选最后一列
X = np.matrix(X.values)#将X,y转化成矩阵
y = np.matrix(y.values)
theta=np.matrix([0,0]) #将theta转化成空矩阵
def normalEqn(X, y):theta=np.linalg.inv(X.T@X)@X.T@yreturn theta
theta=normalEqn(X, y)
print(theta)

正规方程与梯度下降的比较,请访问:
https://blog.csdn.net/kingsure001/article/details/107465231

吴恩达机器学习作业1-线性回归相关推荐

  1. 吴恩达机器学习作业 1线性回归

    一.单变量线性回归 数据可视化 import numpy as np import pandas as pd import matplotlib.pyplot as plt #print(np.eye ...

  2. 吴恩达机器学习作业ex2-python实现

    系列文章目录 吴恩达机器学习作业ex1-python实现 吴恩达机器学习作业ex2-python实现 吴恩达机器学习作业ex3-python实现 作业说明及数据集 链接:https://pan.bai ...

  3. 第一章-机器学习简介 深度之眼_吴恩达机器学习作业训练营

    目录 专栏简介: 一,机器学习简介 1.1 机器学习定义 1.1 机器学习的重要性 1.2 应用领域 二.监督学习 三.无监督学习 四.总结 专栏简介: 本栏主要内容为吴恩达机器学习公开课的学习笔记, ...

  4. k均值算法python实现(吴恩达机器学习作业)

    k均值算法python实现(吴恩达机器学习作业) 题目要求 数据集 读取mat文件 K-means 实现 结果 问题 题目要求 采用K均值算法对样本进行聚类. 编写K均值算法源代码,对ex7data2 ...

  5. 吴恩达机器学习作业7 - K-means和PCA主成分分析(Python实现)

    吴恩达机器学习作业7 - K-means和PCA主成分分析(Python实现) Introduction 在本实验中,将实现K-means聚类算法,并将其应用于图像压缩.在第二部分实验中,将使用主成分 ...

  6. 吴恩达机器学习作业Python实现(五):偏差和方差

    吴恩达机器学习系列作业目录 在本练习中,您将实现正则化的线性回归和多项式回归,并使用它来研究具有不同偏差-方差属性的模型 1 Regularized Linear Regression 正则线性回归 ...

  7. 吴恩达机器学习作业Python实现(八):异常检测和推荐系统

    吴恩达机器学习系列作业目录 1 Anomaly detection 这部分,您将实现一个异常检测算法来检测服务器计算机中的异常行为.他的特征是测量每个服务器的响应速度(mb/s)和延迟(ms).当你的 ...

  8. 吴恩达机器学习作业Python实现(七):K-means和PCA主成分分析

    吴恩达机器学习系列作业目录 1 K-means Clustering 在这个练习中,您将实现K-means算法并将其用于图像压缩.通过减少图像中出现的颜色的数量,只剩下那些在图像中最常见的颜色. 1. ...

  9. 吴恩达机器学习作业Python实现(六):SVM支持向量机

    吴恩达机器学习系列作业目录 1 Support Vector Machines 1.1 Example Dataset 1 %matplotlib inline import numpy as np ...

  10. 吴恩达机器学习作业Python实现(二):logistic回归

    吴恩达机器学习系列作业目录 1 Logistic regression 在这部分的练习中,你将建立一个逻辑回归模型来预测一个学生是否能进入大学.假设你是一所大学的行政管理人员,你想根据两门考试的结果, ...

最新文章

  1. 企业网络推广—面对企业网络推广需求如何体现企业产品或服务价值
  2. CentOS 6.3编译安装Nginx1.2.2+MySQL5.5.25a+PHP5.4.5
  3. BZOJ2938:[POI2000] 病毒
  4. Twitter-Snowflake,64位自增ID算法详解
  5. thinkphp scws mysql_thinkphp buildHtml 函数实现网站静态化
  6. 学习笔记(41):Python实战编程-按钮
  7. OBTW的完整形式是什么?
  8. linux如何安装django
  9. 工信部:2021年1-2月锂电池产量29.5亿只
  10. 从解放劳动力来看未来的科技进程
  11. UE4 WebBrowser插件版本
  12. 雷达信号处理——雷达系统
  13. matlab fft时域采样,信号时域采样 谱分析(matlab).doc
  14. Dynamics CRM 2013学习伊始
  15. 大陆居民可以在香港汇丰银行开私人账户
  16. ECharts提示框数字保留两位小数
  17. 基于Java技术的Web环境下分布式数据库互操作性的实现
  18. 再听 ,抖音视频背景制作---小龙老师
  19. word图文混排复制到CuteEditor图片不显示
  20. R语言ggplot2可视化:使用ggpubr包的ggboxplot函数可视化分组箱图、使用bgcolor函数自定义指定可视化图像的背景色

热门文章

  1. waiting apache2: Could not reliably determine the server's fully qualified domai
  2. python-人脸识别
  3. SWUST OJ#978 #979 #980 二叉树的遍历
  4. 解决80端口被占用问题(关闭被占用端口,通用)
  5. 指针作用、指针与指针变量、指针的定义与初始化、指针赋值
  6. linux下ipvsadm命令,ipvsadm命令使用方法
  7. python发票打印程序_Python用于开票系统
  8. 美食杰----菜谱大全(二)
  9. 地下城与勇士体验服不显示服务器,地下城与勇士M手游体验服进不去怎么办?内测问题与解决方案汇总[多图]...
  10. 税务软件:This program maybe infected by a Virus or cracked