【无标题】用python划分数据集(附完整代码)

在机器学习中,我们时常需要将数据按照比例划分为训练集、测试集。

        本人基于python编写了一段程序用于从多个数据集中简易划分数据集,并统一归纳在对应训练集、测试集文件夹下。

编写思路如下:

        1.利用os.listdir()函数读取文件夹中所有的文件名作为总名录:fileNames,并读取文件名的总数:num_plt

        2.对总数根据需要的比例进行整除,获得测试集的总数:num_test。这里我们选用4:1的比例,所以除以5

        3.利用random.sample()函数,不取回地读取 1/5 的文件名的索引:index_test作为测试集。并将其从大到小进行排序,使pop()函数从后往前拿取。防止拿走前面的文件,导致后面的文件读空

        4.最后利用pop()函数根据读取的索引:index_test,逐一从总名录中拿出文件名plt_test。再利用shutil.copy()函数将测试集文件转移到测试集所在的文件夹:test_path

        5.总名录:fileNames被取走所有的测试集后,剩下的便是训练集了。直接读取再用shutil.copy()函数复制就可以了。

交叉验证的代码会在近期发布,敬请期待!

import os
import numpy as np
import random
import shutil  # 导入移动模块

data_path = "文件夹地址"
sub_path = ['各存放子文件的文件夹名称','...']


fileNames = os.listdir(data_path)  # 获取当前路径下的文件名,返回List
num_plt = len(fileNames)
test_path = data_path + '/test'
train_path = data_path + '/train'

for folder in sub_path:
    # test = []
    file_path = data_path + '/' + folder        # 进入类型文件夹
    fileNames = os.listdir(file_path)       # 读取文件夹中的所有文件名
    num_plt = len(fileNames)        # 得到文件夹中图片的总数
    num_test = num_plt//5       # 计算测试集的总数
    index_test = random.sample(range(num_plt),num_test)        # 从num_plt个文件中随机选出num_test个作为索引,random.sample用于生成不重复的随机数
    index_test.sort(reverse = True)  # 对索引进行排序,使其从后往前删除
    # print(index_test)
    for i in index_test:
        plt_test = fileNames.pop(i)
        shutil.copy(file_path + '/' + plt_test, test_path)   
    for i in fileNames:
        shutil.copy(file_path + '/' + i, train_path)

小知识:

        1.random.sample(list, k)以不取回的方式,随机从列表list中读取k个值。

常用于获取不重复的随机值

        2.list.sort( reverse = FALSE )函数是对列表进行顺序排序。reverse 取 TRUE,列表降序;reverse 取 FALSE反之。

        3.list.pop(obj = list[-1])
pop()用于删除并返回列表中的一个元素(默认为最后一个元素

        4.shutil.copy(src,dst)用于复制文件。其中,src表示源文件,dst表示目标文件夹;

  • 注意:当移动到一个不存在的“目标文件夹”,系统会将这个不存在的“目标文件夹”识别为新的文件夹,而不会报错;

  • 10
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 下面是一个使用 Python 编写的 KNN 算法分类 Wine 数据集的示例代码: ```python import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn import datasets # 加载 Wine 数据集 wine = datasets.load_wine() # 将数据转换为 DataFrame 格式 df = pd.DataFrame(data=np.c_[wine['data'], wine['target']], columns=wine['feature_names'] + ['target']) # 划分数据集 X_train, X_test, y_train, y_test = train_test_split(df.iloc[:, :-1], df.iloc[:, -1], test_size=0.2) # 训练 KNN 分类器 knn = KNeighborsClassifier(n_neighbors=5) knn.fit(X_train, y_train) # 计算准确率 accuracy = knn.score(X_test, y_test) print("Accuracy:", accuracy) # 将数据可视化 colors = ['red', 'green', 'blue'] for target, color in zip(np.unique(wine['target']), colors): indices = np.where(df['target'] == target) plt.scatter(df.iloc[indices, 0], df.iloc[indices, 1], c=color, s=50, alpha=0.7) plt.show() ``` 运行上面的代码,将会先对 Wine 数据集进行 KNN 分类,最后使用 Matplotlib 库绘制出分类结果的散点图,以图形化地表示 Wine 数据集的分类情况。 ### 回答2: K最近邻(K-Nearest Neighbors,KNN)算法是一种常用的分类算法,可以用于对数据集进行分类。在这里,我们使用Python编程来实现使用KNN算法对wine数据集进行分类,并用图形化展示结果。 首先,我们需要导入必要的库。我们使用sklearn库中的load_wine功能加载wine数据集,以及train_test_split函数分割数据集为训练集和测试集。我们还使用matplotlib库中的pyplot模块绘制图形化结果。 以下是代码示例: ```python import matplotlib.pyplot as plt from sklearn.datasets import load_wine from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier # 加载wine数据集 wine = load_wine() X = wine.data y = wine.target # 将数据集分割为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 使用KNN算法进行分类 knn = KNeighborsClassifier() knn.fit(X_train, y_train) y_pred = knn.predict(X_test) # 绘制图形化结果 plt.scatter(X_test[:, 0], X_test[:, 1], c=y_pred) plt.xlabel('Feature 1') plt.ylabel('Feature 2') plt.title('Wine Dataset Classification') plt.show() ``` 以上代码首先导入了所需的库。然后使用load_wine函数加载wine数据集,并将特征数据赋值给X变量,标签数据赋值给y变量。 接下来,我们使用train_test_split函数将数据集分割为训练集和测试集,其中测试集占总数据集的30%。 然后,我们使用KNN算法对训练集进行训练,并使用测试集进行预测。预测结果赋值给y_pred变量。 最后,我们使用scatter函数绘制散点图,其中X轴和Y轴分别表示wine数据集的第一个和第二个特征,分类结果用不同颜色表示。同时,我们还设置了轴标签和图像标题。 在运行代码后,会显示图形化结果,用不同颜色的散点表示不同的分类。这样,我们用Python编程实现了使用KNN算法对wine数据集进行分类,并用图形化表示结果。 ### 回答3: K近邻算法(K-Nearest Neighbors,KNN)是一种基本而常用的机器学习算法,用于分类和回归问题。在这里,我们将使用 Python 编程来实现 KNN 算法并对 Wine 数据集进行分类,并使用图形化来展示分类结果。 首先,我们需要导入必要的 Python 库,包括 pandas、numpy 和 matplotlib。然后,我们将加载 Wine 数据集,该数据集包含有关不同葡萄酒的化学分析结果。 接下来,我们将对数据集进行预处理。我们将数据集中的特征数据存储在 X 中,并将数据集中的标签数据存储在 y 中。然后,我们将数据划分为训练集和测试集,通常将数据集的 70% 用于训练,30% 用于测试。 接下来,我们将使用 sklearn 库中的 KNeighborsClassifier 类来创建 KNN 分类器。我们可以指定 K 值(即最近的 K 个邻居),这是 KNN 算法的一个重要参数。 然后,我们将使用训练集拟合 KNN 分类器,并使用测试集进行预测。最后,我们将使用图形化工具(如 matplotlib)将测试集中的真实标签和预测标签进行可视化。 下面是一个简单的实现示例: ```python import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier # 加载数据集 data = pd.read_csv('wine.csv') X = data.drop('Class', axis=1) y = data['Class'] # 数据划分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 创建KNN分类器 knn = KNeighborsClassifier(n_neighbors=3) # 拟合KNN分类器 knn.fit(X_train, y_train) # 使用测试集进行预测 y_pred = knn.predict(X_test) # 可视化分类结果 plt.scatter(X_test['Alcohol'], X_test['Malic acid'], c=y_test) plt.scatter(X_test['Alcohol'], X_test['Malic acid'], c=y_pred, marker='x') plt.xlabel('Alcohol') plt.ylabel('Malic acid') plt.title('KNN Classification') plt.show() ``` 上面的代码是一个简单的 KNN 分类算法实现和可视化示例,其中 wine.csv 是包含有关葡萄酒化学分析结果的 CSV 文件。该代码数据划分为训练集和测试集,使用训练集拟合 KNN 分类器,并使用测试集进行预测。最后,使用 matplotlib 图形化工具将测试集中的真实标签和预测标签进行可视化。 这样,我们就实现了 KNN 算法对 Wine 数据集进行分类,并用图形化表示。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值