常用机器学习/深度学习内部函数/激活函数调用实现总结

机器学习
1.K-Means 算法

from sklearn.cluster import KMeans        #导入K均值聚类算法
#调用算法
kmodel = KMeans(n_clusters = k, n_jobs = 4) #n_jobs是并行数,一般等于CPU数较好
kmodel.fit(data)  #训练模型

kmodel.cluster_centers_   #查看聚类中心
kmodel.labels_  #查看各样本对应的类别

#调用聚类评估函数
from sklearn import metrics
labels = model.fit(X).labels
score = metrics.silhouette_score(X, labels)

2.DBSCAN

from sklearn.cluster import DBSCAN
db = DBSCAN(eps=10, min_samples=2).fit(X)
labels = db.labels_
beer['cluster_db'] = labels
beer.sort_values('cluster_db')

3.逻辑回归

#参数说明
LogisticRegression(penalty='l2')
penalty:正则惩罚项 支持l1或者l2,默认值为'l2'
random_state:随机数种子
solver:优化算法的选择参数
    liblinear:内部使用了坐标轴下降法来迭代优化损失函数
    lbfgs:拟牛顿法的一种,利用损失函数的二阶导数矩阵(即Hession矩阵)来迭代优化损失函数
n_jobs:并行数
max_iter:算法收敛的最大迭代次数
dual:对偶参数,默认为False。只用在求解线性多核的L2惩罚项上。
tol:停止求解的标准,当求解值达到该标准时,则停止迭代。
C:正则化系数的倒数。必须是正浮点型数。
fit_intercept:是否需要常量截距
class_weight:分类权重设定,可以是一个字典或者'balanced'字符串

深度学习

1.embedding函数

tf.nn.embedding_lookup(params, ids, partition_strategy='mod')
params:表示完整的嵌入张亮
ids:tensorflow类型
partition_strategy:指定分区策略的字符串,当前支持"div"和"mod",默认为"mod"

返回值:params中查找到的ids所组成的tensor。
这个函数根据ids中的值在params中找对应的index下的vector进行拼接。返回的tensor的维度是ids的维度+params的除第一纬度后的维度拼接。

列表转为tensorflow格式:
d = [[3,1],[4,1],[5,1]]
data = np.array(d)
data = tf.convert_to_tensor(data)
print(data.shape())

2.reduce_mean函数
tf.reduce_mean 函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。

reduce_mean(input_tensor, axis, keep_dims)
input_tensor:输入待降维的tensor;
axis:指定的轴,如不指定,则计算所有元素的均值。
keep_dims:是否降维度,设置为True,输出的结果保持输入tensor的形状,设置为false,输出结果降低维度

3.全连接层
tf.layers.dense(input, units, activation,use_bias)
inputs:输入该网络层的数据
units:输出的维度大小,改变inputs的最后一维
activation:激活函数,即神经网络的非线性变化 例:tf.nn.leaky_relu( 数学表达式 y = max(0, x) + leak*min(0,x))
use_bias: 是否使用偏置项

4.get_type()
获取变量的形状

激活函数:
1.阶跃函数的实现

def step_function(x):
    if x>0:
        return 1
    else:
        return 0

#支持numpy数组的实现:
def step_function(x):
    y = x>0        #数组X中大于0的元素被转换为True,小于等于0的元素被转换为False,从而生成一个新的数组y
    return y.astype(np.int)        #将数组y的元素类型从布尔型转换为int型

#绘制阶跃函数的图形

import numpy as np
import matplotlib.pyplot as plt
def step_function():
    return np.array(x>0, dtype=np.int)
x = np.arange(-5, 5 ,0.1)
y = step_function(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1)
plt.show()

2.sigmoid函数
h(x)=1/(1+exp(-x)) 取值范围[0,1] 倒数f’(x)=f(x)(1-f(x))
实现:

def sigmoid(x):
    return 1/(1+np.exp(-x))

#numpy的广播功能,如果在标量和numpy数组之间进行运算,则标量会和numpy数组的各个元素进行运算。

#绘制sigmode函数图形

x = np.arange(-5, 5 ,0.1)
y = sigmode(x)
plt.plot(x,y)
plt.ylim(-0.1, 1.1)
plt.show()

3.Relu函数
Relu函数在输入大于0时,直接输出该值; 在输出小于等于0时,输出0。

def relu(x):
    return np.maximum(0, x)

优点:①梯度下降上与tanh/sigmoid相比具有更快的收敛速度
②不会出现梯度消失现象
③Relu会使一部分神经元的输出为0,这样子就造成了网络的稀疏性。
④sigmoid和tanh计算开销大,而relu可以简单的实现。

缺点:单元脆弱且可能在训练中死去。
4.双曲正切函数
f(z)=tanh(z)(e^z-e^-z)/(e^z+e^-z) 取值范围[-1,1] 导数f’(x)=1-(f(x))^2

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值