人工智能与机器学习:鸢尾花数据集实例

人工智能(AI)已经广泛应用于日常生活和工作中,从手机上阅读新闻到分析复杂的工作数据,AI都极大地提高了人类工作的效率、精确度和效果。AI的进步使能够实现以前认为不可能的事情,比如通过点击就能在家中享用到最喜欢的餐厅的披萨。简而言之,人工智能指的是计算机或计算机程序模仿人类智能的行为。这是通过学习人类大脑如何思考、学习、决策和解决问题来实现的。这些研究成果被用作开发智能软件和系统的基础。

学习类型

人工智能领域,有四种主要的学习类型:

  • 监督学习
  • 无监督学习
  • 半监督学习
  • 强化学习

监督学习指的是模型在标记数据集上进行训练。无监督学习则是模型在未标记数据集上进行训练,算法需要自己找出数据中的潜在模式。半监督学习介于监督学习和无监督学习之间,部分学习数据被标记,而其他数据则没有。强化学习则是算法根据反馈响应评估其性能,并据此做出反应。

鸢尾花数据集

本文将介绍如何使用Python和鸢尾花数据集进行监督学习和无监督学习的实例。鸢尾花数据集包含3个类别,每个类别有50个实例,总共150个实例,每个类别代表一种鸢尾花植物。数据格式包括萼片长度、萼片宽度、花瓣长度和花瓣宽度。将基于这些参数训练模型,并进一步使用它们来预测花朵类别。

数据可视化

使用matplotlib库,可以对数据进行散点图可视化:

iris.plot(kind="scatter", x="SepalLengthCm", y="SepalWidthCm")plt.show()

此外,还可以使用pandas的Andrews曲线进行数据可视化:

from pandas.plotting import andrews_curvesandrews_curves(iris.drop("Id", axis=1), "Species")plt.show()

数据预处理

使用内置的train_test_split库来划分数据集,按照80:20的比例。80%用于模型的训练、评估和选择,20%作为验证数据集。

from sklearn.model_selection import train_test_splitx = iris.iloc[:, :-1].valuesy = iris.iloc[:, -1].valuesx_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=0)

监督学习

监督机器学习算法通过使用数据集来训练,以发现模式。这个过程很简单,它取过去的学习成果,并将其应用于新数据。监督学习使用标记的例子来预测未来的模式和事件。例如,当教孩子2+2=4,或者向他们展示任何动物的图片,让他们知道它叫什么。监督学习进一步分为分类和回归。分类预测的是分类标签,这些标签是离散的且无序的。回归通常被描述为确定两个或更多变量之间的关系,比如基于输入数据X预测一个人的工作。

决策树分类器

使用决策树的一般动机是创建一个训练模型,该模型可以用来通过学习先前数据(训练数据)中推断出的决策规则来预测目标变量的类别或值。它尝试使用树表示来解决问题。树的每个内部节点对应一个属性,每个叶节点对应一个类别标签。

from sklearn.tree import DecisionTreeClassifierfrom sklearn.metrics import accuracy_scoreclassifier = DecisionTreeClassifier()classifier.fit(x_train, y_train)y_pred = classifier.predict(x_test)print(classification_report(y_test, y_pred))print(confusion_matrix(y_test, y_pred))print('accuracy is', accuracy_score(y_pred, y_test))

无监督学习

K均值聚类

  • K个质心:从数据集中识别出的每个K聚类的质心。
  • 训练数据的标签:完整的数据集被标记,以确保每个数据点被分配到一个聚类中。
from sklearn.datasets import load_irisfrom sklearn.cluster import KMeansiris_data = load_iris()iris_df = pd.DataFrame(iris_data.data, columns=iris_data.feature_names)kmeans = KMeans(n_clusters=3, init='k-means++', max_iter=100, n_init=10, random_state=0)y_kmeans = kmeans.fit_predict(x)print(kmeans.cluster_centers_)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485