【问题标题】:Loading .csv files into python using sklearn使用 sklearn 将 .csv 文件加载到 python 中
【发布时间】:2015-02-23 13:15:07
【问题描述】:

我正在尝试将 .csv 文件导入 scikit-learn。我知道我可以使用 pandas,但不知道如何使用 我的数据集是这样的

0.9731  0.9695  0.9857  0.9909  0.9448  0.9367  0.9976  0.9672
0.9723  0.9767  0.9767  0.9656  0.9625  0.9589  0.9429  0.9319
0.9858  0.9886  0.9883  0.9784  0.9729  0.9683  0.9567  0.9428
0.9834  0.9838  0.9886  0.9782  0.9729  0.9629  0.9849  0.9456

我在 Windows 上工作。我是 sklearn 的新手,我能够轻松加载内置数据集并对其进行处理,但无法加载我自己的数据集。

【问题讨论】:

  • AFAIK,scikit-learn 与 pandas 对象,所以使用 pandas。

标签: python csv scikit-learn


【解决方案1】:

忽略io.StringIO 位,它只是将字符串作为文件缓冲区传递的一种方式,您可以轻松调用read_csv 并传递参数header=Nonesep='\s+'

In [3]:

import io
import pandas as pd
temp = '''0.9731  0.9695  0.9857  0.9909  0.9448  0.9367  0.9976  0.9672
0.9723  0.9767  0.9767  0.9656  0.9625  0.9589  0.9429  0.9319
0.9858  0.9886  0.9883  0.9784  0.9729  0.9683  0.9567  0.9428
0.9834  0.9838  0.9886  0.9782  0.9729  0.9629  0.9849  0.9456'''
df = pd.read_csv(io.StringIO(temp), header=None, sep='\s+')
df
Out[3]:
        0       1       2       3       4       5       6       7
0  0.9731  0.9695  0.9857  0.9909  0.9448  0.9367  0.9976  0.9672
1  0.9723  0.9767  0.9767  0.9656  0.9625  0.9589  0.9429  0.9319
2  0.9858  0.9886  0.9883  0.9784  0.9729  0.9683  0.9567  0.9428
3  0.9834  0.9838  0.9886  0.9782  0.9729  0.9629  0.9849  0.9456

我不知道这些值是什么,但您可以直接分配列:df.columns = [some_col_list] 或将列表传递给 read_csvnames=some_col_list

要将特定列传递给 sklearn,只需对它们进行索引,例如如果您的列名称为 col1....coln,那么您调用 clf.fit(df['col1'], df['coln']) 假设 col1 和 coln 分别是您的 X 和 y 列

【讨论】:

  • 非常感谢您的回答,我想补充一点,每当我尝试添加 csv 文件时,尽管它存在,但程序却说该文件不存在。我尝试了以下代码,但它抛出 IOError 请帮助 >>> import pandas as pd >>> from sklearn.ensemble import ExtraTreesClassifier >>> from sklearn.cross_validation import cross_val_score >>> train_df = pd.read_csv("attendees1.csv" ) 它显示“IOError: File Attendees1.csv 不存在”
  • 如果这回答了你的问题,那么你可以接受它,我的答案左上角会有一个空的勾号,你会发现很多示例代码展示了如何将 pandas 与 sklearn 一起使用跨度>
  • @Sarah 您必须解释一下,可能是您的文件路径格式错误,通常您应该使用正斜杠,例如'c:/data/myData.csv' 如果您使用反斜杠,则必须转义它们,例如'c:\\data\\myData.csv' 或传递原始字符串:r'c:\data\myData.csv'
  • 默认情况下,python 使用执行文件夹作为当前位置,因此您必须将完整路径传递给 csv,您可以使用以下命令打印当前工作目录:import sys print(sys.path) 将列出它的所有路径可以看到,很可能如果你的csv不在这些路径之一那么就找不到了,最好提供完整路径
  • 你能解释一下吗
【解决方案2】:

将 csv 作为 pandas DataFrame 加载后,您可能希望将数据转换为矩阵格式。

csv_matrix = df.as_matrix()

例如 sklearn.linear_model.LinearRegression 等多个模型需要矩阵格式的数据:http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-03
    • 2014-01-19
    • 1970-01-01
    • 2018-03-15
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多