基于 的 (-Learn)库的机器学习编程练习项目
-Learn这个简称指的是中那个强大而且在很大程度上被使用的机器学习库, 它提供了丰富的算法和工具, 适用于各种各样的机器学习任务。以下是一些基于该库的机器学习编程练习项目。这些项目按照从基础到进阶的顺序排列。这样的安排旨在帮助不同阶段的学习者逐步掌握机器学习的核心概念和应用。
基础练习
1. 把鸢尾花这个种类分个类, 具体的名称叫做Iris。
任务是使用经典的鸢尾花数据集( Iris), 训练一个分类器, 用来把鸢尾花的种类给预测准。
鸢尾花数据集这个数据里面, 包含了不同种类的鸢尾花的相关的特征信息, 这些信息包括了花萼的长度、花萼的宽度、花瓣的长度、以及花瓣的宽度等等, 另外还包含了相对应的鸢尾花具体的种类标签, 这些标签分别对应了山鸢尾 、杂色鸢维和维吉尼亚鸢尾。
• 步骤:
1. 现在就把这个鸢尾花数据集给它加载好。
2. 我们要把数据集给分成两部分, 一个是训练集, 还有一个是测试集, 这么干的目的就是为了让它们分别去发挥作用, 一边用来训练那个模型, 另外一边用来评估这个模型到底表现得怎么样。
3. 在开始模型训练之前, 需要进行选择工作, 也就是要从诸如逻辑回归、以及K近邻或者说是KNN, 再到决策树这一类通常被视作常见的分类算法里面做出决定的。
4. 我们可以使用准确率、召回率这一系列相关的评价指标, 来对训练好的模型在测试集上所产生的性能表现进行全面的评估操作。
关于代码部分的示例, 现在呈现出来如下。
from .
from .
from .
from .
# 加载数据集
iris = ()
把相关的特征数据放置到名为X的存储位置里面去, 并且把那些相对应的标签也分别放好,让它们都存在于y这个存储空间中。
这里的X等于鸢尾花数据, 这里的y等于鸢尾花。
将数据集划分为训练样本集合与测试样本集合的份额比例, 设定为数值0.2, 这表示用于测试的样本占总数据量的百分之二十, 同时把随机状态参数设置为数值42, 从而保证每次执行划分动作时所得到的结果保持完全一致的状态。
我们这里把X,y,0.2,42这些内容, 放到对应的括号里面去, 就这样操作一下。
我们进行逻辑回归模型的初始化操作, 把最大迭代次数这一参数设置为两百, 目的是防止模型出现无法收敛的情况。
model = (=200)
咱们得拿那个用来训练的数据集, 去做那个模型的训练工作。
model.fit(, )
我们需要使用已经训练好的模型, 对测试集数据进行预测操作。
= model.()
我们要去计算一下, 在测试集上面得到的那个准确率是多少, 然后把计算出来的这个准确率的值给它打印出来。
print(":", (, ))
2. 在波士顿的房价这个方面, 它的主要任务是要进行预测()
用波士顿房价这个数据集()来搞一个回归模型, 目的是预测房子的价格, 在这个数据里头, 你能够看到像犯罪率、每个住宅平均的房间数量、还有一氧化氮浓度之类的多种特征, 这些特征都和房屋的价格有关系。
• 步骤:
1. 把波士顿房价那一个数据集给加载起来。
2. 把咱们手头上有的数据拿给分成两块。其中一块专门用来训练模型。还有一块专门用来测试效果。
3. 选择线性回归或者是决策树回归这类使用Tree作为标识的算法, 通过这种方式来进行模型的训练工作。
4. 咱们用那种叫均方误差的东西, 还有那个标着R²分数的指标, 去好好看看模型在那些专门用来测试的数据里面表现到底怎么样好不好。
关于代码部分的示例, 现在呈现出来如下。
from .
from .
from .
from . ,
# 加载数据集
= ()
将用于表示特征的具体数据存储在变量X里面, 把相对应的房屋价格标签数据存储在变量y里面。
X, y = .data, .
将数据集划分为训练样本集合与测试样本集合的份额比例, 设定为数值0.2, 这表示用于测试的样本占总数据量的百分之二十, 同时把随机状态参数设置为数值42, 从而保证每次执行划分动作时所得到的结果保持完全一致的状态。
我们这里把X,y,0.2,42这些内容, 放到对应的括号里面去, 就这样操作一下。
先进行初始化, 就是把线性回归模型给建立起来。
model = ()
咱们得拿那个用来训练的数据集, 去做那个模型的训练工作。
model.fit(, )
我们需要使用已经训练好的模型, 对测试集数据进行预测操作。
= model.()
# 计算并打印模型在测试集上的均方误差
“打印出”:“均方误差, ”: ()
我们来对模型在测试集上进行计算, 然后把 R²分数打印出来。
这里有一个错误, 需要修正一下。
这是中级练习。
3. 手写的那个数字, 它是用来做那个识别用的, 就是MNIST Digit这个玩意儿。
这次的任务是利用那个手写数字数据集, 也就是MNIST这一类东西, 去训练一个分类器, 目的就是为了能够准确地把那些从0到9的手写数字给识别出来。
要知道呢, 这个MNIST数据集它本身就是属于那种非常经典的图像处理数据集合, 里头面包含了特别多大量关于手写数字所呈现出来的那种灰度形式的图像样本内容信息供人们使用分析参考处理。
• 步骤:
1. 开始加载那个专门用来做手写数字识别的数据集。
2. 把咱们手头上有的数据拿给分成两块。其中一块专门用来训练模型。还有一块专门用来测试效果。
3. 选择支持向量机, 或者随机森林, 又或者神经网络这类算法来开展模型的训练工作。
4. 使用准确率以及混淆矩阵, 还有其他的各种指标, 对模型在测试集上面的分类性能进行评估。
关于代码部分的示例, 现在呈现出来如下。
from .
from .
从那地方而来的。
from . ,
. as plt
先把数据集加载出来, 这里的名字就是指代那个数据集的名称的意思, 后面那个等于1呢是用来表示具体的版本号码的。
mnist被赋值为空字符串, 并且同时设置了等于1。
X这个存储设备负责保存图像数据, 具体来说, 每一个单独的图像都被变成了一个含有784个数据的向量, 这正好对应着一个宽28长28的灰度图像样式, 至于y这个存储设备, 它保存的就是这些数字对应的标签编号。
X, y = mnist.data, mnist.
对图像数据进行归一化处理, 具体来说是把像素值从0到255的范围映射到0到1之间。
X = X / 255.0
将数据集划分为训练样本集合与测试样本集合的份额比例, 设定为数值0.2, 这表示用于测试的样本占总数据量的百分之二十, 同时把随机状态参数设置为数值42, 从而保证每次执行划分动作时所得到的结果保持完全一致的状态。
我们这里把X,y,0.2,42这些内容, 放到对应的括号里面去, 就这样操作一下。
我们执行初始化操作, 目的是建立一个随机森林分类器, 在这个设置里面等于一百被用来代表在森林里树的总数量, 并且等于四十二这个数值是为了让机器在处理数据的时候每一次运行的时候得到的结果都保持完全相同的状态。
把模型设置成这样, 让那个叫做一百的东西等于四十二。
咱们得拿那个用来训练的数据集, 去做那个模型的训练工作。
model.fit(, )
我们需要使用已经训练好的模型, 对测试集数据进行预测操作。
= model.()
我们要去计算一下, 在测试集上面得到的那个准确率是多少, 然后把计算出来的这个准确率的值给它打印出来。
print(":", (, ))
我们要执行计算并打印操作, 这个计算和打印是针对模型在测试集上面所产生的混淆矩阵进行的。
print(" :\n", (, ))
4. 泰坦尼克号生存预测( )
任务是使用泰坦尼克号数据集(), 通过对乘客的各种信息(如年龄、性别、船舱等级等)进行分析, 去预测乘客的生存情况(生存或死亡)。
• 步骤:
1. 你需要加载数据集, 然后对数据进行预处理, 这里面包括了处理缺失值这一操作, 例如填充那些缺失的年龄值, 还包括了编码分类变量这一操作, 例如将性别、登船港口这样的分类变量转换成数值形式, 这些都是在处理过程中要做的事情。
2. 将那些已经处理过了的数据, 分成两部分。其中一部分用来做训练, 另一部分用来做测试。
3. 选择逻辑回归、随机森林或者梯度提升这种算法来对模型进行训练。
4. 通过使用准确率这种指标, 还有通过ROC-AUC这种指标来对我们的模型在测试集上面做的预测的表现情况进行评估。
关于代码部分的示例, 现在呈现出来如下。
as pd
from .
从那地方而来的。
from . ,
from .
把训练数据集给加载出来, 然后再把测试数据集也给加载出来。
train = pd.('train.csv')
test = pd.('test.csv')
进行数据预处理工作, 然后删除姓名以及船舱编号这些与生存预测可能影响较小, 并且对模型帮助不大的一些数据列。
将训练数据里面的那些列给去掉的操作, 现在就是正在被执行的状态。
'Name', '', 'Cabin'
, axis=1)
用计算好的那个年龄数的中位数, 去填补那些空缺了的年龄数据, 把这个步骤给完成掉。
这是一个英文单词。
'Age'
这个与火车相关的概念。
'Age'
() 里面的参数设置成了 True。
为了对被缺失的登船港口数值进行填充操作, 应当选取在所有数据中出现频率最高的那个登船港口作为标准来实施替换。
这是一个英文单词。
''
这个与火车相关的概念。
''
调用那个模式设定的方法, 把等于这个标志调成真的。
把 Sex 还有那两个分类变量拿出来, 用独热编码的方法, 去把它们转换成数值方面的东西。
train = pd.(train, =
'Sex', ''
X 这个部分是用来存储那个特征数据的, 而 y 这部分呢, 则是用来存储对应的那些生存标签。
X = train.drop(
''
, axis=1)
y = train
''
将数据集划分为训练样本集合与测试样本集合的份额比例, 设定为数值0.2, 这表示用于测试的样本占总数据量的百分之二十, 同时把随机状态参数设置为数值42, 从而保证每次执行划分动作时所得到的结果保持完全一致的状态。
我们这里把X,y,0.2,42这些内容, 放到对应的括号里面去, 就这样操作一下。
我们执行初始化操作, 目的是建立一个随机森林分类器, 在这个设置里面等于一百被用来代表在森林里树的总数量, 并且等于四十二这个数值是为了让机器在处理数据的时候每一次运行的时候得到的结果都保持完全相同的状态。
把模型设置成这样, 让那个叫做一百的东西等于四十二。
咱们得拿那个用来训练的数据集, 去做那个模型的训练工作。
model.fit(, )
我们需要使用已经训练好的模型, 对测试集数据进行预测操作。
= model.()
我们要去计算一下, 在测试集上面得到的那个准确率是多少, 然后把计算出来的这个准确率的值给它打印出来。
print(":", (, ))
对模型进行计算, 从而得出它所预测到的生存概率这个结果。
= model.()
我们要执行计算操作, 来把那个模型在测试数据集上面的 ROC-AUC 的这个数值给算出来, 然后进行打印呈现。
输出“ROC-AUC:(空白, 空白)”。
高级练习
5. 文本分类(Text )
任务是, 使用新闻数据集(比如说是20), 通过使用训练一个文本分类器的这个办法, 来准确地识别出新闻报道所属的具体类别, 这些类别包括的政治领域, 还有体育领域, 以及科技领域等等。
• 步骤:
1. 我们要加载新闻数据集, 然后对文本数据进行预处理操作, 这个处理过程包括分词, 意思就是把文本拆分成单词或者短语, 还要去除停用词, 像“的”、“是”、“在”这一些常见但是对分类意义不大的词语就要去掉。
2. 使用那种被称为TF-IDF的向量化技术, TF - IDF, 把文本数据变成数值形式, 好让机器学习模型可以进行处理。
3. 把已经做好了向量化处理的数据显示出来, 然后把这些数据分成两部分, 其中一部分用来做训练集, 另一部分则作为测试集使用。
4. 我们接下来要做的事情是选择算法, 具体就是在那些用于模型训练、可以选用的算法里面挑选一个, 这些可用的算法包括但不限于朴素贝叶斯以及支持向量机还有像bert这样的一类深度学习模型。
5. 为了把模型在那些用来测试的数据上的分好坏能力看清楚, 大家会去拿准确率还有f1分数这些指标来专门算一算看。
关于代码部分的示例, 现在呈现出来如下。
from .
from ..text
from .
from .
从这一点出发, 结合当前的时间节点。
# 加载数据集,='all' 表示加载所有数据
等于这个值, 它的状态被设置成全部。
其中, X 被用来存储那些文本数据, 而 y 则被设定为去存储和这些数据相对应的新闻类别标签。
X, y = .data, .
# 初始化 TF-IDF 向量化器,='' 表示去除英语中的停用词
这是一个空的状态标记。
就是把文本数据转换成了 TF-IDF 特征矩阵。
X = .(X)
将数据集划分为训练样本集合与测试样本集合的份额比例, 设定为数值0.2, 这表示用于测试的样本占总数据量的百分之二十, 同时把随机状态参数设置为数值42, 从而保证每次执行划分动作时所得到的结果保持完全一致的状态。
我们这里把X,y,0.2,42这些内容, 放到对应的括号里面去, 就这样操作一下。
现在开始来对多项式朴素贝叶斯这一个分类器进行初始化的操作, 也就是把整个流程给启动起来。
model = ()
咱们得拿那个用来训练的数据集, 去做那个模型的训练工作。
model.fit(, )
我们需要使用已经训练好的模型, 对测试集数据进行预测操作。
= model.()
我们要去计算一下, 在测试集上面得到的那个准确率是多少, 然后把计算出来的这个准确率的值给它打印出来。
print(":", (, ))
我们来计算模型在测试集上的分类报告, 这份报告里包含准确率、召回率、F1分数这些指标的统计结果。然后把分类报告打印出来就行。
输出字符串中的冒号, 接着换行, 再输出去掉首尾空格后的内容。
6. 关于时间序列方面的预测, 这里存在一个空格符号。
咱们得干这么个活, 那就是拿那个航空乘客数据集()来搞一搞, 这个数据集上面记录的是一家航空公司每个月到底有多少乘客来来往往, 所以它是一个很典型的那一种时间序列式的数据, 然后我们要对这个里头记录的那些历史上的数据情况进行一番分析和建模, 最后的目标是能够把接下来那几个月里面会有多少乘客飞过来这件事给预测出来。
步骤:
1. 加载航空乘客数据集, 并且进行时间序列分析, 举个例子说就是使用ARIMA这种常见的模型来建模, 或者用其他类型的时间序列模型来做处理。
2. 把整个数据集切开, 切成两部分, 一部分用来训练模型, 另一部分留着后头用, 切的时候是按照时间先后的顺序来的, 排在前面的数据拿给模型去训练, 排在后面的那段数据呢, 是用来检验模型最后预测能力到底行不行的。
3. 拿那些用来训练的数据去把时间序列模型练出来, 然后呢, 再就是用这个已经练好的模型对测试集里的数据进行预测操作。
4. 你要用那些都有的指标, 比方说均方误差这些, 还有平均绝对误差这些等等这样的东西, 去评估那个模型预测时候表现出来的性能水平。
• 这个这个代码示例:
as pd
numpy as np
from .tsa.arima.model ARIMA
from .
我们来开始加载数据集吧, 假设数据文件的名称是以 csv 为后缀的这样的形式, 并且要知道的是第一列里面记录的是日期信息, 第二列记录的是乘客的数量。
把那个数据表格给读进来, 用的这个csv格式的文件, 等于说就是赋值。
'Month'
把, 设成是Month的那个。
我们把数据划分成训练集和测试集, 这里需要做出一个假设, 把前100个数据用于训练, 并且把后20个数据用于测试。
把 data.iloc 这个操作分配给 train。
test = data.iloc
我们现在去把那个叫做ARIMA的模型初始化, 这个操作里头的参数order里面写的是三个数字1, 1, 1, 这三个数的意思呢第一个表示自回归的阶数是1, 第二个表示差分的阶数是1, 第三个就表示移动平均的阶数也是1。
model = ARIMA(train
''
按照顺序执行, 其中参数的取值为1。
我们现在要做的事情是让模型进行训练。
= model.fit()
我们需要使用已经训练好的模型, 对测试集数据进行预测操作。
, , = .(steps=len(test))
= .
# 计算并打印模型在测试集上的均方误差
mse = (test
''
, )
print("MSE:", mse)
希望这些练习项目能够帮助你逐步提升在机器学习领域的实践能力, 通过不断地进行尝试, 再通过持续的去实践, 你将可以更加熟练地掌握库的情况以及机器学习的各种算法和相关的技巧部分。
此处已经添加了书籍卡片, 请到今日头条客户端查看。