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

第1题

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

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

运行结果:

第2题

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

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3. from mpl_toolkits.mplot3d import Axes3D
  4.  
  5. #-----------------计算代价值函数-----------------------
  6. def computeCost(X, y, theta):
  7. m = np.size(X[:,0])
  8. J = 1/(2*m)*np.sum((np.dot(X,theta)-y)**2)
  9. return J
  10.  
  11. #----------------根据人口预测利润----------------------
  12. #读取数据集中数据,第一列是人口数据,第二列是利润数据
  13. data = np.loadtxt('ex1data1.txt',delimiter=",",dtype="float")
  14. m = np.size(data[:,0])
  15. # print(data)
  16.  
  17. #------------------绘制样本点--------------------------
  18. X = data[:,0:1]
  19. y = data[:,1:2]
  20. plt.plot(X,y,"rx")
  21. plt.xlabel('Population of City in 10,000s')
  22. plt.ylabel('Profit in $10,000s')
  23. # plt.show()
  24.  
  25. #-----------------梯度下降计算局部最优解----------------
  26. #添加第一列1
  27. one = np.ones(m)
  28. X = np.insert(X,0,values=one,axis=1)
  29. # print(X)
  30.  
  31. #设置α、迭代次数、θ
  32. theta = np.zeros((2,1))
  33. iterations = 1500
  34. alpha = 0.01
  35.  
  36. #梯度下降,并显示线性回归
  37. J_history = np.zeros((iterations,1))
  38. for iter in range(0,iterations):
  39. theta = theta - alpha/m*np.dot(X.T,(np.dot(X,theta)-y))
  40. J_history[iter] = computeCost(X,y,theta)
  41. plt.plot(data[:,0],np.dot(X,theta),'-')
  42. plt.show()
  43. # print(theta)
  44. # print(J_history)
  45.  
  46. #--------------------显示三维图------------------------
  47. theta0 = np.linspace(-10,10,100)
  48. theta1 = np.linspace(-1,4,100)
  49. J_vals = np.zeros((np.size(theta0),np.size(theta1)))
  50. for i in range(0,np.size(theta0)):
  51. for j in range(0,np.size(theta1)):
  52. t = np.asarray([theta0[i],theta1[j]]).reshape(2,1)
  53. J_vals[i,j] = computeCost(X,y,t)
  54. # print(J_vals)
  55. J_vals = J_vals.T #需要转置一下,否则轴会反
  56. fig1 = plt.figure()
  57. ax = Axes3D(fig1)
  58. ax.plot_surface(theta0,theta1,J_vals,rstride=1,cstride=1,cmap=plt.get_cmap('rainbow'))
  59. ax.set_xlabel('theta0')
  60. ax.set_ylabel('theta1')
  61. ax.set_zlabel('J')
  62. plt.show()
  63.  
  64. #--------------------显示轮廓图-----------------------
  65. lines = np.logspace(-2,3,20)
  66. plt.contour(theta0,theta1,J_vals,levels = lines)
  67. plt.xlabel('theta0')
  68. plt.ylabel('theta1')
  69. plt.plot(theta[0],theta[1],'rx')
  70. plt.show()

运行结果:

第3题

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

  1. import numpy as np
  2. import matplotlib.pyplot as plt
  3.  
  4. #-----------------计算代价值函数-----------------------
  5. def computeCost(X, y, theta):
  6. m = np.size(X[:,0])
  7. J = 1/(2*m)*np.sum((np.dot(X,theta)-y)**2)
  8. return J
  9.  
  10. #-------------------根据面积和卧室数量预测房价----------
  11. #读取数据集中数据,第一列是面积数据,第二列是卧室数量,第三列是房价
  12. data = np.loadtxt('ex1data2.txt',delimiter=",",dtype="float")
  13. m = np.size(data[:,0])
  14. # print(data)
  15. X = data[:,0:2]
  16. y = data[:,2:3]
  17.  
  18. #----------------------均值归一化---------------------
  19. mu = np.mean(X,0)
  20. sigma = np.std(X,0)
  21. X_norm = np.divide(np.subtract(X,mu),sigma)
  22. one = np.ones(m) #添加第一列1
  23. X_norm = np.insert(X_norm,0,values=one,axis=1)
  24. # print(mu)
  25. # print(sigma)
  26. # print(X_norm)
  27.  
  28. #----------------------梯度下降-----------------------
  29. alpha = 0.05
  30. num_iters = 100
  31. theta = np.zeros((3,1));
  32. J_history = np.zeros((num_iters,1))
  33. for iter in range(0,num_iters):
  34. theta = theta - alpha/m*np.dot(X_norm.T,(np.dot(X_norm,theta)-y))
  35. J_history[iter] = computeCost(X_norm,y,theta)
  36. # print(theta)
  37. x_col = np.arange(0,num_iters)
  38. plt.plot(x_col,J_history,'-b')
  39. plt.xlabel('Number of iterations')
  40. plt.ylabel('Cost J')
  41. plt.show()
  42.  
  43. #----------使用上述结果对[1650,3]的数据进行预测--------
  44. test1 = [1,1650,3]
  45. test1[1:3] = np.divide(np.subtract(test1[1:3],mu),sigma)
  46. price = np.dot(test1,theta)
  47. print(price) #输出预测结果[292455.63375132]
  48.  
  49. #-------------使用正规方程法求解----------------------
  50. one = np.ones(m)
  51. X = np.insert(X,0,values=one,axis=1)
  52. theta = np.dot(np.dot(np.linalg.pinv(np.dot(X.T,X)),X.T),y)
  53. # print(theta)
  54. price = np.dot([1,1650,3],theta)
  55. 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. dmock 基于Django的轻量级Mock平台

    GitHub:https://github.com/yjlch1016/dmock # dmock 基于Django的轻量级Mock平台 dmock即Django+Mock的缩写 一.思路: mock ...

  2. Python3.7+Pycharm+cuda10.0+tensorflow GPU版本 安装

    处理器:I5-7500 显卡   :GTX1050Ti 系统   :Win10 1. 首先搭建Python环境. 官网https://www.python.org/downloads/下载Python ...

  3. 非常简洁简单的tcp socket库 XKSocket

    一个非常简洁简单的异步tcp socket库,主要就是分包的问题,处理组包,粘包等问题 非常适合新手:) 项目中带有使用示例. http://git.oschina.net/dreamzgj/XKSo ...

  4. linux centos7 非root用户安装源码版docker

    注意:非root用户必须要有sudo权限 一.安装前的准备 1.查看当前主机是否有docker组 若没有输出结果则新建 再次查看,发现已经有了docker组 2.新增拥有sudo权限的用户(若知道ro ...

  5. CF #623 div.2

    序 话说,总有人认为我是黑别人电脑的(雾??其实,我不黑电脑,我黑手机. T1 此题巨水,比较四个面积就就好了.. /* make by ltao */ #include <iostream&g ...

  6. python3-cookbook笔记:第四章 迭代器与生成器

    python3-cookbook中每个小节以问题.解决方案和讨论三个部分探讨了Python3在某类问题中的最优解决方式,或者说是探讨Python3本身的数据结构.函数.类等特性在某类问题上如何更好地使 ...

  7. CVE-2020-1938/CNVD-2020-10487 幽灵猫漏洞

    漏洞描述(后期跟进漏洞分析) Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和Java ...

  8. 【37】池化层讲解(Pooling layers)

    池化层(Pooling layers) 除了卷积层,卷积网络也经常使用池化层来缩减模型的大小,提高计算速度,同时提高所提取特征的鲁棒性,我们来看一下.   先举一个池化层的例子,然后我们再讨论池化层的 ...

  9. 创建react项目,用typescript语法

    create-react-app 文档 typescript 单元测试 官网测试相关文档

  10. 深入理解 C/C++ sizeof() 运算符

    过去有一段时间一直以为带个括号的 \(sizeof()\) 是 \(C/C++\) 的原生函数QAQ. 其实不然,\(sizeof\) 同位运算符(^|&~!)一样是一种单目运算符,作用于变量 ...