更新时间:2023-03-09 来源:黑马程序员 浏览量:
监督学习和无监督学习是机器学习中两种常见的学习方式,它们的区别在于是否有标签数据。以下是它们的定义和代码举例。
监督学习是一种机器学习的方式,其训练数据集包括标签数据(也称为有监督数据)。这些标签数据告诉了机器学习算法输入数据与输出结果之间的对应关系。监督学习可以用于分类和回归问题,其中分类问题是对输入数据进行分类,回归问题是对输入数据进行连续值的预测。
以下是一个基于监督学习的代码示例,使用Scikit-learn库中的逻辑回归算法来对鸢尾花进行分类。在这个示例中,我们将训练数据分成了输入数据和输出数据。
from sklearn.datasets import load_iris from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split # 加载鸢尾花数据集 iris = load_iris() X = iris.data # 输入数据 y = iris.target # 输出数据 # 将数据集分成训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2) # 训练逻辑回归模型 clf = LogisticRegression() clf.fit(X_train, y_train) # 在测试集上进行预测 y_pred = clf.predict(X_test) # 计算准确率 accuracy = clf.score(X_test, y_test) print(f"Accuracy: {accuracy}")
无监督学习是一种机器学习的方式,其训练数据集不包含标签数据。这意味着算法必须从数据中自己发现模式和结构。无监督学习可以用于聚类、降维和异常检测等问题。
以下是一个基于无监督学习的代码示例,使用Scikit-learn库中的K-Means算法对鸢尾花数据进行聚类。在这个示例中,我们只使用输入数据。
from sklearn.datasets import load_iris from sklearn.cluster import KMeans # 加载鸢尾花数据集 iris = load_iris() X = iris.data # 输入数据 # 使用K-Means算法进行聚类 kmeans = KMeans(n_clusters=3) kmeans.fit(X) # 获取聚类结果 labels = kmeans.labels_ # 打印聚类结果 print(labels)
在上面的无监督学习的代码示例中,我们使用了K-Means算法对鸢尾花数据进行聚类。这里是一些相关解释:
·加载数据集:首先使用Scikit-learn库中的load_iris()函数加载鸢尾花数据集。这个数据集包括150个样本和4个特征(花瓣和萼片的长度和宽度)。
·定义输入数据:我们将加载的数据集的特征存储在变量X中。
·使用K-Means算法:我们使用Scikit-learn库中的KMeans类来训练K-Means模型。在这个例子中,我们设置n_clusters参数为3,因为我们知道这个数据集有3个不同的鸢尾花品种。在实际使用中,可能需要通过一些技术手段来确定最佳的聚类数量。
·获取聚类结果:K-Means算法将每个样本分配到最接近的簇中,并将其标记为0、1或2。我们可以通过访问kmeans.labels_属性来获得这些标签。
·打印聚类结果:最后,我们打印出聚类结果,以便查看哪些样本被分配到了哪些簇中。
总之,监督学习和无监督学习的区别在于是否有标签数据。监督学习用于分类和回归问题,而无监督学习用于聚类、降维和异常检测等问题。在实际应用中,我们需要根据问题的性质来选择合适的学习方式。