【问题标题】:Train-test Split of a CSV file in PythonPython 中 CSV 文件的训练测试拆分
【发布时间】:2018-04-26 10:06:31
【问题描述】:

我有一个包含我的数据的.csv 文件。我想做Logistic RegressionNaive BayesDecision Trees。我已经知道如何实现这些了。

但是,我的老师希望我将 .csv 文件中的数据拆分为 80%,并让我的算法预测另一个 20%。我想知道如何以这种方式实际拆分数据。

diabetes_df = pd.read_csv("diabetes.csv")
diabetes_df.head()

with open("diabetes.csv", "rb") as f:
    data = f.read().split()
    train_data = data[:80]
    test_data = data[20:]

我试着像这样拆分它(确定它不起作用)。

【问题讨论】:

  • 提及csv中包含的数据类型
  • 该文件包含基于以下特征预测糖尿病结果的数据:怀孕次数、血糖、血压、胰岛素、BMI,...都是数字数据,并带有标签。有 2 种可能的结果(1 = 患有糖尿病,0 = 没有糖尿病)。
  • 您希望 80% 的第一行进入学习集,最后 20% 进入测试集,还是需要/接受更平坦的重新分区?反正就是纯文本行处理题……

标签: python python-3.x machine-learning data-science


【解决方案1】:

工作流程

  1. 加载数据(见How do I read and write CSV files with Python?
  2. 预处理数据(例如过滤/创建新功能)
  3. 拆分训练测试(验证和开发集)

代码

Sklearns sklearn.model_selection.train_test_split 是您正在寻找的:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    X, y, test_size=0.33, random_state=0)

【讨论】:

  • 非常感谢。我想这正是我想要的。
【解决方案2】:
splitted_csv = "value1,value2,value3".split(',')
print(str(splitted_csv)) #["value1", "value2", "value3"]
print(splitted_csv[0]) #value1
print(splitted_csv[1]) #value2
print(splitted_csv[2]) #value3

还有一些库可以解析 csv 并允许您按列名访问值,但从您的示例中我认为您需要一些“低级”方法来做到这一点

【讨论】:

    猜你喜欢
    • 2018-12-21
    • 2021-06-28
    • 2020-03-23
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2021-01-01
    • 2015-06-08
    • 2019-03-16
    相关资源
    最近更新 更多