背景:我有一個SFrame,其中包含數字,指示狗圖像與其他圖像的接近程度。通常情況下,狗的形象應該是最接近另一個狗形象,但關鍵是要測試的評價方法在SFrame問題上使用apply()方法
我SFrame被稱爲dog_distances(1000行×4列):
dog-automobile dog-bird dog-cat dog-dog
41.9579761457 41.7538647304 36.4196077068 33.4773590373
46.0021331807 41.3382958925 38.8353268874 32.8458495684
42.9462290692 38.6157590853 36.9763410854 35.0397073189
41.6866060048 37.0892269954 34.5750072914 33.9010327697
39.2269664935 38.272288694 34.778824791 37.4849250909
40.5845117698 39.1462089236 35.1171578292 34.945165344
我想編寫一個函數該檢查,如果狗狗是最低的號碼和該功能應用到整個SFrame
訪問一個SFrame正常輸出一個字典... sframe_name [行#] [「COLUMN_NAME」]的行
添加.value s()到該行的結尾只是輸出列表中的值。 這使您可以應用像min()或max()這樣的數學方法,這對創建函數is_dog_correct非常有用。
因此我的功能是:
def is_dog_correct(row):
#checking if dog-dog is smallest value
if dog_distances[row]['dog-dog'] == min(dog_distances[row].values()):
return 1
else:
return 0
我的函數以行作爲輸入,並且如果狗狗該行的值等於該行中的最小值返回1。如果不是這樣,它將返回0。
正在運行is_dog_correct(0)個輸出1.我們期望這個,因爲正如您在上面看到的,第零行dog-dog中的值是該行中的最小數。
運行is_dog_correct(4)輸出0.我們期望這樣做,因爲第零行dog-dog中的值不是該行中的最小數字。
所以函數is_dog_correct在一行一行地完美工作!
當我運行對整個sFrame的建議:dog_distances.apply(is_dog_correct)
我得到一個屬性錯誤:
'SFrame' object has no attribute 'values'
請人解釋爲什麼函數工作逐行但不是在整個SFrame?
我想你的建議,但被賦予了KeyError異常:「dog_dog」 –
改變列名「dog_dog」到「狗犬」。請再試一次。 – pocari
我試過了,這次我執行並創建了一個名爲new_column的新列,但它填充了零。 我總結了專欄只是爲了看看是否有某個地方。總和爲零。 –