一个简单的 Python 机器学习项目
机器学习是人工智能领域一个蓬勃发展的方向。它的目标是使计算机系统能够从数据中学习模式,并利用这些经验进行预测,而无需任何直接的人工干预。
来自德国的经验丰富的机器学习专家AndreyBu喜欢把自己的技能传授给其他人,他说:“机器学习的好处在于,它让我们有机会训练算法自动做出决策,而这通常需要人工操作,而且非常耗时。”
本文将用 Python3 演示一个简单的分类机器学习算法。我们将使用 Scikit-learn,这是一个简单、通用且开源的 Python 应用程序机器学习框架。
此外,我们将使用鸢尾花数据集,这是一个流行的数据集,可用于理解机器学习的概念。
理解问题和数据
鸢尾花数据集(已集成到 Scikit-learn 中)包含 150 条记录。它包含三种鸢尾花——山鸢尾(标记为 0)、变色鸢尾(标记为 1)和维吉尼亚鸢尾(标记为 2)——它们具有以下数值属性(单位为厘米):
- 花瓣宽度
- 花瓣长度
- 萼片宽度
- 萼片长度
我们的机器学习算法的目标是根据这些特征预测花卉的种类。我们将训练模型,使其能够基于这些特征从数据集中学习模式。
让我们开始动手实践吧(我们将使用 Anaconda Python 发行版)。
Iris 数据集是 Scikit-learn 自带的,我们可以按如下方式加载它。
from sklearn import datasets
让我们看看能否从数据集中提取出鸢尾花的一些特征。
iris = datasets.load_iris()
digits = datasets.load_digits()
需要注意的是,数据集是一个类似字典的对象,它保存了所有关于数据的信息。这些数据存储在.data键(一个数组列表)中。
而且,在处理像这样的监督问题时,可以将一些答案保留在.target列表中。
例如,对于数字数据集,我们可以使用digits.data特征来了解数字样本的分类特征。
以下是代码和输出结果。
print(digits.data)
此外,digits.target它还能让我们更清楚地了解我们想要学习的内容。
print(digits.target)
iris.data我们还可以使用(给出数据数组)和iris.target(给出标签数组)来查看数据。
你会注意到每个条目都有四个属性。
iris.data
iris.target
iris.target_names这将给我们一个标签名称数组;也就是说,数据集中的三种花卉物种。
iris.target_names
此外,我们还可以使用箱线图来生成数据集的可视化表示。
它将向我们展示我们的数据是如何在平面上分散的;使用它们的四分位数。
以下是代码。
import seaborn as sns
iris_data = iris.data #variable for array of the data
iris_target = iris.target #variable for array of the labels
sns.boxplot(data = iris_data,width=0.5,fliersize=5)
sns.set(rc={'figure.figsize':(1,10)})
以下是输出结果。
以下是数据在横轴上的表示方式。
- 0 为萼片长度(厘米)
- 1 为萼片宽度(厘米)
- 2 为花瓣长度(厘米)
- 3是花瓣宽度(厘米)
培训和测试
在了解了数据详情之后,我们现在可以使用算法来训练预测模型。因此,我们需要将数据分成两组:训练集和测试集。
通过对一部分数据进行训练,并对机器学习模型从未接触过的另一组数据进行测试,可以帮助我们确保算法能够识别数据集中的模式,从而提高预测的准确性。
在这种情况下,我们将保留最后15组数据用于测试,其余数据用于训练。因此,我们将基于训练集训练算法,并基于测试集进行预测。
让我们来看一些实现方法的代码。
import numpy as np
from sklearn import tree
iris_test_ids = np.random.permutation(len(iris_data)) #randomly splitting the data set
#splitting and leaving last 15 entries for testing, rest for training
iris_train_one = iris_data[iris_test_ids[:-15]]
iris_test_one = iris_data[iris_test_ids[-15:]]
iris_train_two = iris_target[iris_test_ids[:-15]]
iris_test_two = iris_target[iris_test_ids[-15:]]
iris_classify = tree.DecisionTreeClassifier()#using the decision tree for classification
iris_classify.fit(iris_train_one, iris_train_two) #training or fitting the classifier using the training set
iris_predict = iris_classify.predict(iris_test_one) #making predictions on the test dataset
查看结果
因为我们是随机分割数据集,并且分类器在每次迭代后都会进行训练,所以每次运行代码时,我们可能会得到不同的准确率。
以下是查看结果的代码。
from sklearn.metrics import accuracy_score
print(iris_predict) #lables predicted (flower species)
print (iris_test_two) #actual labels
print (accuracy_score(iris_predict, iris_test_two)*100) #accuracy metric
以下是输出结果。
上述输出的第一行给出了测试数据的标签;也就是说,根据分类器的预测,给出了花卉种类。
第二行给出了数据集中包含的实际物种。最后一行给出了精度百分比。在本例中,我们得到的准确率为 86.67%。
还不错!
结论
以下是整个项目的代码。
from sklearn import datasets
import seaborn as sns
import numpy as np
from sklearn import tree
from sklearn.metrics import accuracy_score
iris = datasets.load_iris()
digits = datasets.load_digits()
print(digits.data)
print(digits.target)
print(iris.data)
print(iris.target)
print(iris.target_names)
iris_data = iris.data #variable for array of the data
iris_target = iris.target #variable for array of the labels
sns.boxplot(data = iris_data,width=0.5,fliersize=5)
sns.set(rc={'figure.figsize':(1,10)})
iris_test_ids = np.random.permutation(len(iris_data)) #randomly splitting the data set
#splitting and leaving last 15 entries for testing, rest for training
iris_train_one = iris_data[iris_test_ids[:-15]]
iris_test_one = iris_data[iris_test_ids[-15:]]
iris_train_two = iris_target[iris_test_ids[:-15]]
iris_test_two = iris_target[iris_test_ids[-15:]]
iris_classify = tree.DecisionTreeClassifier()#using the decision tree for classification
iris_classify.fit(iris_train_one, iris_train_two) #training or fitting the classifier using the training set
iris_predict = iris_classify.predict(iris_test_one) #making predictions on the test dataset
print(iris_predict) #labels predicted (flower species)
print (iris_test_two) #actual labels
print (accuracy_score(iris_predict, iris_test_two)*100) #accuracy metric
本文中,我们用 Python 演示了一个简单的机器学习项目。
为了提高你的机器学习知识,你需要完成这样的项目。
更好的是,您可以从LiveEdu等网站上选择其他高级项目,提高您在机器学习方面的专业知识。
祝您机器学习学习愉快!
文章来源:https://dev.to/educationecosystem/a-simple-machine-learning-project-in-python-5d11






