题目太长啦!文档下载【传送门

第1题

简述:设计一个5*5的单位矩阵。

 import numpy as np
A = np.eye(5)
print(A)

运行结果:

第2题

简述:实现单变量线性回归。

 import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D #-----------------计算代价值函数-----------------------
def computeCost(X, y, theta):
m = np.size(X[:,0])
J = 1/(2*m)*np.sum((np.dot(X,theta)-y)**2)
return J #----------------根据人口预测利润----------------------
#读取数据集中数据,第一列是人口数据,第二列是利润数据
data = np.loadtxt('ex1data1.txt',delimiter=",",dtype="float")
m = np.size(data[:,0])
# print(data) #------------------绘制样本点--------------------------
X = data[:,0:1]
y = data[:,1:2]
plt.plot(X,y,"rx")
plt.xlabel('Population of City in 10,000s')
plt.ylabel('Profit in $10,000s')
# plt.show() #-----------------梯度下降计算局部最优解----------------
#添加第一列1
one = np.ones(m)
X = np.insert(X,0,values=one,axis=1)
# print(X) #设置α、迭代次数、θ
theta = np.zeros((2,1))
iterations = 1500
alpha = 0.01 #梯度下降,并显示线性回归
J_history = np.zeros((iterations,1))
for iter in range(0,iterations):
theta = theta - alpha/m*np.dot(X.T,(np.dot(X,theta)-y))
J_history[iter] = computeCost(X,y,theta)
plt.plot(data[:,0],np.dot(X,theta),'-')
plt.show()
# print(theta)
# print(J_history) #--------------------显示三维图------------------------
theta0 = np.linspace(-10,10,100)
theta1 = np.linspace(-1,4,100)
J_vals = np.zeros((np.size(theta0),np.size(theta1)))
for i in range(0,np.size(theta0)):
for j in range(0,np.size(theta1)):
t = np.asarray([theta0[i],theta1[j]]).reshape(2,1)
J_vals[i,j] = computeCost(X,y,t)
# print(J_vals)
J_vals = J_vals.T #需要转置一下,否则轴会反
fig1 = plt.figure()
ax = Axes3D(fig1)
ax.plot_surface(theta0,theta1,J_vals,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
ax.set_xlabel('theta0')
ax.set_ylabel('theta1')
ax.set_zlabel('J')
plt.show() #--------------------显示轮廓图-----------------------
lines = np.logspace(-2,3,20)
plt.contour(theta0,theta1,J_vals,levels = lines)
plt.xlabel('theta0')
plt.ylabel('theta1')
plt.plot(theta[0],theta[1],'rx')
plt.show()

运行结果:

第3题

简述:实现多元线性回归。

 import numpy as np
import matplotlib.pyplot as plt #-----------------计算代价值函数-----------------------
def computeCost(X, y, theta):
m = np.size(X[:,0])
J = 1/(2*m)*np.sum((np.dot(X,theta)-y)**2)
return J #-------------------根据面积和卧室数量预测房价----------
#读取数据集中数据,第一列是面积数据,第二列是卧室数量,第三列是房价
data = np.loadtxt('ex1data2.txt',delimiter=",",dtype="float")
m = np.size(data[:,0])
# print(data)
X = data[:,0:2]
y = data[:,2:3] #----------------------均值归一化---------------------
mu = np.mean(X,0)
sigma = np.std(X,0)
X_norm = np.divide(np.subtract(X,mu),sigma)
one = np.ones(m) #添加第一列1
X_norm = np.insert(X_norm,0,values=one,axis=1)
# print(mu)
# print(sigma)
# print(X_norm) #----------------------梯度下降-----------------------
alpha = 0.05
num_iters = 100
theta = np.zeros((3,1));
J_history = np.zeros((num_iters,1))
for iter in range(0,num_iters):
theta = theta - alpha/m*np.dot(X_norm.T,(np.dot(X_norm,theta)-y))
J_history[iter] = computeCost(X_norm,y,theta)
# print(theta)
x_col = np.arange(0,num_iters)
plt.plot(x_col,J_history,'-b')
plt.xlabel('Number of iterations')
plt.ylabel('Cost J')
plt.show() #----------使用上述结果对[1650,3]的数据进行预测--------
test1 = [1,1650,3]
test1[1:3] = np.divide(np.subtract(test1[1:3],mu),sigma)
price = np.dot(test1,theta)
print(price) #输出预测结果[292455.63375132] #-------------使用正规方程法求解----------------------
one = np.ones(m)
X = np.insert(X,0,values=one,axis=1)
theta = np.dot(np.dot(np.linalg.pinv(np.dot(X.T,X)),X.T),y)
# print(theta)
price = np.dot([1,1650,3],theta)
print(price) #输出预测结果[293081.46433497]

运行结果:【一个疑惑>>两种方法求解的估算价格很小,但θ相差较大?】

机器学习作业(一)线性回归——Python(numpy)实现的更多相关文章

  1. 机器学习:单元线性回归(python简单实现)

    文章简介 使用python简单实现机器学习中单元线性回归算法. 算法目的 该算法核心目的是为了求出假设函数h中多个theta的值,使得代入数据集合中的每个x,求得的h(x)与每个数据集合中的y的差值的 ...

  2. 【机器学习】线性回归python实现

    线性回归原理介绍 线性回归python实现 线性回归sklearn实现 这里使用python实现线性回归,没有使用sklearn等机器学习框架,目的是帮助理解算法的原理. 写了三个例子,分别是单变量的 ...

  3. 干货 | 请收下这份2018学习清单:150个最好的机器学习,NLP和Python教程

    机器学习的发展可以追溯到1959年,有着丰富的历史.这个领域也正在以前所未有的速度进化.在之前的一篇文章中,我们讨论过为什么通用人工智能领域即将要爆发.有兴趣入坑ML的小伙伴不要拖延了,时不我待! 在 ...

  4. 机器学习1—简介及Python机器学习环境搭建

    简介 前置声明:本专栏的所有文章皆为本人学习时所做笔记而整理成篇,转载需授权且需注明文章来源,禁止商业用途,仅供学习交流.(欢迎大家提供宝贵的意见,共同进步) 正文: 机器学习,顾名思义,就是研究计算 ...

  5. Python numpy中矩阵的用法总结

    关于Python Numpy库基础知识请参考博文:https://www.cnblogs.com/wj-1314/p/9722794.html Python矩阵的基本用法 mat()函数将目标数据的类 ...

  6. CS231中的python + numpy课程

    本课程中所有作业将使用Python来完成.Python本身就是一种很棒的通用编程语言,现在在一些流行的库(numpy,scipy,matplotlib)的帮助下,它为科学计算提供强大的环境. 我们希望 ...

  7. Python NumPy学习总结

    一.NumPy简介 其官网是:http://www.numpy.org/ NumPy是Python语言的一个扩充程序库.支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库.Num ...

  8. 机器学习、NLP、Python和Math最好的150余个教程(建议收藏)

    编辑 | MingMing 尽管机器学习的历史可以追溯到1959年,但目前,这个领域正以前所未有的速度发展.最近,我一直在网上寻找关于机器学习和NLP各方面的好资源,为了帮助到和我有相同需求的人,我整 ...

  9. 有关python numpy pandas scipy 等 能在YARN集群上 运行PySpark

    有关这个问题,似乎这个在某些时候,用python写好,且spark没有响应的算法支持, 能否能在YARN集群上 运行PySpark方式, 将python分析程序提交上去? Spark Applicat ...

随机推荐

  1. electron 安装过程出现未成功地运行

    问题 正文 产生问题得原因? 是因为之前安装了该程序,但是卸载的时候可能人为的直接删除了卸载程序. 这时候安装包会触发找到注册表中,该appid相同地址的卸载程序位置,然后进行调用,如果没有的话,只会 ...

  2. MySQL 什么是索引?

    该文为< MySQL 实战 45 讲>的学习笔记,感谢查看,如有错误,欢迎指正 一.索引简介 索引就类似书本的目录,作用就是方便我们更加快速的查找到想要的数据. 索引的实现方式比较多,常见 ...

  3. kali帮助

    kali help Attention 这是我N久前学习kali时自己打的东西,不保证没有纰漏啊…… 网址 kali:https://www.herojd.com/forum.php?mod=view ...

  4. MySql优化之mycat

    1. 解压mycat,不要放在有中文目录的地方  下载地址:http://dl.mycat.io/1.6-RELEASE/2 .修改mycat解压目录下的conf文件夹中server.xml文件,配置 ...

  5. .NET CORE(C#) WPF 重新设计Instagram

    微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF 重新设计Instagram 阅读导航 本文背景 代码实现 ...

  6. Asp.Net Core 3.1 集成Swagger

    引入Nuget包 Swashbuckle.AspNetCore.SwaggerGen Swashbuckle.AspNetCore.SwaggerUI 配置Startup 配置ConfigureSer ...

  7. vmware进程,虚拟机NAT模式配置固定ip,访问外网与ping通主机

    vmware进程杀不掉 在使用vmware虚拟机时,如果强制结束vmware进程,可能会发现在资源监视器中有一个vmware-vmx.exe进程始终关不掉,获得管理员权限去杀或者重启都没有用,然后正常 ...

  8. 《手把手教你构建自己的 Linux 系统》学习笔记(1)

    第二章.基础准备--Linux 系统定制原理 Linux 系统的组成及架构 共享库和静态库 在 Linux 系统中,函数库包含两种形式:共享库和静态库. 共享库 共享库在程序运行时,为其提供所需要的函 ...

  9. FIB表与RIB表的区别与联系

    RIB (route information base) 和 FIB (forwarding information base),又称Ip路由表 和 CEF表,它们之间的关系可以用下面这张图片来高度概 ...

  10. 快速建立一个Django项目

    快速建立一个Django项目 版本说明 一定要先明确好使用的Python版本和所使用包的版本,避免耽误不要的时间 Python==3.6.4 Django==1.11.9 djangoresframe ...