sklearn学习记录三:cross-validation

本文介绍了模型评估的三种方式:Estimatorscoremethod、Scoringparameter及Metricfunctions,并重点讲解了交叉验证(cross-validation)的方法,包括切分数据集进行训练与测试、使用cross_val_score函数进行评估等实践操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
模型评估(预测的质量):存在三种方式来评估预测结果的质量
1、Estimator score method:每个估计模型都有自己的评价方式,可以直接使用
2、Scoring parameter:模型评价工具使用cross-validation( cross_validation.cross_val_score和grid_search.GridSearch)
3、Metric functions: 实现功能评估为特定目的的功能
交叉验证(cross-validation)
1)切分数据:使用train_test_split函数很容易的实现随机的切分形成training和test数据集。
x_train,x_test,y_train,y_test=cross_validation.train_test_split(iris.data,iris.target,test_size=0.4,random_state=0)
clf.svm.SVC(kernel='linear',C=1).fit(x_train,y_train)
clf.score(x_test,y_test)
2)cv:最简单的方式是使用函数cross_val_score,当cv为数字时,默认采用的是KFold或者stratifiedKFold
clf=svm.SVC(kernel='linear',C=1)
scores=cross_validation.cross_val_score(clf,iris.data,iris.target,cv=5)
scores==>得到array([1. ..., 0.96..., 0.9 ..., 0.96..., 1. ])
平均分数和标准偏差估计分数:scores.mean()  scores.std()
上面的方式cv的每次迭代都是计算的score,我们可以通过加入scoring参数来计算不同的指标
from sklearn import metrics
cross_validation.cross_val_score(clf,iris.data,iris.target,cv=5,scoring='f1')
==>得到 array([ 1. ..., 0.96..., 0.89..., 0.96..., 1. ])
注:scoring的默认取值以及对应的函数名称
  Classification 
‘average_precision’ sklearn.metrics.average_precision_score
‘f1’ sklearn.metrics.f1_score f1就是F-measure
Clustering 
‘adjusted_rand_score’ sklearn.metrics.adjusted_rand_score
Regression
 ‘mean_squared_error’ sklearn.metrics.mean_squared_error
 
>>> from sklearn.metrics import classification_report
>>> y_true = [0, 1, 2, 2, 0]
>>> y_pred = [0, 0, 2, 2, 0]
>>> target_names = ['class 0', 'class 1', 'class 2']
>>> print(classification_report(y_true, y_pred, target_names=target_names))
             precision    recall  f1-score   support

    class 0       0.67      1.00      0.80         2
    class 1       0.00      0.00      0.00         1
    class 2       1.00      1.00      1.00         2

avg / total       0.67      0.80      0.72         5
### 关于 SAMM 自发性微面部运动数据集 SAMM(Spontaneous Micro-Expression Database)是一个广泛使用的微表情数据库,专注于捕捉人类自发性的细微面部变化。该数据集中记录的微表情通常具有较小的动作幅度以及局部化的特征[^1]。由于这些特性,在情绪分类过程中存在一定的模糊性和主观性,这使得不同研究者可能采用不同的标注方法来定义相同或类似的微表情动作。 SAMM 数据库由多个视频片段组成,其中包含了多种基本情绪类别下的微表情样本。为了提高微表情识别算法的效果,研究人员常利用此数据集进行模型训练与测试。然而,正如之前提到的问题所指出的一样,因各数据库间缺乏统一的标准,基于 SAMM 的研究成果与其他数据库所得结论可能存在差异。 对于希望深入探讨 SAMM 数据集特性的学者而言,《IEEE Transactions on Affective Computing》期刊提供了详尽的技术细节描述及相关实验分析文章。这类出版物不仅有助于理解如何有效处理来自 SAMM 的复杂数据结构,还能够帮助建立更加鲁棒的情绪检测框架。 ```python import numpy as np from sklearn.model_selection import train_test_split from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Dropout, Flatten from tensorflow.keras.optimizers import Adam def build_model(input_shape): model = Sequential() model.add(Flatten(input_shape=input_shape)) model.add(Dense(128, activation='relu')) model.add(Dropout(0.5)) model.add(Dense(7, activation='softmax')) # Assuming there are 7 emotion classes opt = Adam(lr=0.001) model.compile(optimizer=opt, loss='categorical_crossentropy', metrics=['accuracy']) return model # Example usage with hypothetical data dimensions (e.g., grayscale images of size 64x64 pixels and batch size 32). X_data = np.random.rand(1000, 64, 64).astype('float32') / 255. y_labels = np.eye(7)[np.random.randint(0, 7, size=(1000,))] X_train, X_val, y_train, y_val = train_test_split(X_data, y_labels, test_size=0.2) model = build_model((64, 64)) history = model.fit( X_train, y_train, epochs=10, validation_data=(X_val, y_val), verbose=1 ) ``` 上述代码展示了一个简单的神经网络架构用于情感分类任务的例子。尽管这里并未直接加载 SAMM 数据集文件,但它可以作为一个起点去开发针对特定需求的应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值