分类 机器学习 下的文章

PYPLOT(PYTHON中绘制2D图表)使用详解(四)

在学习机器学习与PYTHON的相关内容中,接触到了pyplot这个子库,感觉非常有用,可是网络上的文章大部分都是比较零散的,于是打算按照官方文档,进行一个简单翻译与演示,详细记录一下该库的使用方法。这是本系列的第四篇,每篇大约讲解20个方法,但有些方法官方也未给出详细的用法,待以后使用中慢慢摸索后再补充。

二、方法介绍(61~80)

61、set_cmap() —— 设置当前image的colormap

关于colormap,可参考help(colormap)

62、imread() —— 读取图像(从图形文件中提取数组)

63、imsave() —— 保存为图像文件中的数组

64、matshow() —— 在新figure中显示数组矩阵

65、polar() —— 绘制极坐标图

参考代码:

import matplotlib.pyplot as plt
plt.polar()
plt.show()

操作结果:

2345截图20170329110045.png

66、plotfile() —— 将图绘入文件

67、spy() —— 绘制二维数组Z的稀疏模式

68、acorr() —— 绘制X的自相关

69、angle_spectrum() —— 绘制角度谱?

70、arrow(x, y, dx, dy) —— 添加箭头

绘制箭头从(x,y)指向(dx,dy)

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,3,4,8])
plt.arrow(0,1,2,7,shape='full',overhang=0.2,head_width=0.2)
plt.show()

操作结果:

2345截图20170329111206.png

71、axhline(y=0, xmin=0, xmax=1, hold=none) —— 添加一条穿越axis的水平线

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,3,4,8])
plt.axhline(1,0.5,1) # 0.5表示中间,0表示最左,1表示最右
plt.show()

操作结果:

2345截图20170329111430.png

72、axhspan(ymin,ymax,xmin,xmax) —— 添加一个穿越axis的水平矩形(span)

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,3,4,8])
plt.axhspan(1,2,0.5,1)
plt.show()

操作结果:

2345截图20170329111701.png

73、axvline(x, ymin, ymax) —— 添加一条穿越axis的竖线

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,3,4,8])
plt.axvline(1,0.5,1)
plt.show()

操作结果:

2345截图20170329111826.png

74、axvspan(xmin,xmax, ymin, ymax) —— 添加一条穿越axis的矩形

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,3,4,8])
plt.axvspan(1,2,0.5,1)
plt.show()

操作结果:

2345截图20170329111841.png

75、bar() —— 条状图

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,3,4,8])
plt.bar(0,1,width=1)
plt.show()

操作结果:

2345截图20170329112223.png

76、barh() —— 绘制横向条形图

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,3,4,8])
plt.barh(0,1,height=1)
plt.show()

操作结果:

2345截图20170329112736.png

77、broken_barh() —— 绘制水平柱状图

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,3,4,8])
plt.barh((1,2,3),(1,2,3))
plt.show()

操作结果:

2345截图20170329112855.png

78、boxplot() —— 绘制方框和线

79、cohere() —— 绘制x与y的相关性

80、clabel() —— 为等值线图设置标签

PYPLOT(PYTHON中绘制2D图表)使用详解(三)

在学习机器学习与PYTHON的相关内容中,接触到了pyplot这个子库,感觉非常有用,可是网络上的文章大部分都是比较零散的,于是打算按照官方文档,进行一个简单翻译与演示,详细记录一下该库的使用方法。这是本系列的第三篇,每篇大约讲解20个方法,但有些方法官方也未给出详细的用法,待以后使用中慢慢摸索后再补充。

二、方法介绍(41~60)

41、tight_layout() —— 自动填充

该操作会自动将当前的图形填充满空白区域

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.tight_layout() # 充满画布
plt.show()

操作结果:

2345截图20170328094052.png

42、box() —— 是否展示容器边框(坐标轴)

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.box()
plt.show()

操作结果:

2345截图20170328094206.png

43、title() —— 定义标题

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.title('I\'m a title!')
plt.show()

操作结果:

2345截图20170328094337.png

44、axis() —— 获取或设置轴属性

演示中我们设置了轴的范围,依次为x轴最小值、x轴最大值、y轴最小值、y轴最大值,当然实际中还可以对很多属性进行设置和获取。

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
v = [10,100,10,100] # [xmin,xmax,ymin,ymax]
plt.axis(v)
plt.show()

操作结果:

2345截图20170328094732.png

45、xlabel() —— x轴标签

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.xlabel('XLABEL')
plt.show()

操作结果:

2345截图20170328094830.png

46、ylabel() —— y轴标签

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.ylabel('YLABEL')
plt.show()

操作结果:

2345截图20170328094945.png

47、xlim() —— 设置x轴刻度

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.xlim((10,100))
plt.show()

操作结果:

2345截图20170328095423.png

48、ylim() —— 设置y轴刻度

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.ylim((10,100))
plt.show()

操作结果:

2345截图20170328095543.png

49、xscale() —— 指定x轴线性刻度、指数刻度

参数取值linear/log,指定线性或对数刻度

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.xscale('log')
plt.show()

操作结果:

2345截图20170328100044.png

50、yscale() —— 指定y轴线性刻度、指数刻度

参数取值linear/log,指定线性或对数刻度

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.yscale('log')
plt.show()

操作结果:

2345截图20170328100258.png

51、xticks() —— 获取或设置x轴刻度及对应标签

参考代码:

import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,3])
plt.xticks( np.arange(5), ('2000', '2005', '2010', '2015', 'Future') )
plt.show()

操作结果:

2345截图20170328151510.png

52、yticks() —— 获取或设置y轴刻度及对应标签

参考代码:

import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,3])
plt.yticks( np.arange(5), ('2000', '2005', '2010', '2015', 'Future') )
plt.show()

操作结果:

2345截图20170328151607.png

53、minorticks_on() —— 显示最小刻度线

参考代码:

import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,3])
plt.minorticks_on()
plt.show()

操作结果:

2345截图20170328151954.png

54、minorticks_off() —— 隐藏最小刻度线

参考代码:

import matplotlib.pyplot as plt
import numpy as np
plt.plot([1,2,3,3])
plt.minorticks_on() # 展示最小刻度线
plt.minorticks_off() # 关闭最小刻度线
plt.show()

操作结果:

2345截图20170328152149.png

55、rgrids() —— 获取或设置极坐标网格

参考代码:

import matplotlib.pyplot as plt
plt.subplot(122, polar=True)
plt.rgrids((0.5, 1, 1.5), angle=0)
plt.show()

操作结果:

2345截图20170328153327.png

56、thetagrids() —— 获取或设置极坐标网格θ位置

待补充

57、get_plot_commands() —— 获取所有绘制命令的排序列表

参考代码:

import matplotlib.pyplot as plt
print(plt.get_plot_commands())

操作结果:

2345截图20170328154135.png

58、colormaps() —— 获取所有颜色

参考代码:

import matplotlib.pyplot as plt
print(plt.colormaps())

操作结果:

2345截图20170328154418.png

59、colorbar() —— 彩条标值

待补充

60、clim() —— 设置当前图像的颜色取值范围

文档说是载入图像后,设置两个参数,例如:

plt.clim(0, 0.5)

但实际测试没效果
待补充

PYPLOT(PYTHON中绘制2D图表)使用详解(二)

在学习机器学习与PYTHON的相关内容中,接触到了pyplot这个子库,感觉非常有用,可是网络上的文章大部分都是比较零散的,于是打算按照官方文档,进行一个简单翻译与演示,详细记录一下该库的使用方法。这是本系列的第二篇,每篇大约讲解20个方法,但有些方法官方也未给出详细的用法,待以后使用中慢慢摸索后再补充。

二、方法介绍(21~40)

21、draw() —— 重新绘制当前figure

主要用于更新一个没有设置为自动更新的figure,应用于交互环境中

参考代码:待补充

22、savefig() —— 保存当前figure

来自于Figure.savefig类,用于将当前figure输出到postscript

基本格式:

savefig(fname, dpi=None, facecolor='w', edgecolor='w',
        orientation='portrait', papertype=None, format=None,
        transparent=False, bbox_inches=None, pad_inches=0.1,
        frameon=None)

参数说明:

dpi:[None | scalar>0] 每英寸的分辨率
facecolor,edgecolor:matplotlib色彩 figure图像颜色
orientation: ['landscape'|'portait'] 不支持所有的后台,目前只能在PostScript输出
papertype:'letter','legal','executive','ledger','a0' through 'a10', 'b0' throuth 'b10'等 纸张类型
format: png,pdf,ps,eps,svg等,扩展名
transparent:透明度
frameon:[True|False] 背景图是否现实
bbox_inches: 'tight' 边缘空白区域大小设置

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
plt.plot([1,3,3,8])
plt.savefig('D:\\python\\ML\\test')

操作结果(在指定目录生成了test.png图片):

2345截图20170322170424.png

23、ginput() —— 交互式标注

可以利用该工具实现图像中点的拾取等操作

参考代码:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg  # 用于导入图片
print(plt.gci()) # 在未向plt中添加内容时,返回None
img = mpimg.imread('D:\\python\\ML\\test.png')  # 导入图片
plt.imshow(img)  # 将图片在plt中显示
print('Please click 3 porints') # 输出一个提示语句
x = plt.ginput(3)  # 捕获用户点击坐标
print(x) # 打印坐标

操作结果:

2345截图20170322171959.png

2345截图20170322172131.png

暂时请忽略这个报错。

24、waitforbuttonpress() —— 监听键盘按键

如果用户按的是键盘,返回True,如果是其他(如鼠标单击),则返回False

参考代码:

import matplotlib.pyplot as plt
plt.figure(1) # 创建figure
plt.grid() # 展示网格
print('Please enter a key') # 提示按键
a = plt.waitforbuttonpress() # 捕捉按键
print(a) # 打印捕捉返回结果

操作结果:

1、按下某个键盘按键,返回True

2345截图20170322173014.png

2、单击鼠标,返回False

2345截图20170322173107.png

25、figtext() —— 为figure添加文字

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
plt.figtext(0.5,0.5,'Hello!') # 前两个参数为坐标,取值范围0~1,0.5表示中间,第三个参数是文字内容
plt.show()

操作结果:

2345截图20170325105357.png

26、suptitle() —— 为figure添加总标题

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
plt.suptitle('Hello!')
plt.show()

操作结果:

2345截图20170325105556.png

27、figimage() —— 添加一个非重采样图像

[待补充]

28、figlegend(arg1,arg2,arg3) —— 为figure添加图例

参数说明:
arg1:一条Line2D实例
arg2:字符串,图例的说明
arg3:图例的位置,对应的位置如下图:

2345截图20170325110935.png

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
line = plt.plot([1,3,3,4]) # 生成一条Line2D
plt.figlegend(line,'a',10) # 将该图例设置为a,位置在中间
plt.show()

操作结果:

2345截图20170325110800.png

28、hold() —— 锁定当前状态

[待补充] 这里的锁定状态与坐标轴axes有关,看起来像是要锁定当前图像。但是在pyplot中,可以在不锁定的情况下继续绘制第二条线路并不影响。这个问题后边再说。

29、ishold() —— 返回锁定状态

[待补充] 还未研究透彻

30、over() —— 以Hold(True)的方式调用函数并保存当前状态

[待补充]

30、axes() —— 为figure添加axes(坐标轴)

参考代码:

import matplotlib.pyplot as plt
rect = [0.1,0.1,0.8,0.8] # [left,bottom,width,height]
plt.axes(rect,facecolor='y') # 生成坐标体系,取值范围rect,颜色:yellow
plt.show()

操作结果:

2345截图20170325152353.png

31、delaxes() —— 删除坐标轴

参考代码:

import matplotlib.pyplot as plt
rect = [0.1,0.1,0.8,0.8] # [left,bottom,width,height]
a = plt.axes(rect,facecolor='y') # 生成坐标体系,取值范围rect,颜色:yellow
plt.delaxes(a) # 删除黄色的坐标体系
a = plt.axes(rect,facecolor='b') # 生成坐标体系,取值范围rect,颜色:blue
plt.show()

操作结果:

2345截图20170325152606.png

32、sca() —— 为ax设置当前坐标轴

[待补充]

33、gca() —— 获取当前实例,用于设置属性

[待补充] 经测试,可以通过plt.gca() 捕获当前坐标体系,但无法通过set设置属性,也无法输出

34、subplot(行,列,序号,背景色) —— 在一个图表中绘制多个子图

注意序号决定了放在哪个格子中,从左到右、从上到下依次增加

演示代码:

import matplotlib.pyplot as plt
plt.subplot(1,2,1,axisbg = 'y') # 在一行两列格子中放置1号图,背景为黄色
plt.subplot(1,2,2,axisbg = 'b') # 在一行两列格子中放置2号图,背景为蓝色
plt.show()

操作结果:

3.png

35、supplots() —— 顾名思义,一次弄多张图

演示代码:

import matplotlib.pyplot as plt
plt.subplots(2,2)
plt.show()

操作结果:

2345截图20170325161356.png

36、subplot2grid() —— 在网格中创建subplot

演示代码:

import matplotlib.pyplot as plt
plt.subplot2grid((2,2),[0,1])  # 添加2行2列的网格,并将图形放置到1行2列[0,1]
plt.show()

操作结果:

2345截图20170325161955.png

37、twinx() —— 绘制与之前axes图轴共用x轴的axes,新的图将被放在右侧。如果ax=None,则覆盖ax,并返回ax2

演示代码:

import matplotlib.pyplot as plt
ax = plt.subplot2grid((1,2),[0,0])
plt.twinx(ax)
plt.show()

操作结果:

2345截图20170325162604.png

38、twiny() —— 使用方法类似twinx,不同的是变成了y轴

演示代码:

import matplotlib.pyplot as plt
plt.subplot2grid((1,2),[0,0])
plt.twinx()
plt.twiny()
plt.show()

操作结果:

2345截图20170325162721.png

39、subplots_adjust() —— 调整subplot布局

参数:subplots_adjust(left=None, bottom=None, right=None, top=None,
wspace=None, hspace=None),参数取值[0,1]

参考代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.subplots_adjust(left=0.2, bottom=0.1, top=0.3)
plt.show()

操作结果:

2345截图20170325163140.png

40、subplot_tool() —— 打开图像的subplot工具窗口

可以通过点击蓝色进度条,调整图形参数。

演示代码:

import matplotlib.pyplot as plt
plt.plot([1,2,3,3])
plt.subplot_tool()
plt.show()

操作结果:

2345截图20170325163447.png

PYPLOT(PYTHON中绘制2D图表)使用详解(一)

在学习机器学习与PYTHON的相关内容中,接触到了pyplot这个子库,感觉非常有用,可是网络上的文章大部分都是比较零散的,于是打算按照官方文档,进行一个简单翻译与演示,详细记录一下该库的使用方法。

一、pyplot简介

pyplot是matplotlib库的一个子库,提供了类似MATLAB的绘图方法,虽然没有MATLAB功能强大,但是对于想学习如何在PYTHON环境下练习机器学习的初学者来说,是一个比较方便的小工具。它主要用来绘制2D图表,例如:

2345截图20170320213030.png

通过对数据进行图形化展示(有点像EXCEL里生成折线图的功能),可以直观的了解数据的分布情况,更好的制定出学习方法。同时,它还可以展示出我们机器学习到的计算方法,了解其与实际情况是否相符等问题。如上图中的黄色虚线,是我通过学习算法得出了数据模拟走势。

二、方法介绍

1、show() —— 显示图形界面。

当我们将图形界面配置完成后,通过调用show()方法来展示界面。

参考代码:

import matplotlib.pyplot as plt # 从matplotlib库导入子库pyplot,缩写为plt
plt.grid() # 显示网格,后面介绍
plt.show() # 显示图形

效果如图所示:

2345截图20170320214345.png

2、isinteractive() —— 返回交互模式状态,布尔值

该命令的作用是返回一个布尔值(True OR False),以此确定交互模式的开关。
该命令决定了是否视图窗口绘图面板在每个pyplot命令后都绘制,如果为False,则每个命令后都更新(但只会在调用draw()命令后才进行绘制)。如果设置为True,则每个pyplot命令都会重新绘制。
该命令与以下四个命令配合密切:
ion() 打开交互模式
ioff() 关闭交互模式
draw() 强制窗口重新绘制

参考代码:暂无

3、ioff() —— 关闭交互模式

参考代码:

import matplotlib.pyplot as plt
print(plt.isinteractive()) # 默认返回False
plt.ion() # 打开交互模式
print(plt.isinteractive()) # 模式已打开,返回True
plt.ioff() # 关闭交互模式
print(plt.isinteractive()) # 模式已关闭,返回False

4、ion() —— 打开交互模式

参考代码:

同3、ioff()

5、pause() —— 暂停若干秒

该命令用于暂停运行,有点类似sleep,但不同之处在于,如果有活动的内容,暂停期间,GUI事件循环仍然会继续运行,就像一个简单的动画。当然,真正动画实现,请参考matplotlib库的animation子库。

参考代码:

import matplotlib.pyplot as plt
print('Pause start')
plt.pause(3) # 暂停3秒
print('Pause end')

效果如下:

2345截图20170321100421.png

6、rc、tc_context、rcdefaults,实际上是同步了matplotlib的同名子类,这里不说了,将来我们在相关文章中专门来说。

7、gci() —— 获取当前元素的基本属性(待编辑)

该命令功能不太明确,我尝试了一下,如果给plt中赋值了,那么会返回一个元组,里面包含图片尺寸等;如果plt为空,则返回None。

参考代码:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg  # 用于导入图片
print(plt.gci()) # 在未向plt中添加内容时,返回None
img = mpimg.imread('D:\\python\\test.png')  # 导入图片
plt.imshow(img)  # 将图片在plt中显示
plt.axis('off') # 关闭坐标轴
print(plt.gci()) # 打印当前plt中内容的属性,返回AxesImage(80,52.8;496x369.6)
plt.show() # 展示plt更直观的看到图像

操作结果:

2345截图20170321105946.png

8、sci() —— 设置当前图像(Set Current Image)(待编辑)

这张图片将作为地图的目标,类似于jet()方法,当前图像是当前轴的属性。
还不是很清楚怎么用。

9、setp() —— 设置或获取artist属性

比如设置一个线段的属性为短间隔线

参考代码:

import matplotlib.pyplot as plt
line = plt.plot([1,3,3,4]) # 设置一条趋势线
setp(line, linestyle='--') # 设置线的格式为短间隔线
plt.show() # 展示plt

操作结果:

2345截图20170321165154.png

10、xkcd() —— 素描风格绘图模式

他只会对你设置后的代码起作用,而且建议提前安装字体“Humor Sans”

参考代码:

import matplotlib.pyplot as plt
with plt.xkcd(): # 采用素描风格绘图模式
    plt.plot([1,3,3,4]) # 随意设置一组数字方便演示
    plt.show() # 展示内容

操作结果:

2345截图20170321171305.png

11、figure() —— 创建图表

用于创建图表,可创建多个,可通过参数指定序号/分辨率/背景色等信息

参考代码:

import matplotlib.pyplot as plt
plt.figure(1, dpi=100, facecolor='r') # 创建图表1,主色用红色r,分辨率100
plt.plot([1,3,3,4])  # 随意输入个折线
plt.grid() # 显示网格
plt.figure(2, dpi=70, facecolor='b') # 创建图表2,主色用蓝色b,分辨率70
plt.plot([1,3,3,4])
plt.grid()
plt.show()

操作结果:

2345截图20170321213356.png

12、gcf() —— 获取当前figure的尺寸

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
plt.grid()
print(plt.gcf()) # 返回: Figure(640×480)
plt.show()

操作结果:

2345截图20170321214512.png

13、fignum_exists(num) —— 判断figure编号是否存在,返回布尔值

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
print(plt.fignum_exists(1))  # 返回True
print(plt.fignum_exists(2))  # 返回False

操作结果:

2345截图20170321214810.png

14、get_fignums() —— 获取figures序号的数组

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
plt.figure(2)
plt.figure(3)
print(plt.get_fignums())

操作结果:

2345截图20170321215024.png

15、get_figlabels() —— 获取所有figures的标签的数组

未测试到理想结果。缺少相关参考文档。

16、get_current_fig_manager() —— 获取当前的figure的manager的ID

参考代码:

import matplotlib.pyplot as plt
plt.figure(1)
print(plt.get_current_fig_manager().num)
plt.figure(2)
print(plt.get_current_fig_manager().num)

操作结果:

2345截图20170321221149.png

17、connect() —— 作用暂未明确

该方法继承自:FigureCanvasBase.mpl_connect

18、disconnect() —— 作用暂未明确

该方法继承自:FigureCanvasBase.mpl_connect

19、close() —— 关闭figure窗口

参考代码:

import matplotlib.pyplot as plt
plt.figure(1) # 创建窗口1
plt.figure(2) # 创建窗口2
plt.grid() # 窗口增加网格
plt.close(1) # 关闭窗口1
plt.show() # 展示剩余窗口

操作结果:只有窗口2会展示出来,因为窗口1已经关闭了。可以尝试删掉plt.close(1)这一行再试,会发现窗口1和窗口2都被打开了。

20、clf() —— 清空当前窗口

参考代码:

import matplotlib.pyplot as plt
plt.figure(1) # 创建窗口1
plt.grid() # 增加网格
plt.clf() # 清空窗口
plt.show() # 展示窗口

操作结果:注意已经将窗口清空了,如果去掉plt.clf()一行,会发现网格还有展示

2345截图20170322111003.png

一个初学者对机器学习的理解

我学习机器学习方面的知识有一周了,由于自己的数学,尤其是统计和概率太差劲,所以理解起里边的公式,就像在看天书一样。
我首先仔细听了12堂公开课,是吴恩达在斯坦福大学讲的,刚开始第一节可以说基本听懂了,但后边的就只能听,完全没办法跟上了。
然后又从网上搜了不少的相关介绍,通俗些的很少,可能是因为这东西很难讲通俗吧。
现在说说自己对机器学习的一些简单理解,理论不一定是正确的,过一段时间我也可能会有新的认识,所以前辈们还是多拍砖指教!
1、机器学习能干什么?
简单的说,就是你去调教一个程序,让程序试着自己去尝试解决问题。比如,预测房价,我们给机器提供一组房价和房屋的参数(面积、户型、朝向、楼层、地理位置等),让机器自己按照一定的公式,去尝试着找到计算方法,不断调整参数,最终找到了某个公式,例如:房价=面积×1000+户型×500+楼层×200……,通过该公式计算,能使得其恰好的符合我们给定数据的结果,就是这样算下来,我们给机器的那些参数算出来,恰好最接近真实的房价。然后,我们就可以得到这个算法(我们并不需要理解究竟是如何计算的),我们将房屋的情况输入给程序,程序就可以预测出房价。
要知道,如果这个操作用人来做,比如面积后面的参数1000,你可能需要从1尝试到10000甚至100000,然后再调整后面若干参数,你的一生也许就只够来写这一个程序了,时间耗费太多。而机器自己去学习解决这个问题,可能很快就能得出答案。而且,随着样本不断增加,机器就会越来越聪明。
当然,除了预测房价,这货还能预测股价,还能用来做人像比对(最强大脑有一期用童年照找现在的人就是百度大脑通过机器学习得到的)。
2、机器学习的分类
对我这个初学者来说,我只能大概的理解,监督学习和非监督学习两类,监督学习,是在有既定答案的情况下的学习,如前面的房价预测。非监督学习,则更复杂,是机器自己来对数据进行分类,可以应用在声音识别和分离上,他可以把两个混合在一起的嘈杂声音,清晰的分成两个独立的声音。你是不是在想,这一定超级复杂吧,因为这件事如果让人做,几乎是很难完成的。但是,在吴恩达的课里,这个操作,只需要一行代码!我了个擦。。。
3、如何学习机器学习?
其实我自己到现在仍然是一头雾水,毕竟有那么一点编程基础,本以为自己看看机器学习的理论,应该能很快入门,但是,当那些公式出现在我面前的时候,我才知道,门槛确实不低啊!
4、机器学习是否值得学习?
我的答案是,当然,即使你付出再大再多的努力,也应该努力的去学,为什么?原因实在太多了:
拉勾上机器学习的岗位,那都是20K起的,而机器学习几乎可以与我们任何一个领域发生关联,我们所从事的任何职业,机器学习都有用武之地。而且机器学习是人工智能的核心,学好了机器学习,我们将来才有可能在人工智能领域拥有一席之地。要知道,在未来,90%以上的职业,都会被人工智能取代,也许人工智能和艺术创作,将成为未来仅存的两大职业。
5、我想举几个行业可以应用的场景,当然有一些现在可能没成为现实,但将来一定会实现:
(1)人脸识别:我们不需要再随身带着身份证了,去ATM取钱,刷脸就行了!
(2)商品定价:根据大量的样本分析,可以自动得出最优的商品定价,按照这个定价,可以获得利润与销量的最优组合,什么薄利多销,那都是浮云。
(3)自动驾驶:想想真是有点小激动呢,因为自动驾驶的数据如果能够实现全球共享,那么自动驾驶系统的程序将会运行完美,车祸将从世界上消失。
(4)农业种植:通过让机器不断观察农作物的状态,调整灌溉、施肥、光照、温度的参数,得到最优组合,让农作物的产量大幅度提升。
(5)情感服务:情感机器人将根据人类的表情、动作、语言数据,理解人类的心理状态,并做出相应的反应。
(6)网络优化:这个可能比较泛泛,具体点,比如你家的路由器,应该放在什么位置,角度如何调整,可能晚上你睡觉时候在卧室,他会如何调整,你做饭时候在厨房,他又该如何调整。
(7)电视节目:学习你的使用习惯,在适当的时候给你提醒,比如你每天都在盯着某个电视剧,结果某一天忘记了,程序会提醒你,是不是要跳过去看看?

这样的例子实在太多,我真心的希望机器学习能应用到越来越多的领域,让我们的生活变得越来越好!