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

本文使用Iris数据集,来展示如何快速使用scikit-learn库来实现样本分类的任务。
样本数据:鸢尾花数据集,包含150个样本,4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)和1个标签(鸢尾花种类)。
# 导入所需库
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)
在分类问题上,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学习杂记;如有侵权,请联系管理员删除。