机器学习中监督学习算法简介
#python #ai #machinelearning #linearregression

机器学习是一个引人入胜的领域,它使计算机能够从数据中学习并在没有明确编程的情况下做出预测或决策。在各种机器学习技术中,监督学习是最常见和最重要的方法。本文是针对初学者的监督学习介绍指南。我们将探讨监督学习的基本原则,讨论流行算法,例如线性回归,决策树和K-Neartheart邻居(K-NN),并使用Scikit-Learn库中使用Python代码段提供实践示例。

先决条件

在进入令人兴奋的监督学习算法的世界之前,必须对Python编程语言和数据操纵技术有基本的了解。熟悉诸如变量,数据类型,循环和条件语句之类的概念将是有益的。此外,具有数值计算的Python库Numpy的掌握将有所帮助,因为它简化了许多与机器学习不可或缺的数学操作。

如果您是Python的新手,则有几个在线教程和可用的资源可以为您提供坚实的基础。随着您在本文中的进行,我们将提供Python代码片段和解释,但是先前对Python的理解将增强您的学习经验。

什么是监督学习?

想象您是一个园丁,学习区分两种花朵:玫瑰和向日葵。您会收集一堆鲜花,每个花都有一个标签,告诉您是玫瑰还是向日葵。通过观察和从这些标记的花朵中学习,您开始识别区分两种类型的模式。

在监督学习中,计算机遵循类似的过程。它从标记的示例中学习,以对新的,看不见的数据进行预测。 “监督”来自标记的数据,该数据充当指导算法学习过程的老师。

监督学习可用于回归和分类任务。在回归任务中,该算法可以预测连续的价值,例如根据房屋的特征预测房屋的价格。在分类任务中,该算法预测离散标签,例如将电子邮件分类为垃圾邮件或不垃圾邮件。

线性回归:预测趋势

让我们将线性回归视为有助于预测趋势的工具。想象一个场景,您拥有房价及其各自地区的列表。您观察到,随着房屋面积的上涨,其价格也趋于上涨。线性回归旨在通过此数据划定一条直线,从而捕获整体趋势。一旦建立了线路,您就可以使用线方程来根据房屋的区域预测房屋的价格。

数学上,线性回归模型表示输入变量(自变量)和输出变量(因变量)之间的线性关系。该行由等式表示:

y = mx + b

其中:

  • y是预测值(因变量),
  • x是输入值(自变量),
  • m是线路的斜率,
  • b是y截距。

线性回归的目标是找到最拟合的线,该线最小化预测值和训练数据中的实际值之间的误差。

决策树:做出像侦探这样的决定

想象您正在市场上购买新车,并且您正在尝试在两种选择之间做出决定:蓝色汽车和紫色汽车。
对于蓝色汽车,您会发现它的里程更多,但是与紫色汽车相比,它具有一些额外的功能和更低的价格。另一方面,紫色汽车上的英里较少,但缺少蓝色汽车提供的其他功能。紫色汽车的价格更高。
为了做出决定,您首先要考虑自己的优先事项。如果您重视以更实惠的价格拥有最新功能,那么蓝色汽车可能是您更好的选择。但是,如果您优先考虑较低的里程,并且不介意为此付出一些额外的费用,那么紫色的汽车可能会更具吸引力。
您还考虑了其​​他因素,例如维护历史,燃油效率和每辆车的整体状况,这可能会进一步影响您的决定。
通过使用决策树,您可以创建这些因素的视觉表示,并根据自己的喜好权衡其重要性。当您沿着决策树的分支机构沿您的分支机构时,您可以比较和对比两辆汽车的属性,并最终做出与您的需求和预算保持一致的明智选择。

A picture of a decision tree
在此示例中,决策树可帮助您浏览选择汽车的复杂过程,并考虑到不同的变量和个人偏好,以为您提供最佳决策。

同样,机器学习中的决策树提出了一系列有关数据的问题,以对其进行分类或做出预测。每个问题都将数据拆分为子集,从而导致树状结构。这允许算法根据数据中的功能做出决策。

决策树的决策过程涉及选择有效地将数据分为不同类别的最有用的功能。每个内部节点代表一个问题,每个分支代表问题的答案,每个叶节点代表最终决定或结果。

决策树的构建涉及找到最佳功能和分裂点,从而在训练数据上最准确地预测。通过遵循从根节点到叶节点的路径,该算法可以基于学到的规则对新数据点进行分类。

K-Nearest邻居(K-NN):向邻居学习

让我们想象您只是搬到了一个新的社区,您想知道这是否是一个友好而安全的区域。您决定询问您最近的邻居,居住在您家附近的人们,以及他们的经历。通过从他们那里收集信息,您可以了解附近的期望。

在k-neartheard邻居(K-NN)算法中,“ k”表示所考虑的邻居数量。该算法着眼于最接近您要预测的数据点,并根据其标签做出决定。如果大多数附近的点是某个类别,则该算法将该类分配给新数据点。

在训练阶段,K-NN算法不会构建特定模型。取而代之的是,它记住培训数据并使用它在运行时进行预测。 K-NN的关键决定是确定“ K”的适当值以及用于测量数据点之间相似性的距离度量。

使用Python和Scikit-Learn实施监督的学习算法

要在实践中应用这些算法,我们将使用Python和Scikit-Learn库,该库为机器学习提供了强大的工具。如果您尚未安装Scikit-Learn,则可以使用以下命令进行操作:

pip install scikit-learn

我们将从数据准备开始,在该数据准备中,我们在其中组织和预处理标记的数据。接下来,我们将使用线性回归,决策树和K-NN算法在准备好数据上训练我们的模型。最后,我们将评估模型的性能并根据新的,看不见的数据进行预测。

数据准备

数据准备是机器学习过程中的关键步骤。它涉及清洁和组织数据,以确保其适合培训和测试我们的模型。数据可能来自各种来源,可能需要处理丢失的值,缩放和将分类变量转换为数值表示。

让我们假设我们有一个具有各自区域和价格的房屋数据集,表示为CSV文件:

area,price
1200,300000
1500,350000
1800,400000
2000,420000
2200,450000

我们可以使用Pandas,一个流行的Python库进行数据操作,加载和预处理数据:

import pandas as pd

# Load the dataset from CSV file
data = pd.read_csv('house_data.csv')

# Separate the features (areas) and target variable (prices)
X = data['area'].values.reshape(-1, 1)
y = data['price'].values

训练模型 - 线性回归

准备好数据,我们现在可以继续训练线性回归模型:

from sklearn.linear_model import LinearRegression

# Create and train the Linear Regression model
model = LinearRegression()
model.fit(X, y)

训练模型 - 决策树

对于决策树,我们使用决策雷特雷格拉类用于回归任务:

from sklearn.tree

 import DecisionTreeRegressor

# Create and train the Decision Tree model
model = DecisionTreeRegressor()
model.fit(X, y)

训练模型-K-Nearest邻居(K-NN)

对于K-Nearest邻居,我们使用KneighBorsRegressor类进行回归任务:

from sklearn.neighbors import KNeighborsRegressor

# Create and train the k-NN model
model = KNeighborsRegressor(n_neighbors=3)
model.fit(X, y)

评估模型

训练模型后,必须评估其性能。对于回归任务,常见的评估指标包括平均绝对误差(MAE)和根平方误差(RMSE):

from sklearn.metrics import mean_absolute_error, mean_squared_error

# Make predictions on the training data
predictions = model.predict(X)

# Calculate MAE and RMSE
mae = mean_absolute_error(y, predictions)
rmse = mean_squared_error(y, predictions, squared=False)

print("Mean Absolute Error:", mae)
print("Root Mean Squared Error:", rmse)

结论

恭喜!您已经将第一步进入了监督学习算法的世界。我们介绍了监督学习的基本概念,并探讨了流行算法,例如线性回归,决策树和K-Nearest邻居(K-NN)。此外,我们使用Scikit-Learn库提供了实用的示例和Python代码段,使您能够开始构建机器学习模型。

记住,练习变得完美。当您继续进行机器学习的旅程时,请尝试尝试不同的数据集,调整参数并探索其他算法。您探索和学习的越多,在这个令人兴奋的领域中就越熟练。

还要记住,本文是监督学习的介绍,随着您在机器学习之旅的进步,还有更多的学习。您可能会遇到挑战,但不要灰心。将它们视为作为机器学习从业人员学习和成长的机会。

您喜欢阅读吗?在TwitterLinkedIn上关注我
愉快的编码!