sklearn的模型评估指标
1、分类模型评估指标
一、sklearn.metrics提供分类算法模型的评估指标
# 实例数据
iris = load_iris()
# 分割测试集和训练集
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=1)
# 实例模型
clf = DecisionTreeClassifier()
# 训练模型
clf.fit(x_train, y_train)
# 预测测试集数据
y_data = clf.predict(x_test)
"""精确率:precision_score()(重)"""
print("精确率评估方法的分数:", precision_score(y_test, y_data, average='micro'))
"""F1值f1_score()(重)"""
print("F1值评估方法的分数:", f1_score(y_test, y_data, average='micro'))
# 注意点,如果是二分类的话average不需要更改,如果是多分类则需要更改为 {'micro', 'macro', 'samples', 'weighted'}
# 模型评分过低时这几个参数换着来,哪个分数高换哪个
##################################################################
"""召回率recall_score()"""
# 待补充代码
##################################################################
"""Cohen's Kappa系数:cohen_kappa_score()"""
# 待补充代码
##################################################################
"""除了以上4中单一的评估方法,还提供输出评估指标报告的函数classification_report,可以输出上方4种评估指标"""
# 待补充代码
##################################################################
"""ROC曲线:roc_curve(),本质上是把用图形画出结果,图形与x轴组合的面积越大,模型越好"""
# 待补充代码
2、回归模型评估指标
一、sklearn.metrics模块提供回归算法模型的评估指标
# 提取数据
housevalue = fetch_california_housing()
x = housevalue.data
y = housevalue.target
# 分数据集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)
# 建立模型
model = LinearRegression()
# 训练模型
model.fit(x_train, y_train)
# 预测数据
g = model.predict(x_test)
# 均方误差:mean_squared_error(),越接近0越好
print("均方误差", mean_squared_error(y_test, g))
# 中值绝对误差(median_absolute_error()),越接近0越好
print("平方绝对误差", mean_absolute_error(y_test, g))
"""可解释方差值(explained_variance_score())"""
# 待补充代码
##################################################################
"""R2值(r2_score())"""
# 待补充代码
3、聚类模型评估指标
一、sklearn.metrics模块提供聚类模型评估指标
"""Calinski-Harabasz指数评价方法:calinski_harabasz_score()(重)"""
# 这里的数据时使用make_blob生成的数据
"""
make_blobs用于生成聚类函数的样本
n_samples:样本个数
n_features: 数据的特征数量
centers:数据的中心点(表示数据都是围绕着设定的这几个核心来创建的)
random_state:随机模式
"""
x, y = make_blobs(n_samples=500, n_features=2, centers=3, random_state=1)
# 创建模型,质心为4个
k = KMeans(n_clusters=4, random_state=1)
# 训练模型得出训练的结果
data = k.fit(x)
# 查看训练结果中每一个点所属的质心
labels = data.labels_
# 使用calinski_harabasz_score评估模型,传入点的数据和所属质心的数据,评分越大模型越好
print(calinski_harabasz_score(x, labels=labels))
##################################################################
"""ARI评价方法(兰德系数):adjusted_rangd_score()"""
# 待补充代码
##################################################################
"""AMI评价方法(互信息):adjusted_mutual_info_score()"""
# 待补充代码
##################################################################
"""V-measure评分:completeness_score()"""
# 待补充代码
##################################################################
"""FMI评价法:owlkes_mallows_score()"""
# 待补充代码
##################################################################
"""轮廓系数评价法:silhouette_score()"""
# 待补充代码
4、逻辑回归使用两种方法来评估模型
一、sklearn.metrics模块提供聚类模型评估指标
二、计算方法
第一种
confusion_matrix(真实值,预测值):算出TP、FN、FP、TN这个二维矩阵
accuracy_score(真实值,预测值):通过accuracy = (TP + TN / TP + FN + FP + TN)算出评估指标
TP:真阳性、TN:真阴性、FN:假阴性(需要避免这种数据,最严重的错误)、FP:加阳性(也需要避免)
# 使用metrics中的accuracy_score(真实值,预测值)来评估模型
# 取出数据
data = load_breast_cancer()
# 分割数据
x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.3)
# 建立模型
model = LogisticRegression(penalty="l1", solver="liblinear")
# 训练模型
model.fit(x_train, y_train)
# 计算预测值
y_pred = model.predict(x_test)
# 评估模型
print("使用accuracy_score预测的结果", accuracy_score(y_test, y_pred))
print("使用confusion_matrix搭建混淆矩阵预测的结果\n", confusion_matrix(y_test, y_pred))
第二种
既是使用ROC绘制曲线来评估模型,与x轴组成的面积越大模型越好
代码待补充