看板 Python 關於我們 聯絡資訊
這是一份linearly separable的data (取自林軒田老師的ML課程) https://gist.github.com/anonymous/ca0ca0c4f61d14ae11a0 用下面的程式讀取後丟給perceptron 可以確實把data分開 ---------- import numpy as np def readfile(filename): with open(filename, 'r') as f: X = [] Y = [] for line in f: split = line.split() X.append(list(map(float, split[:-1]))) Y.append(int(split[-1])) return np.array(X), np.array(Y) train = readfile('train.dat') ---------- 但如果用pandas讀取 會變成不可分 perceptron會卡住 ---------- import pandas as pd pd_train = pd.read_csv('train.dat', header=None, delim_whitespace=True).as_matrix() pd_train = pd_train[:, :-1], pd_train[:, -1] ---------- 用np.array_equal後發現值確實不一樣 而np.allclose說兩邊很接近 請問如果要使用pandas讀取這種data 有什麼地方需要注意的呢? 謝謝 附上程式碼 https://gist.github.com/anonymous/f64eb5dcc2f313e1474f -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.231.44.143 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1447396241.A.5BB.html
Fungshui: pd.read_csv(..., dtype=np.float32) 浮點數的問題 11/13 22:53
加了dtype=np.float32就變成可分 np.array_equal比較還是False 另外用dtype=np.float64又變成不可分
yogi: 為什麼不用np.loadtxt()呢? 直接讀入存成numpy array 11/14 16:01
yogi: 懶得開檔案測試, 不過是否能把兩個方法讀入的資料array相減, 11/14 16:06
yogi: 看看哪些地方有差異, 再對照原始data file看看呢? 11/14 16:06
原來有np.loadtxt()可以用 用np.array_equal跟第一個方法比較的結果是一樣的 謝謝兩位 ※ 編輯: HANASE (36.228.185.23), 11/15/2015 03:27:09
Fungshui: 我也是覺得奇怪, pd的parser不知怎麼處理原字串, 在比較 11/15 10:14
Fungshui: 上有點誤差(雖然很微小), 但也剛好讓data變得不可分, 只 11/15 10:16
Fungshui: 能說這組data太精密了, 連浮點誤差都會變得無法收敛 11/15 10:18