人工智能的实现是基于机器学习,机器学习的一个方法是神经网络,以及各种机器学习算法库。
有监督学习:一般数据构成是【特征值+目标值】
无监督学习:一般数据构成是【特征值】
Scikit-learn(sklearn)的定位是通用机器学习库,传统的机器学习库。
sklearn主要适合中小型的、实用机器学习项目,尤其是那种数据量不大且需要使用者手动对数据进行处理,并选择合适模型的项目。这类项目往往在CPU上就可以完成,对硬件要求低。
?
sklearn更倾向于使用者可以自行对数据进行处理,比如选择特征、压缩维度、转换格式,是传统机器学习库,SKLearn中,因为做了上层的封装,分类模型、回归模型、聚类与降维模型、预处理器等等都叫做估计器(estimator)
①机器学习基础知识:机器学习定义与四要素:数据、任务、性能度量和模型。机器学习概念,以便和SKLearn对应匹配上。
②SKLearn讲解:API设计原理,SKLearn几大特点:一致性、可检验、标准类、可组合和默认值,以及SKLearn自带数据以及储存格式。
③SKLearn三大核心API讲解:包括估计器、预测器和转换器。这个板块很重要,大家实际应用时主要是借助于核心API落地。
④SKLearn高级API讲解:包括简化代码量的流水线(Pipeline估计器),集成模型(Ensemble估计器)、有多类别-多标签-多输出分类模型(Multiclass 和 Multioutput 估计器)和模型选择工具(Model Selection估计器)。
TensorFlow(tf)的定位主要是深度学习库,tf主要适合已经明确了解需要用深度学习,且数据处理需求不高的项目。这类项目往往数据量较大,且最终需要的精度更高,一般都需要GPU加速运算
不过小样本的也可以使用Tf的Keras来完成:一般使用流程
model = Sequential() # 定义模型
model.add(Dense(units=64, activation='relu', input_dim=100)) # 定义网络结构
model.add(Dense(units=10, activation='softmax')) # 定义网络结构
model.compile(loss='categorical_crossentropy', # 定义loss函数、优化方法、评估标准
optimizer='sgd',
metrics=['accuracy'])
model.fit(x_train, y_train, epochs=5, batch_size=32) # 训练模型
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128) # 评估模型
classes = model.predict(x_test, batch_size=128) # 使用训练好的数据进行预测
常用:
model.fit训练
loss,accuracy = model.evaluate模型评估计算准确率
model.predict预测
model.summary 打印模型结构
model.get_config
?DNN介绍:
深度神经网络(DNN)是一种多层无监督神经网络,并且将上一层的输出特征作为下一层的输入进行特征学习,通过逐层特征映射后,将现有空间样本的特征映射到另一个特征空间,以此来学习对现有输入具有更好的特征表达。深度神经网络具有多个非线性映射的特征变换,可以对高度复杂的函数进行拟合。如果将深层结构看作一个神经元网络,则深度神经网络的核心思想可用三个点描述如下:
(1)每层网络的预训练均采用无监督学习;
(2)无监督学习逐层训练每一层,即将上一层输出作 下一层的输入;
(3)有监督学习来微调所有层(加上一个用于分类的分类器)。
深度神经网络与传统神经网络的主要区别在于训练机制。
为了克服传统神经网络容易过拟合及训练速度慢等不足,深度神经网络整体上采用逐层预训练的训练机制,而不是采用传统神经网络的反向传播训练机制。
优点:
- 克服了人工设计特征费时、费力的缺点;
- 通过逐层数据预训练得到每层的初级特征;
- 分布式数据学习更加有效(指数级);
- 相比浅层建模方式,深层建模能更细致高效的表示实际的复杂非线性问题。
DNN模型的神经网络层分为三类,其中第一层为输入层,最后一层为输出层,中间都为隐藏层。每一层之前是完全连接的,整体上看是复杂的,但从局部来看,实质上还是感知机模型。DNN可拟合任意函数。