R语言 分类
R是一种用于数据科学的非常动态和通用的编程语言。本文涉及R语言的分类。一般来说,R语言中的分类器用于预测特定类别的相关信息,如评论或评级,如好、最好或最差。
各种分类器是:
- 决策树
- Naive Bayes分类器
- K-NN分类器
- 支持向量机(SVM’s)
决策树分类器
它基本上是一个表示选择的图形。图中的节点或顶点代表一个事件,图中的边代表决策条件。它通常用于机器学习和数据挖掘应用。
应用:
电子邮件的垃圾邮件/非垃圾邮件分类,预测肿瘤是否为癌症。通常,用注意到的数据构建一个模型,也称为训练数据集。然后用一组验证数据来验证和改进该模型。
R软件包 “party “用于创建决策树并使之可视化。
命令
install.packages("party")
# Load the party package. It will automatically load other
# dependent packages.
library(party)
# Create the input data frame.
input.data <- readingSkills[c(1:105), ]
# Give the chart file a name.
png(file = "decision_tree.png")
# Create the tree.
output.tree <- ctree(
nativeSpeaker ~ age + shoeSize + score,
data = input.dat)
# Plot the tree.
plot(output.tree)
# Save the file.
dev.off()
输出:
null device
1
Loading required package: methods
Loading required package: grid
Loading required package: mvtnorm
Loading required package: modeltools
Loading required package: stats4
Loading required package: strucchange
Loading required package: zoo
Attaching package: ‘zoo’
The following objects are masked from ‘package:base’:
as.Date, as.Date.numeric
Loading required package: sandwich
天真贝叶斯分类器
奈何贝叶斯分类法是一种通用的分类方法,它使用概率方法,因此也被称为基于贝叶斯定理的概率方法,假设特征之间是独立的。该模型在训练数据集上进行训练,通过 predict() 函数进行预测。
公式:
P(A|B)=P(B|A)×P(A)P(B)
它是机器学习方法中的一个样本方法,但在某些情况下是有用的。训练简单而快速,只需要分别考虑每个类中的每个预测器。
应用:
它一般用于情感分析。
library(caret)
## Warning: package 'caret' was built under R version 3.4.3
set.seed(7267166)
trainIndex = createDataPartition(mydataprog, p = 0.7)Resample1
train = mydata[trainIndex, ]
test = mydata[-trainIndex, ]
## check the balance
print(table(mydataprog))
##
## academic general vocational
## 105 45 50
print(table(trainprog))
输出:
## Naive Bayes Classifier for Discrete Predictors
##
## Call:
## naiveBayes.default(x = X, y = Y, laplace = laplace)
##
## A-priori probabilities:
## Y
## academic general vocational
## 0.5248227 0.2269504 0.2482270
##
## Conditional probabilities:
## science
## Y [, 1] [, 2]
## academic 54.21622 9.360761
## general 52.18750 8.847954
## vocational 47.31429 9.969871
##
## socst
## Y [, 1] [, 2]
## academic 56.58108 9.635845
## general 51.12500 8.377196
## vocational 44.82857 10.279865
K-NN分类器
另一个使用的分类器是K-NN分类器。在模式识别中,K-近邻算法(K-NN)是一种非参数方法,一般用于分类和回归。在这两种情况下,输入由特征空间中最接近的k个训练实例组成。在k-NN分类中,输出是一个类成员。
应用:
用于各种应用,如经济预测、数据压缩和遗传学。
示例:
# Write Python3 code here
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.datasets import load_breast_cancer
from sklearn.metrics import confusion_matrix
from sklearn.neighbors import KNeighborsClassifier
from sklearn.model_selection import train_test_split
import seaborn as sns
sns.set()
breast_cancer = load_breast_cancer()
X = pd.DataFrame(breast_cancer.data, columns = breast_cancer.feature_names)
X = X[['mean area', 'mean compactness']]
y = pd.Categorical.from_codes(breast_cancer.target, breast_cancer.target_names)
y = pd.get_dummies(y, drop_first = True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 1)
sns.scatterplot(
x ='mean area',
y ='mean compactness',
hue ='benign',
data = X_test.join(y_test, how ='outer')
)
输出:
支持向量机(SVM’s)
支持向量机(SVM)是一种有监督的二进制机器学习算法,对两组分类问题使用分类算法。在给SVM模型提供每个类别的标记训练数据集后,它们能够对新的文本进行分类。
主要是SVM被用于文本分类问题。它对未见过的数据进行分类。它比Naive Bayes使用得更广泛。SVM id通常是一种快速和可靠的分类算法,在有限的数据量下表现得非常好。
应用:
SVM在多个领域都有应用,如生物信息学,对基因进行分类等。
示例:
# Load the data from the csv file
dataDirectory <- "D:/" # put your own folder here
data <- read.csv(paste(dataDirectory, 'regression.csv', sep =""), header = TRUE)
# Plot the data
plot(data, pch = 16)
# Create a linear regression model
model <- lm(Y ~ X, data)
# Add the fitted line
abline(model)
输出: