如何用Python处理分类和回归问题.docx
- 文档编号:2133199
- 上传时间:2022-10-27
- 格式:DOCX
- 页数:10
- 大小:51.43KB
如何用Python处理分类和回归问题.docx
《如何用Python处理分类和回归问题.docx》由会员分享,可在线阅读,更多相关《如何用Python处理分类和回归问题.docx(10页珍藏版)》请在冰豆网上搜索。
如何用Python处理分类和回归问题
【导读】对于人工智能和机器学习来说,目前有很多种可以实施的技术和工具用来解决实时问题,其中,监督学习(SupervisedLearning)是最常用的方法之一。
什
么是监督学习?
监督学习如何实现呢?
营长为大家找到了使用Python进行监督学习的方法。
什么是监督学习?
在监督学习中,首先导入包含训练属性和目标属性的数据集。
然后,监督学习算法学习训练样本和与之相关的目标变量之间的关系,并利用所学习到的关系对全新的输
入(没有目标)进行分类。
为了说明监督学习是如何工作的,我们来举一个例子:
根据一个学生的学习小时数来预测他的考试分数。
在数学表达式上可表示为:
Y=f(X)+C,其中:
f表示考试分数和学生为考试所准备的小时数之间的关系;
X表示输入(准备的小时数);
Y表示输出(学生的考试分数);
C表示随机误差。
监督学习算法的最终目标是给定一个新的输入X,最大精度的预测Y。
实现监督学习最常用的方法
根据给定的数据集,机器学习问题可分为两类:
分类和回归。
如果给定的数据同时具有输入(训练)值和输出(目标)值,则是一个分类问题;如果给定数据集的属性是连续的值且没有任何目标标签,则是一个回归问题。
分类:
有输出标签,这是猫还是狗?
回归:
房子卖多少钱?
▌分类
举个例子:
一位医学研究人员想要分析乳腺癌数据,来预测患者应该接受三种治疗方案中的哪一种。
这个数据分析任务被称为分类,它构建一个模型或分类器来预测从
属的类别标签,比如:
“治疗方案A”,“治疗方案B”或“治疗方案C”。
分类是预测分类(离散、无序的)的类标号,分为两个过程:
学习和分类。
分类的方法
一些常用的分类算法如下:
K-近邻算法(KNN)
决策树算法
贝叶斯分类算法
支持向量机(SVM)
在学习过程中,分类模型通过分析训练集来构建分类器;在分类过程中,预测给定数据的分类标签。
将待分析的数据集元组和与之相关联的类标签分成一个训练集和一
个测试集。
从待分析的数据集中随机抽样组成训练集的各个元组,剩下的元组形成测试集,并独立于训练集的元组,这就意味着测试集不会被用来构建分类器。
测试集用于评估分类器的预测正确率。
分类器的正确率是分类器正确分类的测试元组所占得百分比。
为了达到更高的正确率,最好的办法就是测试不同的算法,并在每
个算法中尝试不同的参数。
其中,最好的一个方法是交叉验证。
为了选择一个较好的算法来解决这个问题,对于不同的算法,必须考虑其正确率,训练时间,线性度,参数个数以及其他特殊情况。
在IRIS数据集上,我们用Scikit-Learn库实现K-近邻法算法,根据给定的输入对花的类型进行分类。
为了应用机器学习算法,我们首先需要了解给定的数据集。
在这个例子中,我们用的是从Scikit-Learn包中导入的IRIS数据集。
现在,我们用代码来探索IRIS数据集的属
性。
确保你的电脑上已经安装了Python。
另外,使用PIP安装如下几个包:
pip安装pandas
pip安装matplotlib
pip安装scikit-learn
在这段代码中,我们使用pandas包的几个方法了解IRIS数据集的属性。
输出:
dict_keys([‘data’,‘target’,‘target_names’,‘DESCR’,‘feature_names’])]
(150,4)
[‘setosa’‘versicolor’‘virginica’]
sepallength(cm)sepalwidth(cm)petallength(cm)petalwidth
(cm)
0
1
2
3
4
5.1
4.9
4.7
4.6
5.0
3.5
3.0
3.2
3.1
3.6
1.4
0.2
1.40.2
1.30.2
1.5
0.2
1.40.2
Scikit-Learn学习之K-近邻法
如果一个算法在只是简单的存储训练集元组,并一直等待,直到给定一个测试元组时才进行泛化,根据其存储的训练元组的相似性进行分类,则称之为惰性学习。
K-近
邻分类器就是一种惰性学习。
K-近邻法基于类比进行学习,也就是说,将给定的测试元组和与之相似的训练元组相比较。
将训练元组表示为n维空间中的一个点,这样,所有的训练元组将被存储在
一个n维模式空间。
当给定一个未知元组,K-近邻分类器搜索模式空间中最接进未知元组的K个训练元组,这K个训练元组即是这个未知元组的个K个“近邻”。
“贴近度”用来定义一个距离度量(如欧几里得距离)。
一个合适的K值则需要根据实际情况而定。
在这段代码中,我们从sklearn中导入K-近邻分类器,并将其用于我
们输入的数据中,之后再对花进行分类。
输出:
[11]
这里,0对应于Versicolor;1对应Virginic;2对应Setosa。
根据给定的输入,机器预测两朵花都是Versicolor。
使用K-近邻法对IRIS数据集分类
▌回归
回归用来描述两个或更多变量之间的关系。
例如:
根据给定输入X,预测一个人的收入。
这里,目标变量指的是我们所关心的待预测的未知变量,连续是指Y的值之间不存在距离(不连续性)。
预测收入是一个典型的回归问题。
输入数据应该包含可以预测收入的信息(称为特征),比如:
工作时间,教育经历,职位,住所。
回归模型
常用的回归模型有:
线性回归
Logistic回归
多项式回归
线性回归使用最佳拟合直线(也称回归线)建立因变量(Y)和一个或多个自变量(X)之间的关系。
用数学表达式表示:
h(xi)=βo+β1*xi+e
其中,βo是截距,β1是线的斜率,e是误差项。
图表显示为:
Logistic回归是一种用于响应变量是分类的算法,其思想是找出特征与特定结果概率之间的关系。
用数学表达式表示:
p(X)=βo+β1*X
其中,p(x)=p(y=1|x)
图表显示为:
多项式回归是一种回归分析方法,其中自变量x和因变量y之间的关系被建模为x的一个n次多项式。
解决线性回归问题
我们有数据集X和相应的目标值Y,使用普通的最小二乘法学习一个线性模型,给定一个新的x,我们可以使用这个模型以尽可能小的误差来预测一个新的y。
将给定的数据集分成一个训练数据集和一个测试数据集。
训练集具有标签(特征),因此算法可以从这些带有标注的例子从学习。
测试不带有任何标签,也就是说,你
还不知道预测值。
我们使用一个特征进行训练,并用线性回归方法来拟合训练数据,然后用测试数据集预测输出结果。
线性回归在Scikit-Learn中的实现
输出:
[
[0.07786339]
[-0.03422907]
[-0.05686312]
[0.00133873]
[-0.01590626]
]
[-0.03961813]
[0.00564998]
[-0.03099563]
[-0.02345095]
[-0.01590626]
[0.01103904]
[0.08864151]
[0.05522933]
[-0.07410811]
[0.03906215]
[-0.04069594]
[-0.03315126]
[-0.06009656]
[0.01966154]
[-0.0730303]
预测的输出值:
[
225.9732401
158.21988574
99.56772822
154.17490936
137.99500384
]
115.74763374
236.08568105
123.83758651
130.91629517
137.99500384
163.27610621
121.81509832
204.73711411
83.3878227
114.73638965
120.80385422
96.53399594
171.36605897
84.3990668
189.56845268
表中(diabetes_X_test,diabetes_y_pred)的预测在线性方程上是连续的。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 何用 Python 处理 分类 回归 问题