2021-4月 Python机器学习——名词概念学习,概念解释

简介: 2021-4月 Python机器学习——名词概念学习,概念解释

1、机器学习的定义

机器学习领域的创始人Arthur Samuel(亚瑟·塞缪尔)早在1959年就给机器学习(Machine Learning,ML)下了定义:机器学习是这样的一个研究领域,它能让计算机不依赖确定的编码指令来自主的学习工作。

到了1998年,Tom Mitchell对机器学习的定义做了更好的定义。引入了三个概念:经验Experience(E)、任务Task(T)、任务完成效果的衡量指标Performance measure(P)。有了这三个概念,机器学习的定义可以更加严谨:就是在有了经验E的帮助后,机器完成任务T的衡量指标P会变得更好。

2、机器学习的发展历程

3、监督学习,半监督学习和无监督学习的特点

监督学习:训练集的每一个数据已经有特征和标签,即有输入数据和输出数据,通过学习训练集中输入数据和输出数据的关系,生成合适的函数将输入映射到输出。比如分类、回归。

无监督学习:训练集的每一个数据都只有特征,即只有输入数据,算法需要学习训练集中的特征关系,进行建模,试图使类内差距最小、类间差距最大。比如聚类。

半监督学习:训练集中一部分数据有特征和标签,另一部分只有特征,综合两类数据来生成合适的函数。

区别:

(1)监督学习需要有训练集和测试集,在训练集中寻找规律,在测试集中检验;而无监督学习只有一堆数据,需要从中寻找某种规律,没有训练集没有检验的过程。

(2)监督学习就是识别事物,按照标记好的特征和标签学习。无监督学习没有标签,如果经过学习发现数据集呈现某种聚集性,则可按照数据集现实的聚集性分类,但并不以某些样本最终和预先标记的标签相符合作为检验,没有检验的过程。

(3)无监督学习是在寻找数据的规律性,这种规律性最终不一定表现为分类数据集,也就是说不一定要“分类”。

4、机器学习的步骤,每个步骤的主要内容

一、

机器学习的基本步骤

1. 提出问题:

明确是分类问题还是回归问题

2. 理解数据:

2.1 采集数据

sklearn.datasets中有练习数据(数据要有代表性,数据量要合适)

2.2 导入数据

pd.csv...

2.3 查看数据集信息

data.shape查看数据形状;.shape[0]查看行数;.shape[1]查看列数df.head()查看前几行;df.describe()查看数值数据的描述统计信息;http://df.info()根据行数查看数据是否有缺失值,数据类型是否合适了解各个字段的含义,目标和特征分别是哪个字段;也可通过可视化了解数据的分布

3. 数据清洗:

3.1 数据预处理:缺失值处理、重复值处理、数据类型的转换、字符串数据的规整

缺失值处理(标签数据无需填充缺失):
    数值类型,用平均值取代:data[A].fillna(data[A].mean())分类数据,用最常见的类别取代:data[A].value_counts();data[A].fillna("前面得到的最常见的类别");data[A].fillna("U")缺失比较多时,填充代表未知的字符串使用模型预测缺失值,例如:K-NN数据归一化/标准化:
    模型具有伸缩可变性,如SVM,最好进行标准化,避免模型参数受极值影响;伸缩不变模型,如逻辑回归,最好也进行标准化,可以加快训练速度归一化/标准化常见两种方法:min-max,化为[0,1]:(x-min(x))/(max(x)-min(x))/preprocessing.MinMaxScaler;适合分别在有限范围内的数据,数值较集中,但min/max不稳定会影响结果Z-core,化为均值为0,方差为1:(x-mean(x))/std(x)/sklearn.preprocessing.scale(),适合最大/最小值未知,或者有超出取值范围的离散值

3.2 特征提取(特征工程.1)

数值型数据处理:一般可直接使用,或通过运算转化为新的特征
    家庭人数可统计分类:df.家庭人数=df.A+df.B+1(自己);df.小家庭=df.家庭人数.map(lambda匿名函数-lambda s : 1 if 2 <= s <= 4 else 0)分类型数据处理:
    两个类别:性别数据分别填充为1、0:df.A=df.A.map({"male":1;"female":0})超两个类别:one-hot编码,data'=pd.get_dummies(df.A , prefix='前缀' );pd.concat([data,data'],axis=1)字符串型-姓名:每一个姓名中都包含了称谓,利用split函数将称谓提取出来;.strip用于移除空格;将称谓进行归类,定义对应字典,利用map函数替换;进行one_hot编码字符串型-客舱号:a[n]可以取到字符串数据 第“n”个字符;提取之后进行one_hot编码时间序列数据,一段时间定期收集的数据-可转成年月日

3.3 特征选择(特征工程.2)

计算各个特征和标签的相关性:df '=pd.corr()查看标签对应的相关系数:df '.标签.sort_values(ascending =False)根据相关系数的大小选择特征列做为模型输入

4. 构建模型:

4.1 建立训练数据集和测试数据集

选取训练数据和测试数据的特征和标签:.loc选取特征列和标签列;train_test_spilt 划分,通常80%为训练数据集.shape查看划分结果

4.2. 选择机器学习算法:

导入算法
    逻辑回归(logisic regression)随机森林(Random Forests Model)支持向量机(Support Vector Machines)Gradient Boosting ClassifierK-nearest neighborsGaussian Naive Bayes数据降维:PCA,Isomap数据分类:SVC,K-Means线性回归:LinearRegression创建模型
    model=LinearRegression()训练模型
    model.fit(train_X , train_y )

5. 评估模型

model.score(test_X , test_y ),不同的模型指标不一样,分类模型评估准确率metrics.confusion_matrix:混淆矩阵homogeneity_score:同质性,每个群集只包含单个类的成员;[0,1],1表示完全同质。completeness_score:完整性,给定类的所有成员都分配给同一个群集。[0,1],1表示完全完整。v_measure_score:同质性和完整性的调和平均值adjusted_mutual_info_score:兰德系数ARI,取值范围[-1,1],值越大,表示与聚类结果与真实越吻合,体现的是两个数据分布的吻合程度adjusted_mutual_info_score:互信息AMI,取值[-1,1],值越大,与真实情况越吻合。fowlkes_mallows_score:精确率和召回率的几何平均值,[0,1],越大,越相似。silhouette_score:轮廓系数,[-1,1]同类别越近,不同类别越远,系数越大。calinski_harabaz_score:类内部协方差越小,类之间协方差越大,改数值越大,聚类效果越好。

6. 方案实施

model.predict(pred_X),得到预测结果

7.报告撰写

二、

1.获取数据
2.数据基本处理
3.特征工程
4.机器学习(模型训练)
5.模型评估

结果达到要求,上线服务
没有达到要求,重新上面步骤

5、数据清洗的内容和意义

数据清洗:是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。

数据清洗的意义:简单来说,通常认为数据清理是无用途的部分(不完整,不影响结果的数据)。但这是一个有价值的过程,可以帮助企业节省时间并提高效率。

百度百科

https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%B8%85%E6%B4%97/4402497?fr=aladdin

6、什么是数据采样

数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛应用在各个领域。比如摄像头,麦克风,都是数据采集工具。

7、什么是特征抽取,特征如何选择,如何编码

两者的区别

1.特征抽取 V.S 特征选择

特征抽取和特征选择是DimensionalityReduction(降维)的两种方法,针对于the curse of dimensionality(维灾难),都可以达到降维的目的。但是这两个有所不同。
  特征抽取(Feature Extraction):Creatting a subset of new features by combinations of the exsiting features.也就是说,特征抽取后的新特征是原来特征的一个映射。
  特征选择(Feature Selection):choosing a subset of all the features(the ones more informative)。也就是说,特征选择后的特征是原来特征的一个子集。

特征抽取:一般指特征提取,对某一模式的组测量值进行变换,以突出该模式具有代表性特征的一种方法。通过影像分析和变换,以提取所需特征的方法。

特征提取是指使用计算机提取图像中属于特征性的信息的方法及过程。

根据特征选择的形式又可以将特征选择方法分为3种

Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值或者待选择阈值的个数,选择特征。
Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征,或者排除若干特征。
Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权值系数,根据系数从大到小选择特征。类似于Filter方法,但是是通过训练来确定特征的优劣。

附特征选择详细讲解链接https://blog.csdn.net/u010670689/article/details/73196546

特征编码

如何进行数字编码。 对于次序型特征,手工编码转换表,然后使用Pandas的map函数。对于名义型特征,可以使用sklean提供的LabelEncoder类。

buying_dict = {"low":0,"med":1,"high":2,"vhigh":3}
car_num_encoded["buying"] = car_num_encoded["buying"].map(buying_dict)
car_num_encoded["buying"].head(5)
from sklearn.preprocessing import LabelEncoder
buying_encoder = LabelEncoder()
encoded_buying = buying_encoder.fit_transform(car["buying"])
buying_encoder.inverse_transform([0,1,2,3])
如何进行One-Hot编码。 有两个工具可以帮助我们方便地完成:pandas自带的get_dummies函数和sklearn实现的OneHotEncoder类。
car_onehot_encoded = pd.DataFrame()
for col in ["buying","maint","doors","persons","lug_boot","safety"]:
    col_encoded = pd.get_dummies(car[col],prefix = col+"_")
    car_onehot_encoded = pd.concat([car_onehot_encoded, col_encoded],axis=1)
car_onehot_encoded.head(5)
如何将数据集划分成训练集和测试集。 使用sklearn实现的train_test_split函数。如果要保持训练集和测试集样本类别的均衡,记得设置stratify参数。
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4,

8、分类算法有哪些?

Bayes

贝叶斯分类法是基于贝叶斯定定理的统计学分类方法。它通过预测一个给定的元组属于一个特定类的概率,来进行分类。朴素贝叶斯分类法假定一个属性值在给定类的影响独立于其他属性的 —— 类条件独立性。

Decision Tree

决策树是一种简单但广泛使用的分类器,它通过训练数据构建决策树,对未知的数据进行分类。决策树的每个内部节点表示在一个属性上的测试,每个分枝代表该测试的一个输出,而每个树叶结点存放着一个类标号。

在决策树算法中,ID3基于信息增益作为属性选择的度量,C4.5基于信息增益比作为属性选择的度量,CART基于基尼指数作为属性选择的度量。

SVM

支持向量机把分类问题转化为寻找分类平面的问题,并通过最大化分类边界点距离分类平面的距离来实现分类。

KNN

神经网络

Ensemble learning

集成学习的思路是在对新的实例进行分类的时候,把多个单分类器的结果进行某种组合,来对最终的结果进行分类。

GBDT

回归树类似决策树,使用叶子节点的平均值作为判定的结果。如果不是叶子节点,那么就继续向下寻找。GBDT几乎可用于所有的回归问题,亦可以适用于二分类问题。

GBDT使用新生成的树来拟合之前的树拟合的残差。

Adaboost

Adaboost目的就是从训练数据中学习一系列的弱分类器或基本分类器,然后将这些弱分类器组合成一个强分类器。

Random Forest

随机森林指通过多颗决策树联合组成的预测模型,可以对样本或者特征取bagging。

附详细讲解链接:https://blog.csdn.net/china1000/article/details/48597469

9、决策树算法

决策树是一种一种类似于流程图的树结构,其中每个内部结点表示在一个属性上的测试对未知数据进行分类,每个分支代表一个属性输出,每个树叶结点代表类或类分布。

决策树包括:根结点、若干个内部结点、若干个叶节点(即目标分类节点)。

附讲解比较全面的文章:https://blog.csdn.net/qq_20412595/article/details/82048795

10、贝叶斯分类算法

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。

朴素贝叶斯详细讲解链接:https://blog.csdn.net/qq_16050561/article/details/81314101

高斯、多项式、伯努利贝叶斯详细讲解链接:https://blog.csdn.net/qq_27009517/article/details/80044431?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.control&dist_request_id=1332030.8848.16190536909444235&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7Edefault-7.control

11、SVM

SVM(Support Vector Machine)中文名为支持向量机,是常见的一种判别方法。

SVM详细讲解链接:https://blog.csdn.net/lisi1129/article/details/70209945

12、线性回顾,梯度下降

梯度下降法详细讲解:

https://baijiahao.baidu.com/s?id=1613121229156499765&wfr=spider&for=pc

13、K-means算法

K-means算法详细讲解:https://blog.csdn.net/sinat_30353259/article/details/80887779

14、性能指标:准确率,精准率,召回率,F1,PR曲线,宏平均,微平均

性能指标详解链接:https://blog.csdn.net/weixin_42137700/article/details/103194090

15、什么是人工神经网络,及其基本概念,神经元与权值连接

ANN是指由大量的处理单元(神经元) 互相连接而形成的复杂网络结构,是对人脑组织结构和运行机制的某种抽象、简化和模拟。 [1] 人工神经网络(Artificial Neural Network,简称ANN ),以数学模型模拟神经元活动,是基于模仿大脑神经网络结构和功能而建立的一种信息处理系统。

16、激活函数有哪些?

17、输入层,隐藏层,输出层,损失函数,反向调参策略,什么是全连接网络,什么是偏置向量

18、BP神经网络

19、卷积神经网络,局部连接,权值共享,卷积层,池化层

20、LSTM

21、训练集,验证集和测试集

22、超参有哪些

23、过拟合和欠拟合

24、常见算法:波士顿房价预测,鸢尾花分类,cnn文本分类,猫狗分类,手写数字识别


目录
相关文章
|
23天前
|
机器学习/深度学习 Python
堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能
本文深入探讨了堆叠集成策略的原理、实现方法及Python应用。堆叠通过多层模型组合,先用不同基础模型生成预测,再用元学习器整合这些预测,提升模型性能。文章详细介绍了堆叠的实现步骤,包括数据准备、基础模型训练、新训练集构建及元学习器训练,并讨论了其优缺点。
41 3
|
28天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
33 4
|
3天前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
5天前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
9天前
|
存储 程序员 Python
Python学习的自我理解和想法(2)
今日学习Python第二天,重点掌握字符串操作。内容涵盖字符串介绍、切片、长度统计、子串计数、大小写转换及查找位置等。通过B站黑马程序员课程跟随老师实践,非原创代码,旨在巩固基础知识与技能。
|
8天前
|
程序员 Python
Python学习的自我理解和想法(3)
这是学习Python第三天的内容总结,主要围绕字符串操作展开,包括字符串的提取、分割、合并、替换、判断、编码及格式化输出等,通过B站黑马程序员课程跟随老师实践,非原创代码。
|
5天前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。
|
4天前
|
存储 安全 索引
Python学习的自我理解和想法(8)
这是我在B站千锋教育学习Python的第8天,主要内容是元组。元组是一种不可变的序列数据类型,用于存储一组有序的元素。本文介绍了元组的基本操作,包括创建、访问、合并、切片、遍历等,并总结了元组的主要特点,如不可变性、有序性和可作为字典的键。由于开学时间紧张,内容较为简略,望见谅。
|
5天前
|
存储 索引 Python
Python学习的自我理解和想法(4)
今天是学习Python的第四天,主要学习了列表。列表是一种可变序列类型,可以存储任意类型的元素,支持索引和切片操作,并且有丰富的内置方法。主要内容包括列表的入门、关键要点、遍历、合并、判断元素是否存在、切片、添加和删除元素等。通过这些知识点,可以更好地理解和应用列表这一强大的数据结构。
|
5天前
|
索引 Python
Python学习的自我理解和想法(5)
这是我在B站千锋教育学习Python的第五天笔记,主要内容包括列表的操作,如排序(`sort()`、``sorted()``)、翻转(`reverse()`)、获取长度(`len()`)、最大最小值(`max()`、``min()``)、索引(`index()`)、嵌套列表和列表生成(`range`、列表生成式)。通过这些操作,可以更高效地处理数据。希望对大家有所帮助!