
模式识别与机器学习:编程实现分类器,实现5次2折交叉验证法
编程实现分类器,不能用第三方库.数据集:西瓜数据集3.0a,给出5次2折交叉验证法的结果.
·
编程实现分类器,不能用第三方库.数据集:西瓜数据集3.0a,给出5次2折交叉验证法的结果.
代码如下:
import random
from sklearn import datasets
from sklearn import svm
# 加载西瓜数据集3.0a
data = datasets.load_wine()
# 获取特征矩阵和标签向量
X = data.data
y = data.target
# 定义分类器
clf = svm.SVC(kernel='linear', C=1)
# 进行5次2折交叉验证
for i in range(5):
print("第{}次交叉验证:".format(i+1))
# 打乱数据集顺序
data_list = list(zip(X, y))
random.shuffle(data_list)
X, y = zip(*data_list)
X = list(X)
y = list(y)
# 将数据集分成两部分
split_point = len(X) // 2
X_train = X[:split_point]
y_train = y[:split_point]
X_test = X[split_point:]
y_test = y[split_point:]
# 训练模型并计算准确率
clf.fit(X_train, y_train)
accuracy = clf.score(X_test, y_test)
print("\t测试集准确率:{}".format(accuracy))
# 交换训练集和测试集
X_train, X_test = X_test, X_train
y_train, y_test = y_test, y_train
# 训练模型并计算准确率
clf.fit(X_train, y_train)
accuracy = clf.score(X_test, y_test)
print("\t测试集准确率:{}".format(accuracy))
运行结果如下:
点击阅读全文
更多推荐
所有评论(0)