python机器学习--开端001(一个机器学习实例)
发布时间:2026/9/25 20:15:19来源:尧图网络
机器学习--鸢尾花预测模型今天咱们开启了一个新的话题, 也就是机器学习的基础知识这段内容主要是展示一个简单的机器学习实例, 名为鸢尾花预测模型, 它基本上包含了-learn这一机器学习库中所需要掌握的所有基本操作。环境:一些基本概念1.因为现有的已知鸢尾花的测量数据, 所以这样推导出来的结论是, 该模型应该被认定为是一个监督学习类型的模型。2.当我们在面对多个不同的选项时需要进行预测, 并且最终目标是挑出其中某一种特定的结果, 那么这种行为就被称为分类。3.这种结果存在的一种可能性是把它归类到所对应的类别里面去。4.总共有n种输出结果, 这属于n分类问题的范畴。5.对于单个数据点的预测输出的类型, 这个是属于标签。6.对于新数据的预测结果是正确的, 这就体现了模型在泛化方面的能力。7.用来进行训练操作的数据集合, 具体指的是那一部分被称为训练集的内容, 也就是用于训练的数据本身。8.用来进行测试的数据集合, 是测试集, 测试集就是测试数据, 测试数据同时也是被留出来的集合。9.在机器学习领域, 其中的个体被称为: 样本。10.每个样本所包含的所有相关的属性, 实际上就是指的那些被定义为特征的项。导入的包:从。里面把鸢尾花数据集给弄出来。从当前的路径当中将数据集分割函数进行导入和引用, 具体地, 这个操作涉及到对模块内部所定义的相关功能接口进行取用。导入从当前目录中的点后面接着的那个东西, 也就是K近邻算法类。numpy as np # numpyas pd #. as plt # 绘图鸢尾花类别预测这个事儿, 基本上就是那个样子的。已知鸢尾花分为三个品种, 该模型的目标为: 根据给出的数据, 预测出这些数据所属于的分类。模型搭建步骤1.获取数据集本案例属于那个经典的案例, 数据集是有的, 放在里面了, 你拿出来直接用就行。你可以直接从当前的位置进行导入, 这样做可以直接获得数据集的使用权限。等于那个左括号右括号为空, 然后还有一个注释符号开方括号和右方括号与注释符号合起来的部分。这里提到的是, 那两个括号执行操作之后, 返回的结果是一个被称为Bunch类型的对象, 这个对象的特点在于它和使用字典的方式进行数据存储时非常相像。接着用户可以通过执行若干种不同的操作手段来提取该数据集内部所存储的数据内容, 以及获取其他各类相关的附加信息。先执行打印语句, 该语句利用大括号的格式将对象调用键属性方法后返回的所有键名进行输出, 从而能够获取数据集的全部键信息, 接着调用另一个打印函数, 这个函数的作用是用于展示该数据集的具体使用说明, 之后再执行后续的打印操作。) # 这里面包含了分类的品种print(这里写的是特征的名字, 后面print()里面装着全部的数据内容, 这个数据整体来说是一个二维数组, 再后面的print()里面放着数据的分类信息, 这部分数据是一个一维数组。在数据集的内部, 所包含的那些数据部分, 是处于一种数据与标签之间存在着逐一相互对应的形式。2.我们要把数据集分成两部分, 一部分是训练数据, 另一部分是测试数据。如果你需要用数据来搭建一个机器学习的模型的话, 那你第一步得先测一测这个模型到底管不管用。但是, 我们不可以把训练数据拿来用于测试模型的情况, 这是因为模型很有可能会记住整个训练集的全部信息, 从而导致我们去测试的结果始终都是正确的, 因此, 使用训练集是不适合用来进行测试的, 原因是它无法反映出模型的泛化能力。为了把这个问题给解决掉, 那就得把数据集给拆开, 一边是训练集, 另一边是测试集。实现:在这个工具或者平台里面, 会提供某种特定的()函数。这样做可以把数据集合打乱, 然后按照三比一的比率进行划分, 其中占四分之一也就是百分之二十五的测试集比例是经过前辈们在实践中摸索出来的经验总结得出的。这个部分主要是关于命名规范的内容它的作用是用于指定随机数生成器所使用的种子。, , , (, , 0)得到的数据集一共被划分成了两个部分, 一个名字叫测试集, 另外一个名字干脆就叫训练集, 在这个里面, 字母X它代表的含义就是那些输入的数据内容, 而字母y它所代表的意义, 就是最终要输出的结果数据, 这种结果的类别也被习惯性地叫做标签, 比如说是品种这一类具体的指向。3.观察数据在模型搭建步骤正式启动之先, 务必有必要对数据集本身开展一番细致入微的检查检验工作, 进而认真考量一番是否可以采取非机器学习的技术或者方法来予以解决。将数据转化为可视化结果是观察数据的一种十分有效的方式, 你可以把数据变成散点图矩阵。方法:1.先把那个叫Numpy的数组给转换成为。2.在使用的阶段里, 有一个名称被称为函数的东西能够用于绘制散点图矩阵。然后, 利用这些特征的具体的名字, 来给它打上对应的标记。 pd.(, .)#利用创建散点图矩阵安装进行染色grr pd..(, c, (15, 15), o,设置参数bins为20, 参数s设置为60, 同时参数alpha的值为0.8。将数据进行全面的展示。plt.show()4.搭建模型在本次模型搭建的任务当中, 所实际选择采用的方法是‘k近邻算法’。这 k 代表的含义是这样的, 你要去考虑训练集里面离那个新数据点最近的那些邻居, 具体来说是任意 k 个, 而不是仅仅只去看最近的那个谁, 然后呢你就用这些选出来的邻居里面出现次数最多的那一个类别来作为预测的结果。在k近邻算法这里有好些个方法已经被搞成了可以直接调用的封装样子, 这样就能通过直接去调用相应的库来把事儿给办了。在learn这个框架里面, 所有那些被叫做机器学习的模型, 其实都被放到它自己专属的类里去实现了, 而这样的一类一类的东西呢, 大家就习惯性地称呼它们为类。k邻居算法是在模块的类里面完成的实现的这个过程, 所以呢我们得先去把一个这样的对象给实例化出来, 只有先把这个对象弄好了之后, 咱们才能够去用上这个算法。在这个类里面, 它对于那些将要被使用到的方法, 进行了封装操作。其实, 所实例化的那个对象, 它不仅仅包含了构建模型所使用的、由训练数据所对应的算法, 同样还包含了进行预测时所需要的算法, 此外, 它里面也包含了被提取出来的信息。对于类而言, 它仅仅是保存了训练集的数据信息。把knn赋值为等于一, 这就是在实例化。knn.fit(,) # 训练函数, 返回值是 knn本身。5.模型的使用这个模型的使用, 已经在类的内部完成了封装操作, 因此用户是可以直接地调用其中对应的函数, 来实现相关功能的。(1)创建数据。新变量等于从库里面用数组方法生成的。输入的数据是一个二维的, 也就是说它的形状有两层。(2)结果预测的步骤如下, 具体做法是调用带有括号以及里面包含参数X_new的knn这一方法, 然后它返还出来的, 是一个类型为一维数组的东西, 而这个一维数组里面所包含的内容, 就是标签的序号。(3)展示结果方面, 请执行打印操作来输出信息, 具体内容为字符串名称加上大括号内的内容。))模型评估对于已经搭建好的这些模型来说, 我们必须对它们所具有的正确性进行一番评估活动。而在这时候, 就完全需要我们动手去使用那些已经被我们提前给分离出来的测试集数据及其内部存在的标签内容。1.利用那个类里面自带有的, 用来做评价的那个函数。knn.score(,)2.就是去借助那个数组, 进行一下计算的动作。变量 y_pre 等于 knn. , 其目的是为了获取测试集的预测输出结果, 随后将这一结果与正确的标签内容进行对比分析。使用打印语句把得分展示出来, 这个得分是通过一个具体的格式化字符串来生成的, 在这个格式化字符串里面提到了占位符号和两位小数的要求, 后面的表达式是对预估值和目标值进行比较后求取平均数, 而求取平均值的功能是由均值函数来实现的。请点击这里查看完整的代码。from sklearn.datasets import load_iris # 本数据集为一个经典数据集可以直接导入数据集from sklearn.model_selection import train_test_splitfrom sklearn.neighbors import KNeighborsClassifierimport numpy as npimport pandas as pdimport matplotlib.pyplot as pltiris_datasets load_iris() # load_iris() 返回的是一个Bunch对象其和字典很相似# print(the key of iris_datasets:{}.format(iris_datasets.keys())) # 拿到数据集的全部键# print(iris_datasets[DESCR]) # 这个是数据集的说明# print(iris_datasets[target_names]) # 这里面包含了分类的品种# print(iris_datasets[feature_names]) # 这里面是特征的名字# print(iris_datasets[data]) # 这里面有全部的数据,是一个二维数组# print(iris_datasets[target]) # 这里面有数据的分类是一个一维数组# 数组包含了150朵花的测量数据机器学习中个体称为样本属性为特征data数组的形状为样本数乘特征数# 命名规范 X_train,y_train X_test,y_test random_state 指定随机数生成器的种子X_train, X_test, y_train, y_test train_test_split(iris_datasets[data], iris_datasets[target], random_state0)# print(X_train_shape:{},\n y_train:shape{}.format(X_train.shape, y_train.shape))# print(X_test_shape:{},\n y_test:shape{}.format(X_test.shape, y_test.shape))# 观察数据# 将其转为DataFrame,利用特征名字对其进行标记iris_dataframe pd.DataFrame(X_train, columnsiris_datasets.feature_names)# 利用Dataframe创建散点图矩阵安装y_train进行染色grr pd.plotting.scatter_matrix(iris_dataframe, cy_train, figsize(15, 15), markero,hist_kwds{bins: 20}, s60, alpha.8)# 展示数据plt.show()# k近邻算法knn KNeighborsClassifier(n_neighbors1)knn.fit(X_train, y_train)X_new np.array([[5, 2.9, 1, 0.2]])prediction knn.predict(X_new)print(the prediction:{}.format(prediction))print(the name:{}.format(iris_datasets[target_names][prediction]))# 模型评估print(the score:{:.2f}.format(knn.score(X_test, y_test)))
网站建设高端定制企业官网