我在下面有一个名为train.csv的csv文件:

   25.3, 12.4, 2.35, 4.89, 1, 2.35, 5.65, 7, 6.24, 5.52, M
   20, 15.34, 8.55, 12.43, 23.5, 3, 7.6, 8.11, 4.23, 9.56, B
   4.5, 2.5, 2, 5, 10, 15, 20.25, 43, 9.55, 10.34, B
   1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, M


我正在尝试将此数据集分离并归类为以下内容(这是我想要的输出):

    [[25.3, 12.4, 2.35, 4.89. 1, 2.35, 5.65, 7, 6.24, 5.52],
    [20, 15.34, 8.55, 12.43, 23.5, 3, 7.6, 8.11, 4.23, 9.56],
    [4.5, 2.5, 2, 5, 10, 15, 20.25, 43, 9.55, 10.34],
    [1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5]],
    [M, B, B, M]


“ [[”中的一个是x(样本数据),而“ [M,M,B,B,M]”中的那个是y(这是与其数据集匹配的分类。

我正在尝试创建一个已加载的python代码,可以打印出被数据及其分类分隔的数据。它与线性SVM有关。

y_list = []
x_list = []
for W in range(0, 100):
    X = data_train.readline()
    y = X.split(",")
    y_list.append(y[10][0])
    print(y_list)
    z_list = []
    for Z in range(0, 10):
        z_list.append(y[Z])
    x_list.append(z_list)
    dataSet = (x_list, y_list)
    print(dataSet)


注意:我知道我的范围是完全错误的。我不确定这种类型的示例如何适应范围,有人可以解释一下在这种情况下范围如何工作。

注意:我知道追加行在其中“ y [10] [0]”也是错误的。有人可以解释这些索引如何工作。

总的来说,我希望输出是我上面提到的输出。谢谢您的帮助。

最佳答案

首先,我认为您在第一行的CSV中有一个错误:

25.3, 12.4, 2.35, 4.89. 1, 2.35, 5.65, 7, 6.24, 5.52, M


我只是假设它应该是4.89、1,而不是4.89。 1。

其次,我建议您使用熊猫来读取CSV,然后执行以下操作:

import pandas as pd
data = pd.read_csv('prueba.csv', header=None, usecols=[i for i in range(11)])
# the usecols=[i for i in range(11)] will create a list of numbers for your columns
# that line will make a dataframe called data, which will contain your data.
l = [i for i in range(10)]
X_train = data[l]
y_train = data[10]


这是为scikit-learn中的任何机器学习算法准备数据的最简单方法。

09-05 13:34
查看更多