ITPub博客

首页 > 数据库 > 数据库开发技术 > 使用Scikit-learn快速实现机器学习分类任务

使用Scikit-learn快速实现机器学习分类任务

原创 数据库开发技术 作者:derekwh 时间:2024-06-13 09:31:57 0 删除 编辑

Scikit-learn(通常简称为sklearn)是Python语言中的一个强大的机器学习库,它集成了众多常用的机器学习模型,涵盖了监督学习、非监督学习等多个领域。

本文使用Iris数据集,来展示如何快速使用scikit-learn库来实现样本分类的任务。

样本说明

样本数据:鸢尾花数据集,包含150个样本,4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)和1个标签(鸢尾花种类)。

使用kNN实现分类

# 导入所需库
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集
iris = datasets.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, random_state=1)

# 使用K近邻算法进行分类
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
y_pred = knn.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("K 近邻分类器准确率:", accuracy)

多种方法(KNN/决策树/随机森林/朴素贝叶斯/支持向量机等)

在分类问题上,sklearn提供了一系列的分类算法,例如决策树、支持向量机、随机森林、K近邻等,供用户选择和使用。

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC
from sklearn.linear_model import LinearRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from sklearn.cluster import KMeans
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis
from sklearn.metrics import accuracy_score

# 加载鸢尾花数据集
iris = datasets.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, random_state=1)

# K 近邻分类器
def knn_example():
    """K 近邻分类器示例"""
    knn = KNeighborsClassifier()
    knn.fit(X_train, y_train)
    y_pred = knn.predict(X_test)
    print("K 近邻分类器准确率:", accuracy_score(y_test, y_pred))

# 决策树分类器
def decision_tree_example():
    """决策树分类器示例"""
    dt = DecisionTreeClassifier()
    dt.fit(X_train, y_train)
    y_pred = dt.predict(X_test)
    print("决策树分类器准确率:", accuracy_score(y_test, y_pred))

# 支持向量机分类器
def svc_example():
    """支持向量机分类器示例"""
    svc = SVC()
    svc.fit(X_train, y_train)
    y_pred = svc.predict(X_test)
    print("支持向量机分类器准确率:", accuracy_score(y_test, y_pred))


# 朴素贝叶斯分类器
def naive_bayes_example():
    """朴素贝叶斯分类器示例"""
    gnb = GaussianNB()
    gnb.fit(X_train, y_train)
    y_pred = gnb.predict(X_test)
    print("朴素贝叶斯分类器准确率:", accuracy_score(y_test, y_pred))

# 随机森林分类器
def random_forest_example():
    """随机森林分类器示例"""
    rf = RandomForestClassifier()
    rf.fit(X_train, y_train)
    y_pred = rf.predict(X_test)
    print("随机森林分类器准确率:", accuracy_score(y_test, y_pred))


# 线性判别分析
def lda_example():
    """线性判别分析示例"""
    lda = LinearDiscriminantAnalysis()
    lda.fit(X_train, y_train)
    y_pred = lda.predict(X_test)
    print("线性判别分析准确率:", accuracy_score(y_test, y_pred))

knn_example()
decision_tree_example()
svc_example()
naive_bayes_example()
random_forest_example()
lda_example()

总结

本文展示了如何利用sklearn高效实现多种机器学习分类算法。然而,分类模型的性能不仅受算法选择的影响,还依赖于诸如模型参数配置、训练集与测试集的划分等关键因素。 

sklearn还提供了模型评估工具,如分类准确度、召回率、F1分数等性能指标。本文仅通过准确度来简单展示分类过程、比较分类效果。

综上,sklearn的这些特性使得用户能够在同一个环境中,便捷地运用不同的分类方法来解决具体问题,并对比分析各模型的表现,进一步选取出最适合当前数据集的机器学习模型。这为研究与应用机器学习技术提供了极大的便利和效率。


原文作者:Python学习杂记;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论
央企算法工程师,微信公众号: python数智工坊

注册时间:2021-03-14

  • 博文量
    305
  • 访问量
    162396