目录
0 今日目标
1 随机森林(RandomForestClassifier)
1.1 案例1
1.2 案例2
2 数据集划分(train_test_split)
3 准确率 (accuracy_score)
4 混淆矩阵 (confusion_matrix )
4.1 混淆矩阵
4.2 举例说明
4.3 参数说明
4.4 案例
致谢
from sklearn.ensemble import RandomForestClassifier #随机森林 from sklearn.model_selection import train_test_split #数据集划分 from sklearn.metrics import accuracy_score #准确率 from sklearn.metrics import confusion_matrix #混淆矩阵
#=========导包==============================
from sklearn.ensemble import RandomForestClassifier
#========data:训练数据, label:标签==========
data = [[0, 0, 0], [1, 1, 1], [2, 2, 2], [1, 1, 1], [2, 2, 2], [3, 3, 3], [1, 1, 1], [4, 4, 4]]
label = [0, 1, 2, 1, 2, 3, 1, 4]
#======用随机森林来拟合(训练)数据==============
model = RandomForestClassifier()
model.fit(data, label)
#======x_test 测试数据======================
x_test = [[1, 2, 3],
[5, 6, 7],
[8, 8, 8],
[9, 9, 9]]
#======输出 x_test每组数据的预测结果的标签值=======
print(model.predict(x_test))
#====输出的是二维矩阵 ,第i行j列表示 x_test第i行测试数据在每个label上的概率(这李标签共有5个 0,1,2,3,4)====
print(model.predict_proba(x_test))
#predict结果:
[2 4 4 4]
#predict_proba结果:
[[0. 0.38 0.45 0.14 0.03]
[0. 0. 0.08 0.16 0.76]
[0. 0. 0.08 0.16 0.76]
[0. 0. 0.08 0.16 0.76]]
Process finished with exit code 0
情景:基于相亲网站男方提供的个人基本资料作为输入,以女方是否相亲做标签做训练,用训练出的模型预测女方是否相亲。
#==================导包===================
from sklearn.ensemble import RandomForestClassifier
#======"年龄", "身高", "年收入", '学历'(0:大专, 1:本科, 2:硕士)======
X = [
[25, 179, 15, 0],
[33, 190, 19, 0],
[28, 180, 18, 2],
[25, 178, 18, 2],
[46, 100, 100, 2],
[40, 170, 170, 1],
[34, 174, 20, 2],
[36, 181, 55, 1],
[35, 170, 25, 2],
[30, 180, 35, 1],
[28, 174, 30, 1],
[29, 176, 36, 1],
]
#===========有否相亲 0:N 1:Y===================
y = [0, 1, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1]
#======现在我们把训练数据,和对应的分类放入分类器中进行训练======
model = RandomForestClassifier().fit(X, y)
#======预测下面此人是否相亲======
p = [[28, 180, 18, 2]]
print(model.predict(p))
[1]
Process finished with exit code 0
# 输出结果是[1] 是
2.1 用途
在机器学习中,该函数可按照用户设定的比例,随机将样本集合划分为训练集 和测试集,并返回划分好的训练集和测试集数据。
2.2 语法
X_train,X_test, y_train, y_test =cross_validation.train_test_split(X,y,test_size, random_state)
2.3 参数说明
import numpy as np
from sklearn.model_selection import train_test_split
#创建一个数据集X和相应的标签y,X中样本数目为100
X, y = np.arange(200).reshape((100, 2)), range(100)
#用train_test_split函数划分出训练集和测试集,测试集占比0.33
X_train, X_test, y_train, y_test = train_test_split( X, y, test_size=0.33, random_state=42)
#打印出原始样本集、训练集和测试集的数目
print("The length of original data X is:", X.shape[0])
print("The length of train Data is:", X_train.shape[0])
print("The length of test Data is:", X_test.shape[0])
The length of original data X is: 100
The length of train Data is: 67
The length of test Data is: 33
Process finished with exit code 0
分类准确率分数是指所有分类正确的百分比。分类准确率这一衡量分类器的标准比较容易理解,但是它不能告诉你响应值的潜在分布,并且它也不能告诉你分类器犯错的类型。
sklearn.metrics.accuracy_score(y_true, y_pred, normalize=True, sample_weight=None)
normalize:默认值为True,返回正确分类的比例;如果为False,返回正确分类的样本数
案例:
import numpy as np
from sklearn.metrics import accuracy_score
y_pred = [0, 2, 1, 3]
y_true = [0, 1, 2, 3]
print("正确率:",accuracy_score(y_true, y_pred))
print("正确个数:",accuracy_score(y_true, y_pred, normalize=False))
正确率: 0.5
正确个数: 2
Process finished with exit code 0
4.1 混淆矩阵
在机器学习领域,混淆矩阵(confusion matrix),又称为可能性表格或是错误矩阵。它是一种特定的矩阵用来呈现算法性能的可视化效果,通常是监督学习(非监督学习,通常用匹配矩阵:matching matrix)。其每一列代表预测值,每一行代表的是实际的类别。这个名字来源于它可以非常容易的表明多个类别是否有混淆(也就是一个class被预测成另一个class)
4.2 举例说明
假设有一个用来对猫(cats)、狗(dogs)、兔子(rabbits)进行分类的系统,混淆矩阵就是为了进一步分析性能而对该算法测试结果做出的总结。假设总共有 27 只动物:8只猫, 6条狗, 13只兔子。结果的混淆矩阵如下图:
在这个混淆矩阵中,实际有 8只猫,但是系统将其中3只预测成了狗;对于 6条狗,其中有 1条被预测成了兔子,2条被预测成了猫。从混淆矩阵中我们可以看出系统对于区分猫和狗存在一些问题,但是区分兔子和其他动物的效果还是不错的。所有正确的预测结果都在对角线上,所以从混淆矩阵中可以很方便直观的看出哪里有错误,因为他们呈现在对角线外面。
4.3 参数说明
y_true: 是样本真实分类结果,y_pred: 是样本预测分类结果
labels:是所给出的类别,通过这个可对类别进行选择
sample_weight : 样本权重
sklearn.metrics.confusion_matrix(y_true, y_pred, labels=None, sample_weight=None)
(1)案例1
from sklearn.metrics import confusion_matrix
y_true=[2,1,0,1,2,0]
y_pred=[2,0,0,1,2,1]
C=confusion_matrix(y_true, y_pred)
print("混淆矩阵:")
print(C)
混淆矩阵:
[[1 1 0]
[1 1 0]
[0 0 2]]
Process finished with exit code 0
(2)案例2
from sklearn.metrics import confusion_matrix
y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
C=confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])
print("混淆矩阵:")
print(C)
混淆矩阵:
[[2 0 0]
[0 0 1]
[1 0 2]]
Process finished with exit code 0
————————————————
https://blog.csdn.net/m0_38061927/article/details/77198990