划分数据集常用代码

这段代码将一个图片数据集按照80%、10%、10%的比例分别划分为训练集、验证集和测试集。首先获取所有图片文件名,然后使用随机.shuffle打乱顺序,再依据设定的比例复制到对应的文件夹中。该过程对于机器学习模型的训练和评估至关重要。

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

主要思路将一个数据集文件前80%用于训练,80%-90%用于测试,90%-100%用于验证。

#!/usr/bin/env python 
# -*- coding:utf-8 -*-
# 将一个文件夹下图片按比例分在三个文件夹下
import os
import random
import shutil
from shutil import copy2
datadir_normal = "./RSICD_images/"

all_data = os.listdir(datadir_normal)#(图片文件夹)
num_all_data = len(all_data)
print( "num_all_data: " + str(num_all_data) )
index_list = list(range(num_all_data))
#print(index_list)
random.shuffle(index_list)
num = 0

trainDir = "./RSICD_train/"#(将训练集放在这个文件夹下)
if not os.path.exists(trainDir):
    os.mkdir(trainDir)
        
validDir = './RSICD_val/'#(将验证集放在这个文件夹下)
if not os.path.exists(validDir):
    os.mkdir(validDir)
        
testDir = './RSICD_test/'#(将测试集放在这个文件夹下)        
if not os.path.exists(testDir):
    os.mkdir(testDir)
        
for i in index_list:
    fileName = os.path.join(datadir_normal, all_data[i])
    if num < num_all_data*0.8:
        #print(str(fileName))
        copy2(fileName, trainDir)
    elif num>num_all_data*0.8 and num < num_all_data*0.9:
        #print(str(fileName))
        copy2(fileName, validDir)
    else:
        copy2(fileName, testDir)
    num += 1

支持向量机(Support Vector Machine, SVM)是一种常用的监督学习算法,主要用于分类和回归分析。SVM通过寻找最佳的超平面来划分不同类别的数据。以下是使用Python和scikit-learn库实现SVM划分不同数据集的示例代码。 首先,确保你已经安装了必要的库。如果没有安装,可以使用以下命令进行安装: ```bash pip install scikit-learn pip install numpy pip install matplotlib ``` 以下是使用SVM划分不同数据集的示例代码: ```python import numpy as np import matplotlib.pyplot as plt from sklearn import svm from sklearn.datasets import make_blobs, make_circles, make_moons # 生成不同类型的数据集 # 线性可分数据集 X_linear, y_linear = make_blobs(n_samples=100, centers=2, random_state=6) # 非线性可分数据集(圆形) X_circle, y_circle = make_circles(n_samples=100, factor=0.5, noise=0.1) # 非线性可分数据集(月牙形) X_moon, y_moon = make_moons(n_samples=100, noise=0.1) # 定义一个函数来绘制数据集和SVM的决策边界 def plot_svm(X, y, kernel='linear'): clf = svm.SVC(kernel=kernel) clf.fit(X, y) plt.scatter(X[:, 0], X[:, 1], c=y, s=30, cmap=plt.cm.Paired) # 绘制决策边界 ax = plt.gca() xlim = ax.get_xlim() ylim = ax.get_ylim() # 创建网格 xx = np.linspace(xlim[0], xlim[1], 200) yy = np.linspace(ylim[0], ylim[1], 200) YY, XX = np.meshgrid(yy, xx) xy = np.vstack([XX.ravel(), YY.ravel()]).T Z = clf.decision_function(xy).reshape(XX.shape) # 绘制决策边界和边界 ax.contour(XX, YY, Z, colors='k', levels=[-1, 0, 1], alpha=0.5, linestyles=['--', '-', '--']) ax.scatter(clf.support_vectors_[:, 0], clf.support_vectors_[:, 1], s=100, linewidth=1, facecolors='none',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值