题外话:第二次纯手打编辑博客啦!
以下内容摘自百度百科:
作为一个还未入门的小白来说的我,一直认为,人工智能很高大上!下面就讲一下我从完全不懂AI到逐渐了解的过程吧
一开始是什么都不懂,不知道自己的学习路线,也完全不知道人工智能包括一些什么东西,就只能自己问度娘,虽然现在还是一知半解吧!首先呢讲一下我们要进军AI领域我们应该具备一些什么基础:首先需要会一门编程语言(我个人推荐python语言,因为python的库很多)
我个人就是从python的库开始了解AI的,首先了解numpy ,matplotlib这两个库
一个用python实现的科学计算包。包括:1、一个强大的N维数组对象Array;2、比较成熟的(广播)函数库;3、用于整合C/C++和Fortran代码的工具包;4、实用的线性代数、傅里叶变换和随机数生成函数。numpy和稀疏矩阵运算包scipy配合使用更加方便
NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务
我个人就认为是个画图用的。。。。就不给你们专业的讲了
然后从网上入手一份邹博老师的机器学习视频课程观看,每一节课比较长(一般两个多小时。。容易犯困,里面很多数学公式看不懂)所以在此提出,我们还需要补一下高数,概率论,线性代数
废话不多说直接上个干货,我自己写的一个最简单的一元一次线性回归函数:
import numpy as np
import tensorflow as tf
import matplotlib as mpl
import matplotlibpyplot as plt
#从-0.5到0.5之间生成20个随机点
x_data = np.linspace(-0.5,0.5,20)[:, np.newaxis]
y_data = x_data +1
plt.figure()
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False
plt.plot(x_data,y_data,'r-',x_data,y_data,'go',lw=1)
plt.title(u'一元一次回归函数',fontsize=18)
plt.xlabel('X',fontsize=15)
plt.ylabel('Y(x)',fontsize=15)
plt.grid(True,ls=":")
plt.show()
import numpy as np
import matplotlib.pyplot as plt
x = np.array([30,35,37, 59, 70, 76, 88, 100]).astype(np.float32)
print("x=:",x)
y = np.array([1100, 1423,1377,1800,2304,2588,3495,4839]).astype(np.float32)
print("====="*30)
print("y=:",y)
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
x_max = max(x)
x_min = min(x)
y_max = max(y)
y_min = min(y)
#实际算法
for i in range(0,len(x)):
x[i] = (x[i] - x_min)/(x_max - x_min)
y[i] = (y[i] - y_min)/(y_max - y_min)
print("****"*30)
print("new(x):%s \nnew(y):%s"%(x,y))
a = 1
b = -0.15
#X轴与Y轴
y_ , x_ = np.array([0,1]),np.array([0,1])
#回归方程式
yp = a*x +b
r = sum(np.square(np.round(yp-y,4)))#square取平方
print("****"*30)
#就是新的x减掉新的y保留小数点后4位
print(np.round(yp-y,4))
print("****"*30)
print(np.square(np.round(yp-y,4)))
print(r/16)
plt.scatter(x,y)
plt.xlabel(u"X")
plt.ylabel(u"Y")
plt.plot(x,yp,"r-",color='green')
plt.show()
#程序运行5秒
#plt.pause(5)
控制台输出:
x=: [ 30. 35. 37. 59. 70. 76. 88. 100.]
==================================================================================================
y=: [ 1100. 1423. 1377. 1800. 2304. 2588. 3495. 4839.]
**************************************************************************************************
new(x):[ 0. 0.07142857 0.1 0.41428572 0.5714286 0.65714288
0.82857144 1. ]
new(y):[ 0. 0.08638673 0.07408398 0.18721583 0.32201123 0.39796737
0.64054561 1. ]
**************************************************************************************************
[-0.15000001 -0.16500001 -0.1241 0.0771 0.0994 0.1092 0.038
-0.15000001]
**************************************************************************************************
[ 0.0225 0.027225 0.01540081 0.00594441 0.00988036 0.01192464
0.001444 0.0225 ]
0.00730120158551