首页 > 解决方案 > 如何将csv数据集的多列存储在java中的单个变量中,以便该变量可以用作ml模型的输入特征

问题描述

    I have done this in python. Here is my python code:
    Here X is the input variable in which I stored all the 
    input columns of csv file and y is the target variable.

          dataset=pandas.read_csv("newone.csv")
          features = [0,1,4,5,6,7]
          X =dataset.iloc[:,features]
          y =dataset.iloc[:,2]
    How can I do this in java? 

这是我读取 csv 文件的 java 代码,但我只能将 csv 的一列值存储在变量中。

    public static void main(String[] args) throws IOException {
            BufferedReader reader = Files.newBufferedReader(Paths.get("C:/Users/N/Desktop/newone.csv"));
            CSVParser csvParser = new CSVParser(reader,
                    CSVFormat.DEFAULT.withHeader("Enounter", "Relation", "Event", "Tag","Encounter_no", "Diagonosis", "User_Id", "Client_Id").withIgnoreHeaderCase().withTrim());
            for (CSVRecord csvRecord : csvParser) {
                encntr=csvRecord.get("Encounter");
      }
    }


    ----------

标签: javapython

解决方案


这完全取决于您的列之间的关系是什么样的。不可能以一般的方式回答这个问题,因为这会从数据集到数据集,甚至从算法到算法,但您可能想尝试以下几种方法:

  • 使用主成分分析来确定您想要的列元组中是否有任何变量可以省略,因为它们对行类变量的贡献很小。
  • 使用特征散列通过将相关属性捆绑在一起来减少数据集的维度(这不能作为一揽子解决方案 - 事实上,ML 中没有任何东西。在你承诺之前尝试它)。
  • 如果您要合并的列是数字的,您可能需要考虑一种算法以一种独特的方式或一种有意义的方式来连接它们。如果它们是分类的,那么稀疏的one-hot位向量可能会对您有所帮助。

推荐阅读