深度学习基础:使用scikit-learn进行多类分类
在监督式机器学习中,多类分类是一个普遍的问题。
问题:给定一个包含m个训练示例的数据集,每个样本包含各种功能形式的信息和标签。每个标签对应于一个训练示例所属的类。在多类分类中,我们有一组有限的类。每个训练示例还具有n个功能。
例如,在识别不同类型的水果时,“形状”,“颜色”,“半径”可以是特征,而“苹果”,“橙色”,“香蕉”可以是不同的类别标签。
在多类分类中,我们使用训练数据训练分类器,并使用该分类器对新示例进行分类。
本文的目的:将使用不同的多类分类方法,例如KNN,决策树,SVM等。我们将比较它们在测试数据上的准确性。我们将使用sci-kit learning(Python)执行所有这些操作。有关如何安装和使用sci-kit learning的信息,请访问http://scikit-learn.org/stable/
方法
- 从源加载数据集。
- 将数据集分为“训练”和“测试”数据。
- 训练数据上的训练决策树,SVM和KNN分类器。
- 使用以上分类器来预测测试数据的标签。
- 测量准确性并使分类可视化。
决策树分类器–决策树分类器是一种用于多类分类的系统方法。它给数据集提出了一系列问题(与其属性/功能有关)。决策树分类算法可以在二叉树上可视化。在根节点和每个内部节点上,提出一个问题,并将该节点上的数据进一步拆分为具有不同特征的单独记录。树的叶子指的是数据集被拆分的类。在以下代码片段中,我们在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)
- 分享
- 举报
-
浏览量:4591次2021-04-08 11:23:42
-
浏览量:540次2023-09-04 14:17:53
-
浏览量:418次2023-09-11 11:42:09
-
浏览量:1186次2023-03-29 10:55:15
-
浏览量:4995次2021-04-12 16:28:50
-
浏览量:7510次2020-12-19 15:44:35
-
浏览量:758次2023-06-21 14:07:39
-
浏览量:3454次2019-09-18 22:22:32
-
2023-09-28 11:13:27
-
浏览量:5831次2021-04-14 16:24:29
-
浏览量:5619次2021-04-20 15:43:03
-
浏览量:1572次2023-02-02 10:44:20
-
浏览量:6185次2021-06-07 11:48:50
-
浏览量:5052次2021-07-12 11:02:32
-
浏览量:695次2023-07-05 10:16:00
-
浏览量:6522次2021-04-14 16:23:53
-
浏览量:1111次2023-09-05 18:20:58
-
浏览量:9754次2021-04-20 15:42:26
-
浏览量:622次2023-07-05 10:15:58
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
圈圈
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明