深度学习基础:使用scikit-learn进行多类分类

深度学习基础:使用scikit-learn进行多类分类 圈圈 2023-10-05 00:00:00 158

在监督式机器学习中,多类分类是一个普遍的问题。

问题:给定一个包含m个训练示例的数据集,每个样本包含各种功能形式的信息和标签。每个标签对应于一个训练示例所属的类。在多类分类中,我们有一组有限的类。每个训练示例还具有n个功能。

例如,在识别不同类型的水果时,“形状”,“颜色”,“半径”可以是特征,而“苹果”,“橙色”,“香蕉”可以是不同的类别标签。

在多类分类中,我们使用训练数据训练分类器,并使用该分类器对新示例进行分类。

本文的目的:将使用不同的多类分类方法,例如KNN,决策树,SVM等。我们将比较它们在测试数据上的准确性。我们将使用sci-kit learning(Python)执行所有这些操作。有关如何安装和使用sci-kit learning的信息,请访问http://scikit-learn.org/stable/


方法

  1. 从源加载数据集。
  2. 将数据集分为“训练”和“测试”数据。
  3. 训练数据上的训练决策树,SVM和KNN分类器。
  4. 使用以上分类器来预测测试数据的标签。
  5. 测量准确性并使分类可视化。

决策树分类器–决策树分类器是一种用于多类分类的系统方法。它给数据集提出了一系列问题(与其属性/功能有关)。决策树分类算法可以在二叉树上可视化。在根节点和每个内部节点上,提出一个问题,并将该节点上的数据进一步拆分为具有不同特征的单独记录。树的叶子指的是数据集被拆分的类。在以下代码片段中,我们在scikit-learn中训练了决策树分类器。


# importing necessary libraries 
from sklearn import datasets 
from sklearn.metrics import confusion_matrix 
from sklearn.model_selection import train_test_split 
  
# loading the iris dataset 
iris = datasets.load_iris() 
  
# X -> features, y -> label 
X = iris.data 
y = iris.target 
  
# dividing X, y into train and test data 
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0) 
  
# training a DescisionTreeClassifier 
from sklearn.tree import DecisionTreeClassifier 
dtree_model = DecisionTreeClassifier(max_depth = 2).fit(X_train, y_train) 
dtree_predictions = dtree_model.predict(X_test) 
  
# creating a confusion matrix 
cm = confusion_matrix(y_test, dtree_predictions)

SVM(支持向量机)分类器

当特征向量是高维时,SVM(支持向量机)是一种有效的分类方法。在sci-kit学习中,可以指定内核函数(此处为线性)


# importing necessary libraries 
from sklearn import datasets 
from sklearn.metrics import confusion_matrix 
from sklearn.model_selection import train_test_split 
  
# loading the iris dataset 
iris = datasets.load_iris() 
  
# X -> features, y -> label 
X = iris.data 
y = iris.target 
  
# dividing X, y into train and test data 
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0) 
  
# training a linear SVM classifier 
from sklearn.svm import SVC 
svm_model_linear = SVC(kernel = 'linear', C = 1).fit(X_train, y_train) 
svm_predictions = svm_model_linear.predict(X_test) 
  
# model accuracy for X_test   
accuracy = svm_model_linear.score(X_test, y_test) 
  
# creating a confusion matrix 
cm = confusion_matrix(y_test, svm_predictions)

KNN(k最近邻)分类器– KNN或k最近邻居是最简单的分类算法。这种分类算法不依赖于数据的结构。每当遇到新示例时,都会检查其与训练数据中k个最近的邻居。两个示例之间的距离可以是它们的特征向量之间的欧式距离。k个最近邻居中的多数类被视为遇到的示例的类。

# importing necessary libraries 
from sklearn import datasets 
from sklearn.metrics import confusion_matrix 
from sklearn.model_selection import train_test_split 

# loading the iris dataset 
iris = datasets.load_iris() 

# X -> features, y -> label 
X = iris.data 
y = iris.target 

# dividing X, y into train and test data 
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0) 

# training a KNN classifier 
from sklearn.neighbors import KNeighborsClassifier 
knn = KNeighborsClassifier(n_neighbors = 7).fit(X_train, y_train) 

# accuracy on X_test 
accuracy = knn.score(X_test, y_test) 
print accuracy 

# creating a confusion matrix 
knn_predictions = knn.predict(X_test) 
cm = confusion_matrix(y_test, knn_predictions)

朴素贝叶斯分类器–朴素贝叶斯分类方法基于贝叶斯定理。之所以称为“朴素”,是因为它假设数据中每对特征之间都是独立的。令(x 1,x 2,…,x n)为特征向量,y为与该特征向量对应的类标签。

应用贝叶斯定理,

易百纳社区

易百纳社区


# importing necessary libraries 
from sklearn import datasets 
from sklearn.metrics import confusion_matrix 
from sklearn.model_selection import train_test_split 

# loading the iris dataset 
iris = datasets.load_iris() 

# X -> features, y -> label 
X = iris.data 
y = iris.target 

# dividing X, y into train and test data 
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 0) 

# training a Naive Bayes classifier 
from sklearn.naive_bayes import GaussianNB 
gnb = GaussianNB().fit(X_train, y_train) 
gnb_predictions = gnb.predict(X_test) 

# accuracy on X_test 
accuracy = gnb.score(X_test, y_test) 
print accuracy 

# creating a confusion matrix 
cm = confusion_matrix(y_test, gnb_predictions)


声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
圈圈
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
圈圈
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区