一.入门
机器学习(ML):研究如何从已有的数据样本得到数据模型,并利用数据模型对未知数据进行预测。
智能包含的能力:
1.感知与认识客观事物、客观世界与自我的能力;
2.通过学习获得经验、积累知识;
3.运用知识和经验分析问题并解决问题;
4.推理、推断、决策能力;
5.行为能力。
人工智能是使用人工的方法对人的自然智能的模拟、延伸,实现某些所谓的”机器思维”。
人工智能的研究内容:机器学习,机器行为,机器思维,机器感知。
人工智能根据是否能够真正实现推理、思考等能力划分为:强人工智能和弱人工智能。
人工智能的主要学派:
1.符号主义:计算机可以处理各种符号,将知识用符号进行表示,从而进行学习,推理、决策等。
2.连接主义:从神经元模型开始研究,进而研究了神经网络模型和脑模型。
3.行为主义:智能取决于感知和行为,智能行为只能体现在现实世界中,人工智能可以像人类智能一样进化。
4.统计主义:利用统计学总结出的规律来分析客观对象,从而利用规律对未来数据进行较为准确的预测。
5.仿真主义:构造仿脑装置。
人工智能以知识为基础,研究知识表示的方法。知识表示是指使机器人懂得人类的知识,并对其进行处理,然后以一种人类能理解的方式告知人类。
机器学习专门研究计算机怎样模拟人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构,使之不断改善自身的性能。
机器学习的方法(根据数据有无标签分类):有监督学习(通过已经具有关系的输入数据和输出数据来生成函数,在将输入映射到合适的输出,如分类),半监督学习(利用有类标的数据和没有类标的数据生成合适的分类函数),无监督学习(直接对输入数据进行建模,如聚类)。
机器学习系统:
环境——>学习单元——>知识库——>执行单元——>学习单元(同前面的学习单元)
典型的机器学习方法:回归分析(和工程优化是互通的,为了求得极值,使用了多种工优的知识),分类,聚类,数据降维(这里的维度是指数据特征量的大小,即将具有几千个特征的数据压缩到若干个特征),特征抽取。
二.机器学习环境
对于初学者,安装使用Anaconda Python,熟练使用Python的直接使用Python即可。
下载安装Anaconda(官网即可)
机器学习简单实例:身高数据中,个高的标签为0,个低的标签为1,训练后,判断160和179属于哪一类。
数据准备,需要导入的模块:
import numpy as np
from sklearn import tree
from sklearn.neural_network import MLPClassifier
from sklearn import svm
X_train=[175,178,180,181,190,153,155,162,163,158] #身高作为特征集
X_train=np.reshape(X_train,(-1,1)) #将特征集改为一列
y_train=[0,0,0,0,0,1,1,1,1,1] #标签集
训练决策树:
clf_tree=tree.DecisionTreeClassifier()
clf_tree.fit(X_train,y_train)
print("160:",clf_tree.predict(np.reshape(160,(-1,1))))
print("179:",clf_tree.predict(np.reshape(179,(-1,1))))
训练神经网络:
clf_nn=MLPClassifier(solver='lbfgs',hidden_layer_sizes=(3,3))
clf_nn.fit(X_train,y_train)
print("160:",clf_nn.predict(np.reshape(160,(-1,1))))
print("179:",clf_nn.predict(np.reshape(179,(-1,1))))
训练向量机分类器:
clf_svm=svm.SVC(kernel='linear',gamma=2)
clf_svm.fit(X_train,y_train)
print("160:",clf_svm.predict(np.reshape(160,(-1,1))))
print("179:",clf_svm.predict(np.reshape(179,(-1,1))))
三.机器学习基础
NumPy:是一个开源的科学计算库,包括一个N维数组对象ndarray,函数库,线性代数,傅里叶变换和随机数生成函数。
在ndarray对象中,使用轴(即维度,一个轴就是一个维度)表示元素位置,轴使用从0开始的整数编号。可以将ndarray看做是与list,dict等一样的数据类型。ndarray中的元素类型必须一致。
NumPy的对数组的操作:创建数组,创建等差数列的数组,创建等比数列的数组,创建特殊数值的数组,随机数创建数组,索引数组,改变数组