发布时间:2023-11-22 11:30
Python部分:
1.math模块
import math
print(math.ceil(4.1)) #返回数字的上入整数print(math.floor(4.9)) #返回数字的下舍整数print(math.fabs(-10)) #返回数字的绝对值print(math.sqrt(9)) #返回数字的平方根print(math.exp(1)) #返回e的x次幂
2.随机数
import random
ran = random.random()
print(ran)
★调用 random.random() 生成随机数时,每一次生成的数都是随机的。但是,当预先使用 random.seed(x) 设定好种子之后,其中的 x 可以是任意数字,此时使用 random() 生成的随机数将会是同一个
3.字符串
①字符串连接:+
print (a + b)
②重复输出字符串:*
print(a * 3)
③通过索引获取字符串中字符: []
print(a[0])
④字符串截取 [:] 左开右闭
print(a[1:4])
⑤判断字符串中是否包含给定的字符: in, not in
print(‘e’ in a)
print(‘e’ not in a)
⑥以字符作为分隔符,将字符串中所有的元素合并为一个新的字符串:join()
new_str = ‘-’.join(‘Hello’)
⑦字符串单引号、双引号、三引号
print(‘Hello World!’)
print(“Hello World!”)
三引号里,所见即所得
4.列表
①声明一个列表
names = [‘jack’,‘tom’,‘tonney’,‘superman’,‘jay’]
②用下标获取元素
print(names[0])
从前往后为0
机器学习部分:
环境:Octave
概念:
机器学习:从经验E中获取完成任务T的最佳方法从而提升其性能,性能度量为P
监督学习:给定数据—正确答案,预测未知数据,如垃圾邮件分类,判断肿瘤良性恶性,病人是否患有糖尿病,预测房价等
无监督学习:给定数据集,使其自动聚类,如给新闻分类,对一组人群进行市场细分等,主要算法有聚类算法(对新闻,人群归类),鸡尾酒会算法(如,分离混合的音频)等。
回归模型:分为线性回归模型,如,预测房价,未来能卖出去商品的数量等;和非线性回归模型,如判断病人是否患有糖尿病,邮件是否是垃圾邮件等。
符号:
m:样本数量
x:输入变量
y:输出变量
(x,y):一个训练样本
(xi,yi):第i个训练样本
h:假设函数(hypothesis function),引导算法从x得出y
h(x) = Ax + B:单变量线性回归模型。
代价函数:J(A,B)= 1/2m *∑(h(xi)-yi)^2
min J(A,B)
※代价函数实际上是描述假设函数可靠度的函数,对于一组给定的A,B值,代价函数的值越小,假设函数越可靠,从而使预测结果越准确。
※当假设函数只有一个参数时(即h(x) = Ax),其图像为一条过原点的直线,此时代价函数的图像为一条抛物线,抛物线的最低点所对应的横坐标即为h(x)的最佳参数。当假设函数同时考虑A,B时(即h(x)= AX + B),代价函数的图像为一张3D 碗状图,可转化为二维的等高线图。等高线图的中心点即为最佳AB值。
基本思想:从给定的数据集中找出能使预测结果y最接近真实结果的一组A,B值。
梯度下降法:将代价函数最小化的方法。
※如上所述,把一张3D碗状图想象成一座山,要求代价函数的最小值,便抽象成从山上任意一点出发,360°环顾四周,找到一个方向,一步一步下山的过程,因此便有了以下所述的梯度下降法基本过程。
梯度下降法一般过程:1.初始化A,B值。(一般设为(0.0))
2.不停的一点点地改变A,B值来减小代价函数值,直到得到所期望的最小值。
梯度下降算法的定义:重复以下过程直到收敛
注:α表示学习率,恒大于零,控制下降时迈出多大步子。α越大,表示以更大的步子下山,梯度下降越迅速。
“ :=”表示赋值,“ = ”表示判断相等。
上图左边为正确的实现方法,即同时更新A,B,右边是错误的步骤。
展开后得:
上述算法又叫做Batch梯度下降法,意为每一步都完整遍历数据集的梯度下降法。除此之外还有遍历子集的梯度下降法。
心得体会:数学真有用!!!
直到这一刻,我都没有觉得数学这么有用过,数学真是为了人类发展进步而产生的一门学科,看上去很高级的算法一直深挖下去终究还是数学规律在下面支撑着。之前一直觉得高数,线代,概率论有什么用?时至今日才发现数学之美。
另外,很佩服计算机科学,人工智能的先驱者们,好奇他们的脑子怎么长的,怎么想出来这么优秀的算法。AMAZING!
越来越有趣了。
The game is on!